Python數(shù)據(jù)分析之繪制ppi-cpi剪刀差圖形
前言
ppi-cpi
剪刀差大家可能都聽(tīng)說(shuō)過(guò),通過(guò)這個(gè)指標(biāo)可以了解當(dāng)前的經(jīng)濟(jì)運(yùn)行狀況,小編為了學(xué)習(xí) python 的圖形繪制,通過(guò)爬蟲(chóng)的方式獲取到 ppi 和 cpi 的歷史數(shù)據(jù),然后通過(guò) matplotlib
繪圖工具將 ppi
數(shù)據(jù)和 cpi
數(shù)據(jù)同框展示,最后通過(guò)顏色填充來(lái)表示其中的差額部分。對(duì)于新手來(lái)講,會(huì)學(xué)習(xí)到 python
的基礎(chǔ)知識(shí)、爬蟲(chóng)以及圖形繪制的知識(shí)。
ppi 和 cpi 數(shù)據(jù)獲取
既然是數(shù)據(jù)獲取,就需要找一個(gè)權(quán)威的網(wǎng)站獲取 cpi 和 ppi 的數(shù)據(jù),這里小編采用東方財(cái)富網(wǎng)的數(shù)據(jù),這里直接給出頁(yè)面的訪問(wèn)地址:
# cpi數(shù)據(jù)訪問(wèn)地址 https://data.eastmoney.com/cjsj/cpi.html
cpi 的數(shù)據(jù)來(lái)源如下圖所示,這里只獲取月份數(shù)據(jù)和全國(guó)列中的同比增長(zhǎng)即可。
ppi 數(shù)據(jù)如下所示,這里和 cpi 的數(shù)據(jù)獲取內(nèi)容類似,只獲取月份數(shù)據(jù)和當(dāng)月同比增長(zhǎng)即可。
既然知道了數(shù)據(jù)來(lái)源,那么怎么獲取數(shù)據(jù)呢,一看到這個(gè)表格,是不是要復(fù)制頁(yè)面進(jìn) excel 在進(jìn)行解析,no,這樣的話不符合程序員的氣質(zhì),我注意到了表格下方有分頁(yè),那么肯定是有通過(guò) ajax 和后臺(tái)進(jìn)行通信的,通過(guò)觀察小編發(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
后綴的接口看來(lái)還是 .net
呀,這里簡(jiǎn)單分析一下,p=1&ps=10
分頁(yè)參數(shù)就不說(shuō)了,大家都知道的,重要的是 mkt
參數(shù),表示了數(shù)據(jù)的分類。其他的參數(shù)也不需要關(guān)心含義,保留就好。
使用 python
抓取數(shù)據(jù),這里采用 requests
來(lái)獲取數(shù)據(jù):
def query_data_list(url): """ 獲取數(shù)據(jù) """ # 去除 https 校驗(yàn)提醒信息 verify=False 忽略對(duì)證書(shū)的驗(yàn)證 requests.packages.urllib3.disable_warnings() data = requests.get(url, verify=False).text # 通過(guò)瀏覽器控制臺(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í)間上來(lái)講長(zhǎng)度不一致,需要既然要展示,就需要放在同一段時(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í)間過(guò)濾以及接口配置和引入的類庫(kù)如下圖所示:
最后,經(jīng)過(guò)這些編碼,得到了最終的 cpi-ppi 的剪刀差圖形如下:
總結(jié)
文章介紹了簡(jiǎn)單的 python
爬蟲(chóng),并使用 numpy
進(jìn)行了簡(jiǎ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)文章
簡(jiǎn)單的抓取淘寶圖片的Python爬蟲(chóng)
這篇文章主要介紹了簡(jiǎn)單的抓取淘寶圖片的Python爬蟲(chóng),方法比較簡(jiǎn)單,推薦給小伙伴們參考下。2014-12-12Python函數(shù)基礎(chǔ)(定義函數(shù)、函數(shù)參數(shù)、匿名函數(shù))
這篇文章介紹了Python函數(shù)的基礎(chǔ)用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05Python GUI教程之在PyQt5中使用數(shù)據(jù)庫(kù)的方法
Qt平臺(tái)對(duì)SQL編程有著良好的支持,PyQt5也一并繼承了過(guò)來(lái),這篇文章主要介紹了Python GUI教程之在PyQt5中使用數(shù)據(jù)庫(kù)的方法,需要的朋友可以參考下2021-09-09pandas 缺失值與空值處理的實(shí)現(xiàn)方法
這篇文章主要介紹了pandas 缺失值與空值處理的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10用Python從零實(shí)現(xiàn)貝葉斯分類器的機(jī)器學(xué)習(xí)的教程
這篇文章主要介紹了用Python從零實(shí)現(xiàn)貝葉斯分類器的教程,樸素貝葉斯算法屬于機(jī)器學(xué)習(xí)中的基礎(chǔ)內(nèi)容、實(shí)用而高效,本文詳細(xì)展示了用Python語(yǔ)言實(shí)現(xiàn)的步驟,需要的朋友可以參考下2015-03-03python實(shí)現(xiàn)簡(jiǎn)易聊天對(duì)話框
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)易聊天對(duì)話框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Python Mysql數(shù)據(jù)庫(kù)操作 Perl操作Mysql數(shù)據(jù)庫(kù)
python對(duì)mysql數(shù)據(jù)庫(kù)的一些操作實(shí)現(xiàn)代碼2009-01-01