您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何實現Python抓取數據到可視化全流程的實現,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
(ps:headers不會設置的可以看這篇:Python 用requests.get獲取網頁內容為空 ’ ’)
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
爬取成功,檢查數據:
index = re.findall('<td>(.*)</td>',result) index
148條數據符合預期,繼續查看股票代碼(這里使用正則表達式查詢,可以看這篇里邊對正則表達式進行了講解:正則表達式+常用示例)
stock_code = re.findall('class="stockCode">(.*)</a>',result) print(stock_code)
data = pd.DataFrame({ "stock_code":stock_code, "stock_name":stock_name, "performance":performance, "summary":summary }, index=index) data
組合成功
使用正則篩選出凈利潤和增長幅度
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 ['業績預降', '業績大幅上升', '業績大幅下降', '業績預盈', '業績預增', '預計扭虧']: return 1 if x in ['預計減虧', '不確定','業績預虧', '預計增虧', '預計續虧']: 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
通過繪制餅圖實現可視化:
plt.pie([yingli,kuisun], labels=['盈利','虧損'], autopct='%.2f%%') font={ "family":"kaiti", "size":"15" } plt.rc("font",**font) plt.title('148家公司盈利和虧損情況占比') plt.show()
上述內容就是如何實現Python抓取數據到可視化全流程的實現,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。