本篇文章为大家展示了如何实现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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。