python简单的小项目-关于央行储蓄占比情况的数据可视化

该数据来源于锐思数据库,如果数据有偏差,可能是本人搜索的问题,希望大家谅解。

数据大纲:

其中我们制作折现统计图需要用到的是截止日期,表达数据最后获取的日期,而更新时间则是数据时效性的表示,可以用来筛选数据,这里暂时用不到该时间数据。

目标要求:

对数据进行清洗,统计出活期存款的占比和定期存款的占比,利用折线统计图绘制这两个数据占比的大体走向。

代码实现:

-导入库和导入数据

这个小项目需要我们用到python的pandas库和matplotlib库,首先先将这两个库导入:

import pandas as pd
import matplotlib.pyplot as plt

我们可以提前设计matplotlib库的总体字体形式,以免后续的麻烦

plt.rcParams['font.sans-serif']='SimHei'

利用read_excel()导入数据,这里我们只用到两个参数:io:r文件路径和 sheet_name:第几份文件

data=pd.read_excel(r"D:\桌面\银行占比储蓄情况.xlsx",sheet_name='Sheet1')

 -进行数据清洗

首先,我们不知道数据的日期类型是什么,而大部分时候我们不能直接更改源数据,这时就要利用pd.to_datetime()函数进行日期形式的转化,然后需要利用dropna按行进行全局数据空值的删除(参数:how=any表示全局数据,axis=0表示按行删除,inplace=True表示直接替换源数据):

data['更新时间_UpDt']=pd.to_datetime(data['更新时间_UpDt'])
data.dropna(how='any',inplace=True)

在清洗完数据之后,我们必须要重新配置索引,以免造成潜在的BUG。利用reset_index()函数进行索引的重新配置(参数:inplace=True表示直接替换原数据,drop=True表示删除原来的索引):

data.reset_index(drop=True,inplace=True)

-辅助列的建立

大部分时候,我们想要的数据需要我们对原始数据进行数学运算,然后把它们保存到原始数据框中。这时就要建立辅助列:

data[新建列名]=不同列之间的数学运算

这里我们想要得出储蓄比例,我们就要用总存款/(定期存款或活期存款),同时,为了让我的折线统计图更直观,占比的单位是%,所以我们还要将原始占比数据*100

data['活期存款占比']=round((data['企业活期存款_DemDep']/data['总资产_TotAss']*100),2)
data['定期存款占比']=round((data['企业定期存款_FixedDep']/data['总资产_TotAss']*100),2)

 -数据可视化

我们利用折线图进行可视化,用def自定义函数将可视化函数和其他代码隔离开。用

plot(x=x轴数据,y=y轴数据,mark='o')来初步表示出折线,

再利用plt.ylabel('y轴数据', fontsize=16),

plt.xlabel('x轴数据', fontsize=16),

plt.title('图像标题', fontsize=20)。

fontsize是字体的大小,推荐轴标题大小为16,总标题为20。当然matplotlib库里也有更改字体颜色和图像颜色的代码,这里不做过多介绍。最后用plt.show()指令将图像显现。大概实现方式为:

def center_bank_current_deposit(data1):
    data1.plot(x=x轴数据,y=y轴数据,mark='o')
    plt.ylabel('y轴数据', fontsize=16)
    plt.xlabel('x轴数据', fontsize=16)
    plt.title('图像标题', fontsize=20)
    plt.show()

我们将实际参数传入代码内,可以得到:

定期存款可视化:

def center_bank_current_deposit(data1):
    data1.plot(x='截止日期_EndDt', y='定期存款占比',marker='o')
    plt.ylabel('定期存款占比(单位:%)', fontsize=16)
    plt.xlabel('日期', fontsize=16)
    plt.title('中央银行的定期存款比率变化情况', fontsize=20)
    plt.show()

活期存款可视化: 

def center_bank_fixed_deposit(data2):
    data2.plot(x='截止日期_EndDt', y='活期存款占比',marker='o')
    plt.ylabel('活期存款占比(单位:%)', fontsize=16)
    plt.xlabel('日期', fontsize=16)
    plt.title('中央银行的活期存款比率变化情况', fontsize=20)
    plt.show()

-最终代码汇总实现:

import pandas as pd
import matplotlib.pyplot as plt
#提前设置所有自动化的字体
plt.rcParams['font.sans-serif']='SimHei'#提前设置数据可视化的字体
'''
银行占比情况思路流程:
1.传入数据.
2.数据清洗.
3.辅助列的添加
4.进行多维度的分析
'''
#一.传入数据
data=pd.read_excel(r"D:\桌面\银行占比储蓄情况.xlsx",sheet_name='Sheet1')
#二.数据清洗
#1.时间类日期的清洗(源数据的时间类型是字符串形式的,在作图之前要重新勤洗数据)
data['更新时间_UpDt']=pd.to_datetime(data['更新时间_UpDt'])
data['截止日期_EndDt']=pd.to_datetime(data['截止日期_EndDt'])
#2.删除缺失的值或为零的值,这里选择直接替换原数据
data.dropna(axis=0,how='any',inplace=True)
#(清洗完数据后记得要重新配置索引),这里表示将原来的索引全部删除,并且取代源数据
data.reset_index(drop=True,inplace=True)
#三.辅助列的建立
data['活期存款占比']=round((data['企业活期存款_DemDep']/data['总资产_TotAss']*100),2)
data['定期存款占比']=round((data['企业定期存款_FixedDep']/data['总资产_TotAss']*100),2)

#四,进行折线统计图的绘制
def center_bank_current_deposit(data1):
    data1.plot(x='截止日期_EndDt', y='定期存款占比',marker='o')
    plt.ylabel('定期存款占比(单位:%)', fontsize=16)
    plt.xlabel('日期', fontsize=16)
    plt.title('中央银行的定期存款比率变化情况', fontsize=20)
    plt.show()
def center_bank_fixed_deposit(data2):
    data2.plot(x='截止日期_EndDt', y='活期存款占比',marker='o')
    plt.ylabel('活期存款占比(单位:%)', fontsize=16)
    plt.xlabel('日期', fontsize=16)
    plt.title('中央银行的活期存款比率变化情况', fontsize=20)
    plt.show()

 图像显示:

 

我们可以在plot数据可视化自定义函数中用plt.savefig('路径')代码进行图像的保存,可指定格式,如 .jpg, .pdf

#以上是本人第一次脱离教科书进行的实践,代码成品可能很粗糙,还有很多优化的部分,各位如果有更高效的想法欢迎随时评论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值