该数据来源于锐思数据库,如果数据有偏差,可能是本人搜索的问题,希望大家谅解。
数据大纲:
其中我们制作折现统计图需要用到的是截止日期,表达数据最后获取的日期,而更新时间则是数据时效性的表示,可以用来筛选数据,这里暂时用不到该时间数据。
目标要求:
对数据进行清洗,统计出活期存款的占比和定期存款的占比,利用折线统计图绘制这两个数据占比的大体走向。
代码实现:
-导入库和导入数据
这个小项目需要我们用到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
#以上是本人第一次脱离教科书进行的实践,代码成品可能很粗糙,还有很多优化的部分,各位如果有更高效的想法欢迎随时评论。