Python数据分析之绘制ppi-cpi剪刀差图形
作者:? 发布时间:2023-01-10 09:57:03
前言
ppi-cpi
剪刀差大家可能都听说过,通过这个指标可以了解当前的经济运行状况,小编为了学习 python 的图形绘制,通过爬虫的方式获取到 ppi 和 cpi 的历史数据,然后通过 matplotlib
绘图工具将 ppi
数据和 cpi
数据同框展示,最后通过颜色填充来表示其中的差额部分。对于新手来讲,会学习到 python
的基础知识、爬虫以及图形绘制的知识。
ppi 和 cpi 数据获取
既然是数据获取,就需要找一个权威的网站获取 cpi 和 ppi 的数据,这里小编采用东方财富网的数据,这里直接给出页面的访问地址:
# cpi数据访问地址
https://data.eastmoney.com/cjsj/cpi.html
cpi 的数据来源如下图所示,这里只获取月份数据和全国列中的同比增长即可。
ppi 数据如下所示,这里和 cpi 的数据获取内容类似,只获取月份数据和当月同比增长即可。
既然知道了数据来源,那么怎么获取数据呢,一看到这个表格,是不是要复制页面进 excel 在进行解析,no,这样的话不符合程序员的气质,我注意到了表格下方有分页,那么肯定是有通过 ajax 和后台进行通信的,通过观察小编发现了这两个接口,可以获取我们想要的数据:
# ppi 数据
https://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=GJZB&sty=ZGZB&p=1&ps=10&mkt=22
# cpi 数据
https://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=GJZB&sty=ZGZB&p=1&ps=10&mkt=19
aspx
后缀的接口看来还是 .net
呀,这里简单分析一下,p=1&ps=10
分页参数就不说了,大家都知道的,重要的是 mkt
参数,表示了数据的分类。其他的参数也不需要关心含义,保留就好。
使用 python
抓取数据,这里采用 requests
来获取数据:
def query_data_list(url):
"""
获取数据
"""
# 去除 https 校验提醒信息 verify=False 忽略对证书的验证
requests.packages.urllib3.disable_warnings()
data = requests.get(url, verify=False).text
# 通过浏览器控制台查看数据返回的结构,进行转换后存入一个 list
data = data.replace("([\"", "").replace("\"])", "")
arr_list = data.split("\",\"")
# 临时打印结果
print(arr_list)
return arr_list
最终获取到的数据如下图所示:
ppi-cpi 图形绘制
在绘制图形之前,需要先对数据进行处理:
1 数据需要进行加工,提取需要展示的数据,日期和同比数据,数据的格式需要转换。
2 cpi 和 ppi 从时间上来讲长度不一致,需要既然要展示,就需要放在同一段时间内进行比较。
3 cpi 和 ppi 数据已经有 20 多年了,从实际需要的角度出发,这里只展示 10 年的数据即可。
按照以上的观点,数据处理的代码如下图所示:
对于图形的绘制,有以下几点:
1 图形中需要展示 cpi 和 ppi 的数据情况,同时展示图例进行标识。
2 设置纵向和横向的数据参考线。
3 能够体现出数据的差值区间和范围,差值部分进行颜色填充并予以区分。 针对以上几点,绘制图形的代码如下图所示:
其余诸如时间过滤以及接口配置和引入的类库如下图所示:
最后,经过这些编码,得到了最终的 cpi-ppi 的剪刀差图形如下:
来源:https://juejin.cn/post/7081819665206345742
猜你喜欢
- 本文实例讲述了python连接远程ftp服务器并列出目录下文件的方法。分享给大家供大家参考。具体如下:这段python代码用到了pysftp
- 如何去读取一个没有表头的二维csv文件(如下图所示)?并以元组的形式表现数据:((1.0, 0.0, 3.0, 180.0), (2.0,
- 京东商品详细的请求处理,是先显示html,然后再ajax请求处理显示价格。1.可以运行js,并解析之后得到的html2.模拟js请求,得到价
- 业务需求我们需要一个微信小程序码,但是是需要提供给别人扫码的但是只有一个纯粹的小程序码是不好看的,所以需要推广的海报图片。再结合文字最终效果
- 方法1:1.安装requests_toolbelt依赖库#代码实现def upload(self): login_
- 一、为什么需要虚拟环境?这里的环境,指的就是 Python 代码的运行环境。它应该包含以下信息:Python 解释器,用哪个解释器来执行代码
- 总结类的定义很久以前,语言都是面向过程的,经过计算机科学家的探索,出现了面向对象。面向对象可以解释生活中很多东西。比如人,人就是个对象,有参
- 现在的高手真是越来越多,我刚发现一个版主兄竟然在不支持数据库的ISP免费主页上使用数据库,套用QQ聊天的一句话就是:Faint!明明人家IS
- 前言jieba 基于Python的中文分词工具,安装使用非常方便,直接pip即可,2/3都可以,功能强悍,十分推荐。中文分词(Chinese
- 这段时间在爬取了杭州某网站发布的二手房信息,在作图的时候发现在地图呈现上还是有欠缺,这里就把用到的贴出来,提升一下记忆。之前有接触用Base
- 今天一同事需要整理http://ics.cnvd.org.cn/工控漏洞库里面的信息,一看960多个要整理到什么时候才结束。所以我决定写个爬
- 一、命令提示符窗口安装卸载1、安装第一种,最常用的,初学者也是基本都是用的这个方法,直接在cmd里面安装。首先键盘按住win+r就会弹出来运
- 最近刚接触了公司的服务器,使用的是Windows 2003 server + IIS 6.0 服务器,在使用无组件上传文件时产生这个错误时:
- 1 获取轮廓OpenCV2获取轮廓主要是用cv2.findContoursimport numpy as npimport cv2im =
- 如下所示:import numpy as np arr = [1,2,3,4,5,6]#求均值arr_mean = np.mean(arr)
- 昨天ie8正式发布了,偶也去下载了一个,感觉很爽, 还在美的时候,突然发现很多网页都出问题,更可气的是自己的网站编辑器eWebEditor也
- 有在论坛上看到一帖,《请教查询出连续日期记录的方法》,截图如下:Insus.NET尝试写了程序并做了测试,可以得到预期的结果,SQL代码可参
- Keras的模型是用hdf5存储的,如果想要查看模型,keras提供了get_weights的函数可以查看:for layer in mod
- seek()方法在偏移设定该文件的当前位置。参数是可选的,默认为0,这意味着绝对的文件定位,它的值如果是1,这意味着寻求相对于当
- 我就废话不多说了,大家还是直接看代码吧~n = input("1st enter:")print(n)print(typ