用python找出货币供应量M0最低、最高出现的时间

      今天通过下载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亿元。

你可能感兴趣的:(用python找出货币供应量M0最低、最高出现的时间)