Python數(shù)據(jù)分析之PMI數(shù)據(jù)圖形展示
前言
前文講述了ppi-cpi和m0-m1-m2的圖形繪制,在本文中繼續(xù)分享一個(gè)反映經(jīng)濟(jì)活動(dòng)景氣度的指標(biāo)PMI,在本文中還是采用爬蟲的方式獲取數(shù)據(jù),然后通過matplotlib繪圖工具將PMI逐年數(shù)據(jù)進(jìn)行展示。對(duì)于新手來(lái)講,會(huì)學(xué)習(xí)到python的基礎(chǔ)知識(shí)、爬蟲以及圖形繪制的知識(shí)。
PMI 數(shù)據(jù)獲取
在獲取數(shù)據(jù)之前,先講述一下PMI(采購(gòu)經(jīng)理人指數(shù)) 數(shù)據(jù)背后的含義: 大家都知道,制造業(yè)是一個(gè)國(guó)家的立國(guó)之本,那么PMI就是衡量一個(gè)國(guó)家制造業(yè)發(fā)展運(yùn)行情況的指標(biāo),通常情況下,比 50% 為分界線來(lái)經(jīng)濟(jì)強(qiáng)弱的分水嶺,大于 50% 則代表制造業(yè)處于擴(kuò)張,處理 40-50 則代表衰退,40 以下就是蕭條了。
既然是數(shù)據(jù)獲取,就需要找一個(gè)權(quán)威的網(wǎng)站獲取數(shù)據(jù),這里小編采用東方財(cái)富網(wǎng)的數(shù)據(jù),這里直接給出頁(yè)面的訪問地址:
# 貨幣供應(yīng)量數(shù)據(jù)訪問地址 https://data.eastmoney.com/cjsj/pmi.html
采購(gòu)經(jīng)理人指數(shù)的數(shù)據(jù)來(lái)源如下圖所示,這里只獲取制造業(yè)和非制造業(yè)的指數(shù)數(shù)據(jù)即可,同比增長(zhǎng)數(shù)據(jù)就不去獲取了。

既然知道了采購(gòu)經(jīng)理人指數(shù)的來(lái)源,怎么獲取數(shù)據(jù)呢,是不是要復(fù)制頁(yè)面進(jìn) excel 在進(jìn)行解析,如果這樣的做話,費(fèi)時(shí)費(fèi)力。我想諸位頁(yè)注意到了表格下方有分頁(yè),那么肯定是有通過 ajax 和后臺(tái)進(jìn)行通信的,通過觀察可以發(fā)現(xiàn)如下接口,數(shù)據(jù)交互的結(jié)果如下圖所示:

#采購(gòu)經(jīng)理人指數(shù) https://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=GJZB&sty=ZGZB&p=1&ps=200&mkt=21 # 這里也同樣貼了前文中貨幣供應(yīng)量接口、 ppi 和 cpi 的接口,會(huì)發(fā)現(xiàn)都是一樣的,只不過mkt的參數(shù)不一樣 # 貨幣供應(yīng)量接口 https://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=GJZB&sty=ZGZB&p=1&ps=200&mkt=11 # ppi 數(shù)據(jù)和cpi 數(shù)據(jù) https://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=GJZB&sty=ZGZB&p=1&ps=10&mkt=22 https://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=GJZB&sty=ZGZB&p=1&ps=10&mkt=19
至于數(shù)據(jù)的獲取,還是使用原理的方式進(jìn)行操作,使用python抓取數(shù)據(jù),這里采用requests來(lái)獲取數(shù)據(jù):
body = requests.get(req_url).text
body = body.replace("(", "").replace(")", "")
data_list = body.split("\",\"")
# 定義數(shù)據(jù)
date_list, pmi1_list, pmi2_list = [], [], []
for node in data_list:
node = node.replace("]", "").replace("[", "").replace("\"", "")
arr_list = node.split(",")
date = arr_list[0]
if date < "2010-01-01":
continue
# 時(shí)間數(shù)據(jù)
date_list.append(date)
# 數(shù)據(jù)操作存儲(chǔ)
pmi1_list.append(float(arr_list[1]))
pmi2_list.append(float(arr_list[3]))
print(node)最終獲取到的數(shù)據(jù)如下圖所示:

pmi 圖形繪制
在繪制圖形之前,需要先對(duì)數(shù)據(jù)進(jìn)行處理:
- 1 數(shù)據(jù)需要進(jìn)行加工,提取需要展示的數(shù)據(jù),而后數(shù)據(jù)的格式需要轉(zhuǎn)換。
- 2 在數(shù)據(jù)處理時(shí),還是按照制造業(yè)和非制造業(yè)、時(shí)間的列表來(lái)獲取數(shù)據(jù)。
- 3 依舊使用 np.asarray 創(chuàng)建數(shù)據(jù),進(jìn)行圖形繪制的準(zhǔn)備工作。
按照以上的觀點(diǎn),數(shù)據(jù)處理的代碼如下圖所示:

對(duì)于圖形的繪制,有以下幾點(diǎn):
- 1 圖形中需要展示制造業(yè)和非制造業(yè)的數(shù)據(jù)情況,同時(shí)展示圖例進(jìn)行標(biāo)識(shí)。
- 2 設(shè)置指標(biāo)為 50 和 40 水平線,用于設(shè)置標(biāo)準(zhǔn)對(duì)比線型。
最后,經(jīng)過這些編碼,得到最終的制造業(yè)和非制造業(yè)指數(shù)對(duì)比圖形如下:

總結(jié)
文章介紹了簡(jiǎn)單的python爬蟲,并使用numpy進(jìn)行了簡(jiǎn)單的數(shù)據(jù)處理,最終使用matplotlib進(jìn)行圖形繪制,實(shí)現(xiàn)了直觀的方式展示制造業(yè)和非制造業(yè)指數(shù)圖形。使用接口的方式獲取數(shù)據(jù)可以隨時(shí)獲取數(shù)據(jù)更新重新繪制圖形,省去了數(shù)據(jù)重新抓取的步驟。
到此這篇關(guān)于Python數(shù)據(jù)分析之PMI數(shù)據(jù)圖形展示的文章就介紹到這了,更多相關(guān)Python PMI 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python?泛型函數(shù)--singledispatch的使用解讀
這篇文章主要介紹了python?泛型函數(shù)--singledispatch的使用解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
深入理解NumPy簡(jiǎn)明教程---數(shù)組3(組合)
本篇文章對(duì)NumPy數(shù)組進(jìn)行較深入的探討。首先介紹自定義類型的數(shù)組,接著數(shù)組的組合,最后介紹數(shù)組復(fù)制方面的問題,有興趣的可以了解一下。2016-12-12
Python3讀取UTF-8文件及統(tǒng)計(jì)文件行數(shù)的方法
這篇文章主要介紹了Python3讀取UTF-8文件及統(tǒng)計(jì)文件行數(shù)的方法,涉及Python讀取指定編碼文件的相關(guān)技巧,需要的朋友可以參考下2015-05-05
Python實(shí)現(xiàn)arctan換算角度的示例
本文主要介紹了Python實(shí)現(xiàn)arctan換算角度的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
利用django model save方法對(duì)未更改的字段依然進(jìn)行了保存
這篇文章主要介紹了利用django model save方法對(duì)未更改的字段依然進(jìn)行了保存,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-03-03
python如何獲取列表中每個(gè)元素的下標(biāo)位置
這篇文章主要介紹了python如何獲取列表中每個(gè)元素的下標(biāo)位置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07

