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

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

#采購經(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 的接口,會發(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來獲取數(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ù)據(jù)
date_list.append(date)
# 數(shù)據(jù)操作存儲
pmi1_list.append(float(arr_list[1]))
pmi2_list.append(float(arr_list[3]))
print(node)最終獲取到的數(shù)據(jù)如下圖所示:

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

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

總結(jié)
文章介紹了簡單的python爬蟲,并使用numpy進(jìn)行了簡單的數(shù)據(jù)處理,最終使用matplotlib進(jìn)行圖形繪制,實(shí)現(xiàn)了直觀的方式展示制造業(yè)和非制造業(yè)指數(shù)圖形。使用接口的方式獲取數(shù)據(jù)可以隨時獲取數(shù)據(jù)更新重新繪制圖形,省去了數(shù)據(jù)重新抓取的步驟。
到此這篇關(guān)于Python數(shù)據(jù)分析之PMI數(shù)據(jù)圖形展示的文章就介紹到這了,更多相關(guān)Python PMI 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python?泛型函數(shù)--singledispatch的使用解讀
這篇文章主要介紹了python?泛型函數(shù)--singledispatch的使用解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09
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ì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
利用django model save方法對未更改的字段依然進(jìn)行了保存
這篇文章主要介紹了利用django model save方法對未更改的字段依然進(jìn)行了保存,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03

