1997至2020年货币情况
数据来源是中国经济网,首先使用爬虫将数据爬取下来并存储到csv文件中,方便每次调用;然后用matplotlib画出货币、现金每个月的流通量和增长情况
从图一可以看到,1997年至2020年货币流通量是不断上升的,增长速率在2010年1月达到了最高峰;而在2012年至2015年7月这段时间,货币增长速率是处于相对平缓的状态;从2016年7月迎来第二次极值后,到2020年9月,这段时间货币的增长速率是比较缓慢的;
从图二可以看出,1997年至2020年现金的流通情况呈现出明显的时间序列特征;在每年的1-2月份会出现一个峰值(可能因为春节原因需要现金),在7-8月份的时候则会出现一个低谷;并且逐年走高;(可以利用这些特点套用时序模型做一个简单预测.)但观察增长率的时序图可以发现,以2015年为分界线,2015年之前的流通中现金每月增长情况波动较大,均值也较高;但从2015年往后看,现金增长速率明显放缓,这可能和经济情况和流动性有一定关联?


#爬虫代码 #-*-coding:utf-8-*- from urllib.parse import urlencode from bs4 import BeautifulSoup import urllib.request import requests import pandas as pd base_url="http://data.ce.cn/servlet/macrography/MacrographyAction?function=Supplymoney" keylist=["货币","存款","流通","月份"] list1,monthlist=[],[] def get_page(page): params={ "curPage":page, "numPerPage":"15", "rand":"1603529108334", } url=base_url+"&"+urlencode(params) req=urllib.request.Request(url) rsp=urllib.request.urlopen(req) html=rsp.read().decode("utf-8") html=BeautifulSoup(html,"html.parser") for link in html.find_all("td"): info=link.get_text().strip() if all(term not in info for term in keylist): list1.append(info) if "月份"and"年" in info: monthlist.append(info) def trans(v1,v2): df=pd.DataFrame(v1) df.insert(0,column="月份",value=v2) df.rename( columns={ 0:'货币和准货币',1:'货币和准货币增长', 2:'货币',3:'货币增长', 4:'流通中现金',5:'流通中现金增长', 6:'活期存款',7:'活期存款增长', }, inplace=True) df=df[::-1] return df if __name__=="__main__": for each in range(1,20): get_page(each) list1=[list1[i:i + 8] for i in range(0, len(list1), 8)] df1=trans(list1,monthlist) df1.to_csv("E:/****/currency_finance.csv",encoding='utf_8_sig')
#画图代码 #-*-coding:utf-8-*- import matplotlib.pyplot as plt import numpy as np from pylab import mpl import pandas as pd mpl.rcParams["font.sans-serif"]=["SimHei"] mpl.rcParams['axes.unicode_minus'] = False df1=pd.read_csv("E:/****/currency_finance.csv") def currency_money(v1,v2): fig,ax=plt.subplots(figsize=(16,8),dpi=80,sharex=True) plt.xticks([]) plt.yticks([]) fig.suptitle("1997至2020年{v1}和{v2}每月情况".format(v1=v1,v2=v2)) _x=range(df1.shape[0]) ax1=fig.add_subplot(211) ax1.plot(_x,df1[v1],label=v1,color="blue") ax1.grid(linestyle=":",color="dimgray") ax1.set_xticks(_x[::6]) ax1.set_xticklabels([][::6]) plt.legend(loc="upper left") ax1.title.set_text("1997至2020每月{v1}情况".format(v1=v1)) ax2=fig.add_subplot(212) ax2.plot(_x,df1[v2],label=v2,color="orange") ax2.grid(linestyle=":",color="dimgray") ax2.axhline(0, linestyle='--', color='k') ax2.set_xticks(_x[::6]) ax2.set_xticklabels(df1["月份"][::6]) plt.xticks(rotation=80) plt.legend(loc="upper left") ax2.set_title("1997至2020每月{v2}情况".format(v2=v2)) plt.savefig("E:/****/1997至2020年{v1}和{v2}每月情况.png".format(v1=v1,v2=v2)) plt.show() if __name__=="__main__": currency_money("货币","货币增长") currency_money("流通中现金","流通中现金增长")
浙公网安备 33010602011771号