使用python画出近30年存款率变化图

        之前写过一个获取历史贷款利率,并且把近30年以来的贷款利润用折线图画了出来,除了贷款利率,市场也会关注存款利率, 存款利率越高,人们越有动力讲钱存放在银行获取利息,因为银行机会是没有风险的,相反,如果存款利益太低,甚至低于通货膨胀率,那人们肯定选择把钱取出来消费或者是进行投资。所以存款利率,对于证券市场尤其时债券市场是非常重要的数据。

和之前一样,获取历史存款利率数据并且画成折线图。数据来自一个python开源接口baostock。需要在python35以上的环境下运行。

 

import baostock as bs

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.font_manager as matfont

 

 

def get_deposit_rate():

    """get the deposit history data from baostock, need login at first"""

    # 登陆系统

    lg = bs.login()

    # 显示登陆返回信息

    print('login respond error_code:'+lg.error_code)

    print('login respond  error_msg:'+lg.error_msg)

   

    # 获取存款利率

    rs = bs.query_deposit_rate_data(start_date="1970-01-01", end_date="2018-08-01")

    print('query_deposit_rate_data respond error_code:'+rs.error_code)

    print('query_deposit_rate_data respond  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)

    # 结果集输出到csv文件

    result.to_csv("D:/deposit_rate.csv", encoding="gbk", index=False)

    print(result)

   

    # 登出系统

    bs.logout()

return result

 

 

def plot_pic_4_deposit_rate():

    """  画出存款利率变化图    """

    deposit_rate_data = get_deposit_rate()

    deposit_rate_data.dropna(axis = 0, how= 'any')

    fig, ax = plt.subplots()

   

    period = len(deposit_rate_data)

    x1 = np.array(range(period))

    demandDepositRate = deposit_rate_data['demandDepositRate']

    fixedDepositRate1Year = deposit_rate_data['fixedDepositRate1Year']

    fixedDepositRate3Year = deposit_rate_data['fixedDepositRate3Year']

    fixedDepositRate5Year = deposit_rate_data['fixedDepositRate5Year']

    datestrlist = deposit_rate_data['pubDate']

    print(len(datestrlist),len(fixedDepositRate1Year),len(fixedDepositRate3Year),len(fixedDepositRate5Year))

 

    for i in range(period):

        if i > 0 and not demandDepositRate[i]:

            demandDepositRate[i] = float(demandDepositRate[i - 1] )

        else:

            demandDepositRate[i] = float(demandDepositRate[i] )

        if i > 0 and not fixedDepositRate1Year[i]:

            fixedDepositRate1Year[i] = fixedDepositRate1Year[i - 1]

        else:

            fixedDepositRate1Year[i] = float(fixedDepositRate1Year[i] )

           

        if i > 0 and not fixedDepositRate3Year[i]:

            fixedDepositRate3Year[i] = fixedDepositRate3Year[i - 1]

        else:

            fixedDepositRate3Year[i] = float(fixedDepositRate3Year[i] )

        if i > 0 and not fixedDepositRate5Year[i]:

            fixedDepositRate5Year[i] = fixedDepositRate5Year[i - 1]

        else:

            fixedDepositRate5Year[i] = float(fixedDepositRate5Year[i] )

    for datestr,demandrage,rate1year,rate3yea,rate5year in zip(datestrlist,demandDepositRate,fixedDepositRate1Year,fixedDepositRate3Year,fixedDepositRate5Year):

        print(datestr,demandrage,rate1year,rate3yea,rate5year)

       

    freedepositRate = np.array(demandDepositRate)

#     print (pe[-50:])

#     print(datestrlist[-50:])

    print (freedepositRate.min(0))

    print(freedepositRate.max(0))

   

   

   

    datelable = []

    for i_days in range(len(datestrlist)):

        tradingdate = datestrlist[i_days]

        date = int(tradingdate[8:])

#         print date

#         if date %10 == 0:

        if date % 1 == 0:

            datelable.append(tradingdate)

        else:

            datelable.append("")

    fig, ax = plt.subplots()

    plt.title(u"存款利率历史走势",fontproperties=myfont)

    # plt.title(u"盘中涨幅超过",fontproperties=myfont)

    plt.xlabel(u"date",fontproperties=myfont)

    plt.ylabel(u"DepositRate",fontproperties=myfont)

    plt.xticks(x1, datelable, rotation=30)

   

    ax.plot(x1, demandDepositRate, label=r"demandDepositRate")

    ax.plot(x1, fixedDepositRate1Year, label=r"fixedDepositRate 1Year")

    ax.plot(x1,fixedDepositRate3Year,label=r"fixedDepositRate 3Year")

    ax.plot(x1,fixedDepositRate5Year,label=r"fixedDepositRate 5Year")

    #显示在右上角

    ax.legend(loc=1)

#     ax.plot(x1,closeprice,'y')

 

plt.show()

 

 

if __name__ == '__main__':

plot_pic_4_deposit_rate()

画出的图像如下:

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值