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("流通中现金","流通中现金增长")

 

posted @ 2020-11-02 09:38  姜近九  阅读(455)  评论(0)    收藏  举报