Python抓取数据到可视化全流程的实现过程
作者:你隔壁的小王 发布时间:2021-06-14 02:03:28
标签:Python数据,可视化
1、爬取目标网站:业绩预告_数据中心_同花顺财经
(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
爬取成功,检查数据:
2、获取序号、股票代码、等你所需要的信息
index = re.findall('<td>(.*)</td>',result)
index
148条数据符合预期,继续查看股票代码(这里使用正则表达式查询,可以看这篇里边对正则表达式进行了讲解:正则表达式+常用示例)
stock_code = re.findall('class="stockCode">(.*)</a>',result)
print(stock_code)
3、组成DataFrame
data = pd.DataFrame({
"stock_code":stock_code,
"stock_name":stock_name,
"performance":performance,
"summary":summary
}, index=index)
data
组合成功
4、处理数据
使用正则筛选出净利润和增长幅度
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()
来源:https://blog.csdn.net/weixin_43212535/article/details/122299121


猜你喜欢
- 上一篇已经介绍了celery的基本知识,本篇以一个小项目为例,详细说明django框架如何集成celery进行开发。本系列文章的开发环境:w
- Harris 角点检测算法1. 角点角点是水平方向、垂直方向变化都很大的像素。角点检测算法的基本思想:
- Python内置函数isdigit()使用今天简单介绍一下Python中的isdigit()函数的用法:判断单个字符是否为数字判断字符串中是
- 本文实例讲述了Python过滤列表用法。分享给大家供大家参考,具体如下:过滤列表[mapping-expression for elemen
- 之前使用beego的http库的时候,有的情况需要下载文件。beego是能实现,但就是有点问题:不支持回调,没法显示下载速度,这在日常开发中
- 本文实例为大家分享了PHP实现统计代码行数小工具,供大家参考,具体内容如下为了方面统计编程代码行数,做了一个小工具。自动统计指定目录以及目录
- 本文实例讲述了Python基础之字典常见操作。分享给大家供大家参考,具体如下:Python字典Python 中的字典是Python中一个键值
- 引言 咱们公司从事的是信息安全涉密应用的一些项目研发一共有分为三步,相比较于一般
- 设置Table的细边框通常有这么几种方式:1、设置边框的BORDER=0 、cellspacing=1,设置Table的背景色为所要的边框色
- 废话不多说了,直接上代码吧:#Copyright (c)2017, 东北大学软件学院学生# All rightsreserved#文件名称:
- 本文实例讲述了Python实现读取Properties配置文件的方法。分享给大家供大家参考,具体如下:JAVA本身提供了对于Properti
- sql中timestamp和datetime的转换互相转换说明:将datetime转换为timestamp格式,使用UNIX_TIMESTA
- 本文实例讲述了Python3.5 Pandas模块之Series用法。分享给大家供大家参考,具体如下:1、Pandas模块引入与基本数据结构
- 如下所示:import pandas as pd#如果需要的话,需将df中的date列转为datetimedf.date = pd.to_d
- 由于工作中涉及到生日编辑资料编辑,然后自己改了一下代码:<html><head> <meta charset=
- 一、身份验证配置在sqlserver服务端电脑打开SqlServer Managerment Studio管理工具,首先通过Windows身
- 问题:开发中常使用Navicat查询数据库,并修改数据库中的值。今天发现查询结果为只读,不能修改。一般连表查不能修改我是知道的,但是单表查居
- 数据准备import numpy as npimport pandas as pdimport jsonimport psycopg2dat
- 前言MySQL 8.0终于支持降序索引了。其实,从语法上,MySQL 4就支持了,但正如官方文档所言,"they are pars
- 人脸检测方法有许多,比如opencv自带的人脸Haar特征分类器和dlib人脸检测方法等。对于opencv的人脸检测方法,有点是简单,快速;