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

news2024/11/17 3:34:24

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

数据大纲:

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

目标要求:

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

代码实现:

-导入库和导入数据

这个小项目需要我们用到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.coloradmin.cn/o/2154103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

django项目添加测试数据的三种方式

文章目录 自定义终端命令Faker添加模拟数据基于终端脚本来完成数据的添加编写python脚本编写shell脚本执行脚本需要权限使用shell命令来完成测试数据的添加 添加测试数据在工作中一共有三种方式: 可以根据django的manage.py指令进行[自定义终端命令]可以采用第三方…

pthread_cond_signal 和pthread_cond_wait

0、pthread_join()函数作用: pthread_join() 函数会一直阻塞调用它的线程,直至目标线程执行结束(接收到目标线程的返回值),阻塞状态才会解除。如果 pthread_join() 函数成功等到了目标线程执行结束(成功获取…

【C++】list详解及模拟实现

目录 1. list介绍 2. list使用 2.1 修改相关 2.2 遍历 2.3 构造 2.4 迭代器 2.5 容量相关 2.6 元素访问 2.7 操作相关 3. 模拟实现 3.1 节点类 3.1.1 初始结构 3.1.2 节点的构造函数 3.2 迭代器类 3.2.1 初始结构 3.2.2 迭代器 3.2.3 迭代器-- 3.2.4 解引…

1.随机事件与概率

第一章 随机时间与概率 1. 随机事件及其运算 1.1 随机现象 ​ 确定性现象:只有一个结果的现象 ​ 确定性现象:结果不止一个,且哪一个结果出现,人们事先并不知道 1.2 样本空间 ​ 样本空间:随机现象的一切可能基本…

ML 系列:机器学习和深度学习的深层次总结(05)非线性回归

图 1.不同类型的回归 一、说明 非线性回归是指因变量和自变量之间存在非线性关系的模型。该模型比线性模型更准确、更灵活,可以获取两个或多个变量之间复杂关系的各种曲线。 二、关于 当数据之间的关系无法用直线预测并且呈曲线形式时,我们应该使用非线性…

MySQL篇(索引)(持续更新迭代)

目录 一、简介 二、有无索引情况 1. 无索引情况 2. 有索引情况 3. 优劣势 三、索引结构 1. 简介 2. 存储引擎对于索引结构的支持情况 3. 为什么InnoDB默认的索引结构是Btree而不是其它树 3.1. 二叉树(BinaryTree) 3.2. 红黑树(RB&a…

6、等级保护政策内容

数据来源:6.等级保护政策内容_哔哩哔哩_bilibili 信息安全产品管理与响应 等级管理 对信息系统中使用的信息安全产品实行按等级管理,信息安全事件应分等级响应与处置。 预测评服务由测评公司和咨询公司提供预测评服务,根据技术要求和测评要…

高校心理辅导系统:Spring Boot技术实现指南

目 录 摘 要 I ABSTRACT II 1绪 论 1 1.1研究背景 1 1.2设计原则 1 1.3论文的组织结构 2 2 相关技术简介 3 2.1Java技术 3 2.2B/S结构 3 2.3MYSQL数据库 4 2.4Springboot框架 4 3 系统分析 6 3.1可行性分析 6 3.1.1技术可行性 6 3.1.2操作可行性 6 3.1.3经济可行性 6 3.1.4法律…

[OpenGL]使用OpenGL绘制带纹理三角形

一、简介 本文介绍了如何使用使用OpenGL绘制带纹理三角形。 在绘制带纹理的三角形时, 首先使用.h读取准备好的.png格式的图片作为纹理,然后在fragment shader中使用 ... in vec2 textureCoord; uniform sampler2D aTexture1; void main() {FragColor …

嵌入式 开发技巧和经验分享

文章目录 前言嵌入式 开发技巧和经验分享目录1.1嵌入式 系统的 定义1.2 嵌入式 操作系统的介绍1.3 嵌入式 开发环境1.4 编译工具链和优化1.5 嵌入式系统软件开发1.6 嵌入式SDK开发2.1选择移植的系统-FreeRtos2.2FreeRtos 移植步骤2.3 系统移植之中断处理2.4系统移植之内存管理2…

奥比中光深度相机相关使用内容

奥比中光深度相机相关使用内容 Windows平台测试官方软件关于python环境的配置1、安装CMake2、安装Visual Studio3、项目地址下载4、配置Visual Studio5、完成基于Python的SDK配置官网教学视频地址 3D视觉开发者社区 官方文档地址 效果: Windows平台测试官方软件 Window…

《高等代数》线性相关和线性无关(应用)

说明:此文章用于本人复习巩固,如果也能帮到大家那就更加有意义了。 注:1)线性相关和线性无关的证明方法中较为常用的方法是利用秩和定义来证明。 2)此外,线性相关和线性无关的证明常常也会用到反证法。 3&…

简单水印通过python去除

简单水印通过python去除 先看效果,如果效果不是你需要的就可以不用浪费时间。 注意:这种主要还是对应的文字在水印上方的情况,同时最好不要有渐变水印否则可能最后输出的图片的水印还会有所残留,不过还是学习使用,相信…

DOS(Disk Operating System,磁盘操作系统)常用指令

目录 背景: 早期探索: DOS之父: 发展历程: 常用指令: 进入命令: 操作1.进入和回退: 操作2.增、删: 操作3.其它: 总结: 背景: 早期探索: DOS(Disk Operating System,磁盘操作系统)在…

【Web】PolarCTF2024秋季个人挑战赛wp

EZ_Host 一眼丁真命令注入 payload: ?host127.0.0.1;catf* 序列一下 exp: <?phpclass Polar{public $lt;public $b; } $pnew Polar(); $p->lt"system"; $p->b"tac /f*"; echo serialize($p);payload: xO:5:"Polar":2:{s:2:"…

VSCode C++ Tasks.json基本信息介绍

前言 上文介绍了VSCode在Windows环境下如果创建C项目和编译多个文件项目&#xff0c;但是只是粗略的说明了一下Tasks.json文件。今天对tasks.json进行进一步的了解。 内容 Tasks文件 {"version": "2.0.0","tasks": [{"type": &quo…

C#进阶-基于雪花算法的订单号设计与实现

在现代电商系统和分布式系统中&#xff0c;高效地生成全局唯一的订单号是一个关键需求。订单号不仅需要唯一性&#xff0c;还需要具备一定的趋势递增性&#xff0c;以满足数据库索引和排序的需求。本文将介绍如何在C#中使用雪花算法&#xff08;Snowflake&#xff09;设计和实现…

IntelliJ IDEA 2024创建Java项目

一、前言 本文将带领大家手把手创建纯Java项目&#xff0c;不涉及Maven。如有问题&#xff0c;欢迎大家在评论区指正说明&#xff01; 二、环境准备 名称版本jdk1.8idea2024 1.4操作系统win10 jdk的安装教程 idea的安装教程 三、创建项目 首先我们点击新建项目 然后我们…

基于SpringBoot+Vue+MySQL的国产动漫网站

系统展示 用户前台界面 管理员后台界面 系统背景 随着国内动漫产业的蓬勃发展和互联网技术的快速进步&#xff0c;动漫爱好者们对高质量、个性化的国产动漫内容需求日益增长。然而&#xff0c;市场上现有的动漫平台大多以国外动漫为主&#xff0c;对国产动漫的推广和展示存在不…

网页聊天——测试报告——Selenium自动化测试

一&#xff0c;项目概括 1.1 项目名称 网页聊天 1.2 测试时间 2024.9 1.3 编写目的 对编写的网页聊天项目进行软件测试活动&#xff0c;揭示潜在问题&#xff0c;总结测试经验 二&#xff0c;测试计划 2.1 测试环境与配置 服务器&#xff1a;云服务器 ubuntu_22 PC机&am…