当前位置: 首页 > article >正文

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

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


http://www.kler.cn/news/314377.html

相关文章:

  • Apache Iceberg 试用
  • 无人机几种常见的避障系统!!!
  • Python介绍
  • python爬虫初体验(一)
  • TSRPC+Cocos
  • nginx upstream转发连接错误情况研究
  • 机器学习04-逻辑回归(python)-02原理与损失函数
  • 漫谈由标准输入\输出\错误输出引发的思考
  • AI Prompt写作指南:打造高效Prompt的四大核心元素
  • 游戏服务器知识
  • Qt 常用数据类型
  • (笔记自用)位运算总结+LeetCode例题:颠倒二进制位+位1的个数
  • 【学习笔记】STM32F407探索者HAL库开发(五)F407时钟系统配置
  • 好用的工具网址
  • STM32单片机与SU-03T联动(语音播报传感器数据)
  • Docker Networking Tutorial (Bridge - None - Host - IPvlan - Macvlan )
  • TCP/IP协议详解:现代网络通信的基石
  • Unity3D入门(一) : 第一个Unity3D项目,实现矩形自动旋转,并导出到Android运行
  • CSS 的元素显示模式简单学习
  • stack和queue(一)
  • 网络信息传输安全
  • R18 Enhancements on CHO procedure for NES cell(s)(NES event)
  • Linux相关概念和重要知识点(5)(权限的修改、时间属性)
  • 蓝桥杯【物联网】零基础到国奖之路:七. 串口
  • 4、FPGA特征简介
  • 重生之我们在ES顶端相遇第15 章 - ES 的心脏-倒排索引
  • R语言机器学习算法实战系列(二) SVM算法(Support Vector Machine)
  • ChatGPT 在国内使用的方法
  • 论文阅读 - SELF-REFINE: Iterative Refinement with Self-Feedback
  • 了解二八定律,提高工作效率、生活质量