今天通过下载baostock上的货币供应量数据,想分析过去几年内货币供应量的峰值和最低值,以及出现的时间。因为baostock上的货币供应量的数据只有2012年以后的,所以只能知道2012-2018年的数据。
baostock是个开源的python数据包,可以下载股市基本面,交易数据,以及宏观数据等。见官网:www.baostock.com
下面是代码:
首先需要下载安装baostoc,使用pip或者从官网下载安装文件都可以。见官网 www.baostock.com.
import baostock as bs
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as matfont
import matplotlib
import datetime
defget_money_supply(startDate,endDate):
#获取货币供应量
# 登陆系统
lg = bs.login()
# 显示登陆返回信息
print('login
respond error_code:'+lg.error_code)
print('loginrespond error_msg:'+lg.error_msg)
# 获取货币供应量
rs =bs.query_money_supply_data_month(start_date = startDate, end_date = endDate)
print('query_money_supply_data_month
respond error_code:'+rs.error_code)
print('query_money_supply_data_monthrespond error_msg:'+rs.error_msg)
# 打印结果集
data_list = []
while (rs.error_code == '0') &
rs.next():
# 获取一条记录,将记录合并在一起
data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list,columns=rs.fields)
# 登出系统
bs.logout()
returnresult
def find_max_min_money_supply():
#根据历史货币供应量进行排序,寻找历史上货币M0最大供应量和最小供应量
money_suppy_result = get_money_supply("2012-01","2018-08")
#年序列
money_supply_yearlist =money_suppy_result.loc[:,'statYear'].astype('int')
#月序列
money_supply_monthlist =money_suppy_result.loc[:,'statMonth'].astype('int')
#M0序列
money_supply_data =money_suppy_result.loc[:,'m0Month'].astype('float')
print(len(money_supply_yearlist),len(money_supply_data))
sortlist = []
for year,month,moneysupply inzip(money_supply_yearlist,money_supply_monthlist,money_supply_data):
sortlist.append([year,month,moneysupply])
sortedlist_asc = sorted(sortlist,key =lambda one:one[2],reverse = False)
sortedlist_desc = sorted(sortlist,key =lambda one:one[2],reverse = True)
#最小货币供应量
print(sortedlist_asc[0])
#最大货币供应量
print(sortedlist_desc[0])
if __name__ == '__main__':
find_max_min_money_supply()
输出结果:
login respond error_code:0
loginrespond error_msg:success
query_money_supply_data_month
respond error_code:0
query_money_supply_data_monthrespond error_msg:success
logout success!
79 79
[2012,5, 49039.72]
[2017, 1, 86598.61]
可见:
M0供应量2012年5月是低点,供应量为49039.72亿元,2017年1月是高点,供应量为86598.61亿元。