溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現(xiàn)Python抓取數(shù)據(jù)到可視化全流程的實現(xiàn)

發(fā)布時間:2022-01-10 13:28:01 來源:億速云 閱讀:187 作者:柒染 欄目:開發(fā)技術(shù)

本篇文章為大家展示了如何實現(xiàn)Python抓取數(shù)據(jù)到可視化全流程的實現(xiàn),內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

1、爬取目標網(wǎng)站:業(yè)績預告_數(shù)據(jù)中心_同花順財經(jīng)

(ps:headers不會設(shè)置的可以看這篇:Python 用requests.get獲取網(wǎng)頁內(nèi)容為空 ’ ’)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import re
import requests##把各種可能用到的包提前導好
headers={
   'Accept': 'text/html,*/*; q=0.01',
    'hexin-v': 'A2C11EVPFXAhNKl0PUpM6xp8MWU2aUUO5k-YOdpwLngMrQpTgnkUwzZdaMMp',
    'Referer': 'http://data.10jqka.com.cn/financial/yjyg/',
   'Cookie':'對應填寫',
    'User-Agent':'對應填寫'
}
url="http://data.10jqka.com.cn/ajax/yjyg/date/2021-12-31/board/ALL/field/enddate/order/desc/page/{}/ajax/1/free/1/"
result = ''
 
for i in range(1,5): 
    result += requests.get(url.format(i), headers=headers).text
result

 爬取成功,檢查數(shù)據(jù):

如何實現(xiàn)Python抓取數(shù)據(jù)到可視化全流程的實現(xiàn)

2、獲取序號、股票代碼、等你所需要的信息

index = re.findall('<td>(.*)</td>',result)
index

如何實現(xiàn)Python抓取數(shù)據(jù)到可視化全流程的實現(xiàn)

 148條數(shù)據(jù)符合預期,繼續(xù)查看股票代碼(這里使用正則表達式查詢,可以看這篇里邊對正則表達式進行了講解:正則表達式+常用示例)

stock_code = re.findall('class="stockCode">(.*)</a>',result)
print(stock_code)

如何實現(xiàn)Python抓取數(shù)據(jù)到可視化全流程的實現(xiàn)

3、組成DataFrame

data = pd.DataFrame({
    "stock_code":stock_code,
    "stock_name":stock_name,
    "performance":performance,
    "summary":summary
}, index=index)
 
data

如何實現(xiàn)Python抓取數(shù)據(jù)到可視化全流程的實現(xiàn)

 組合成功

4、處理數(shù)據(jù)

使用正則篩選出凈利潤和增長幅度

data['start_profit'] = data['summary'].str.extract('(-{0,1}\d{0,10}\.{0,1}\d{0,10})萬元')
data['end_profit'] = data['summary'].str.extract('至(-{0,1}\d{0,10}\.{0,1}\d{0,10})萬元')
data["start_range"] = data['summary'].str.extract('(\d{0,5}\.{0,1}\d{0,5})%') + "%"
data["end_range"] = data['summary'].str.extract('至(\d{0,5}\.{0,1}\d{0,5})%') + "%"
data.head()

判斷盈利情況:

 def if_profit(x):
    if x in ['業(yè)績預降', '業(yè)績大幅上升', '業(yè)績大幅下降', '業(yè)績預盈', '業(yè)績預增', '預計扭虧']:
        return 1
    if x in ['預計減虧', '不確定','業(yè)績預虧', '預計增虧', '預計續(xù)虧']:
        return -1
    return 0
data['is_profit'] = data.apply(lambda x : if_profit(x["performance"]),axis=1)
data.head()
##計算盈利多少
yingli = (data['is_profit'] == 1).sum()
yingli
##虧損多少
kuisun = (data['is_profit'] == -1).sum()
kuisun

通過繪制餅圖實現(xiàn)可視化:

plt.pie([yingli,kuisun], labels=['盈利','虧損'], autopct='%.2f%%')
font={
    "family":"kaiti",
    "size":"15"
}
plt.rc("font",**font)
plt.title('148家公司盈利和虧損情況占比')
plt.show()

如何實現(xiàn)Python抓取數(shù)據(jù)到可視化全流程的實現(xiàn)

上述內(nèi)容就是如何實現(xiàn)Python抓取數(shù)據(jù)到可視化全流程的實現(xiàn),你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI