Python數(shù)據(jù)分析之繪制ppi-cpi剪刀差圖形
前言
ppi-cpi 剪刀差大家可能都聽說過,通過這個(gè)指標(biāo)可以了解當(dāng)前的經(jīng)濟(jì)運(yùn)行狀況,小編為了學(xué)習(xí) python 的圖形繪制,通過爬蟲的方式獲取到 ppi 和 cpi 的歷史數(shù)據(jù),然后通過 matplotlib 繪圖工具將 ppi 數(shù)據(jù)和 cpi 數(shù)據(jù)同框展示,最后通過顏色填充來表示其中的差額部分。對(duì)于新手來講,會(huì)學(xué)習(xí)到 python 的基礎(chǔ)知識(shí)、爬蟲以及圖形繪制的知識(shí)。
ppi 和 cpi 數(shù)據(jù)獲取
既然是數(shù)據(jù)獲取,就需要找一個(gè)權(quán)威的網(wǎng)站獲取 cpi 和 ppi 的數(shù)據(jù),這里小編采用東方財(cái)富網(wǎng)的數(shù)據(jù),這里直接給出頁面的訪問地址:
# cpi數(shù)據(jù)訪問地址 https://data.eastmoney.com/cjsj/cpi.html
cpi 的數(shù)據(jù)來源如下圖所示,這里只獲取月份數(shù)據(jù)和全國列中的同比增長即可。

ppi 數(shù)據(jù)如下所示,這里和 cpi 的數(shù)據(jù)獲取內(nèi)容類似,只獲取月份數(shù)據(jù)和當(dāng)月同比增長即可。

既然知道了數(shù)據(jù)來源,那么怎么獲取數(shù)據(jù)呢,一看到這個(gè)表格,是不是要復(fù)制頁面進(jìn) excel 在進(jìn)行解析,no,這樣的話不符合程序員的氣質(zhì),我注意到了表格下方有分頁,那么肯定是有通過 ajax 和后臺(tái)進(jìn)行通信的,通過觀察小編發(fā)現(xiàn)了這兩個(gè)接口,可以獲取我們想要的數(shù)據(jù):
# ppi 數(shù)據(jù) https://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=GJZB&sty=ZGZB&p=1&ps=10&mkt=22 # cpi 數(shù)據(jù) https://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=GJZB&sty=ZGZB&p=1&ps=10&mkt=19
aspx 后綴的接口看來還是 .net 呀,這里簡單分析一下,p=1&ps=10 分頁參數(shù)就不說了,大家都知道的,重要的是 mkt 參數(shù),表示了數(shù)據(jù)的分類。其他的參數(shù)也不需要關(guān)心含義,保留就好。
使用 python 抓取數(shù)據(jù),這里采用 requests 來獲取數(shù)據(jù):
def query_data_list(url):
"""
獲取數(shù)據(jù)
"""
# 去除 https 校驗(yàn)提醒信息 verify=False 忽略對(duì)證書的驗(yàn)證
requests.packages.urllib3.disable_warnings()
data = requests.get(url, verify=False).text
# 通過瀏覽器控制臺(tái)查看數(shù)據(jù)返回的結(jié)構(gòu),進(jìn)行轉(zhuǎn)換后存入一個(gè) list
data = data.replace("([\"", "").replace("\"])", "")
arr_list = data.split("\",\"")
# 臨時(shí)打印結(jié)果
print(arr_list)
return arr_list最終獲取到的數(shù)據(jù)如下圖所示:

ppi-cpi 圖形繪制
在繪制圖形之前,需要先對(duì)數(shù)據(jù)進(jìn)行處理:
- 1 數(shù)據(jù)需要進(jìn)行加工,提取需要展示的數(shù)據(jù),日期和同比數(shù)據(jù),數(shù)據(jù)的格式需要轉(zhuǎn)換。
- 2 cpi 和 ppi 從時(shí)間上來講長度不一致,需要既然要展示,就需要放在同一段時(shí)間內(nèi)進(jìn)行比較。
- 3 cpi 和 ppi 數(shù)據(jù)已經(jīng)有 20 多年了,從實(shí)際需要的角度出發(fā),這里只展示 10 年的數(shù)據(jù)即可。
按照以上的觀點(diǎn),數(shù)據(jù)處理的代碼如下圖所示:

對(duì)于圖形的繪制,有以下幾點(diǎn):
- 1 圖形中需要展示 cpi 和 ppi 的數(shù)據(jù)情況,同時(shí)展示圖例進(jìn)行標(biāo)識(shí)。
- 2 設(shè)置縱向和橫向的數(shù)據(jù)參考線。
- 3 能夠體現(xiàn)出數(shù)據(jù)的差值區(qū)間和范圍,差值部分進(jìn)行顏色填充并予以區(qū)分。 針對(duì)以上幾點(diǎn),繪制圖形的代碼如下圖所示:

其余諸如時(shí)間過濾以及接口配置和引入的類庫如下圖所示:

最后,經(jīng)過這些編碼,得到了最終的 cpi-ppi 的剪刀差圖形如下:

總結(jié)
文章介紹了簡單的 python 爬蟲,并使用 numpy 進(jìn)行了簡單的數(shù)據(jù)處理,最終使用 matplotlib 進(jìn)行圖形繪制,實(shí)現(xiàn)了直觀的方式展示 cpi-ppi 的剪刀差圖形。使用接口的方式獲取數(shù)據(jù)能夠隨時(shí)隨地的跟據(jù)數(shù)據(jù)的更新重新繪制圖形,省去了數(shù)據(jù)重新抓取的步驟。
到此這篇關(guān)于Python數(shù)據(jù)分析之繪制ppi-cpi剪刀差圖形的文章就介紹到這了,更多相關(guān)Python繪制ppi-cpi圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?Struct庫之pack和unpack舉例詳解
這篇文章主要給大家介紹了關(guān)于Python?Struct庫之pack和unpack的相關(guān)資料,pack和unpack在處理二進(jìn)制流中比較常用的封包、解包格式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
Python?Math數(shù)學(xué)函數(shù)常數(shù)冪和對(duì)數(shù)基礎(chǔ)應(yīng)用實(shí)例
Python中的math模塊是數(shù)學(xué)運(yùn)算的重要工具,提供了豐富的數(shù)學(xué)函數(shù)和常數(shù),本文將深入探討math模塊的功能和用法,使您能夠更好地利用Python進(jìn)行數(shù)學(xué)運(yùn)算2023-12-12
python報(bào)錯(cuò)TypeError: ‘NoneType‘ object is not subscriptable的解決
這篇文章主要給大家介紹了關(guān)于python報(bào)錯(cuò)TypeError: ‘NoneType‘ object is not subscriptable的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Python實(shí)現(xiàn)雙軸組合圖表柱狀圖和折線圖的具體流程
這篇文章主要介紹了Python雙軸組合圖表柱狀圖+折線圖,Python繪制雙軸組合的關(guān)鍵在plt庫的twinx()函數(shù),具體實(shí)例代碼跟隨小編一起看看吧2021-08-08
python快速排序的實(shí)現(xiàn)及運(yùn)行時(shí)間比較
這篇文章主要介紹了python快速排序的實(shí)現(xiàn)及運(yùn)行時(shí)間比較,本文通過兩種方法給大家介紹,大家可以根據(jù)自己需要選擇適合自己的方法,對(duì)python實(shí)現(xiàn)快速排序相關(guān)知識(shí)感興趣的朋友一起看看吧2019-11-11

