首页 > 编程语言 >【Python】数据分析与可视化实践:收支日统计数据可视化的实现

【Python】数据分析与可视化实践:收支日统计数据可视化的实现

时间:2023-05-18 09:13:25浏览次数:50  
标签:数据分析 shouru plt Python zhichu 可视化 支出 data datas

Python数据分析与可视化实践:收支日统计数据可视化的实现

Author:萌狼蓝天

Date:2023-5-7

数据读入与基本处理

image-20230507225736946

上图是原始数据的一部分,存放于excel中,首先使用pd读入数据。读入数据后,删除不是收入,也不是支出的行。

# 读取数据
datas = pd.read_excel("账单.xlsx", sheet_name=0)
# 删除不是收入也不是支出
datas = datas.drop(datas[datas["收/支"]=="/"].index)

现在,剩下的数据,要么是支出,要么是收入。

折线图x轴标签准备

该折线图x轴,显示日期,因此,需要从原数据中取出日期,形成一个由不重复日期构成的列表(即这个列表中的日期不会重复)

x = datas["交易时间"].unique()

image-20230507230225174

这个数据太冗长了,作为标签的话放不下,因此需要处理一下,因为都是2022年的,所以取出月份和日就可以了。在此,使用了正则表达式的方式处理。

rule = r"2022-(.*?)T00" # 正则规则
x_label= ["{}".format(re.findall(rule,str(i))[0]) for i in x]
x_label

image-20230507230359210

到此,图表的x轴准备完毕。

问:为什么要在这里准备好x轴标签呢?

答:

我们可能今天只有收入,没有支出,

​ 可能昨天没有支出,只有收入,

​ 可能前天支出收入都没有。

这里准备的x轴标签,包含了支出,收入的日期(只要你一天中有支出,或者有收入,这一天都要被作为标签)。

接下来就是数据了。

收入与支出数据的准备

# 获取收入情况
data_shouru = datas[datas["收/支"]=="收入"]
data_shouru_x = data_shouru["交易时间"].unique()
data_shouru_y = data_shouru.groupby(["交易时间"]).sum()["金额(元)"]
data_shouru_y

data_shouru_x 是 有收入的日期 构成的列表,data_shouru_y是日期对应金额构成的列表。

data_shouru_x的列表长度<=x

一天之中可能有多个收入,要统计起来,因此需要使用groupby结合sum()根据日期统计金额,然后通过列名取出统计出来的金额

image-20230507231554009

处理支出同理

 # 获取支出情况
data_zhichu = datas[datas["收/支"]=="支出"]
data_zhichu_x = data_zhichu["交易时间"].unique()
data_zhichu_y = data_zhichu.groupby(["交易时间"]).sum()["金额(元)"]
data_zhichu_y

画图

plt.figure(figsize=(10,5),dpi=100)  # 创建画布
plt.grid(True, linestyle="--", alpha=0.5)  # 添加网格
# 添加描述
plt.title("支出情况", fontsize=24)
plt.xlabel("日期")
plt.ylabel("金额")
# 显示图例
plt.plot(data_shouru_x,data_shouru_y, color="r", linestyle="-", label="收入")  # 绘画
plt.plot(data_zhichu_x, data_zhichu_y, color="b", linestyle="--", label="支出")  # 绘画
plt.xticks(x,x_label,rotation = 45)
plt.legend(loc="upper right")  # 显示图例必须在绘制时设置好
plt.savefig("折线图")
plt.show()

image-20230518085327955

标签:数据分析,shouru,plt,Python,zhichu,可视化,支出,data,datas
From: https://www.cnblogs.com/mllt/p/py20230518.html

相关文章

  • R语言交互可视化分析房屋市场:arima、VAR时间序列、XGBoost、主成分分析、LASSO可视化
    全文链接:http://tecdat.cn/?p=32427原文出处:拓端数据部落公众号分析师:XueyanLiu在当前海量数据和资源的情况下,面对客户需求,如何找准需求标的和问题核心,并围绕该目标问题挖掘数据、确定市场重要关联因素、分层分类筛选可能关联因素,是当前数据分析运用的关键。解决方案任务/目......
  • Python - 仅限关键字参数 & 仅限位置参数
    仅限位置参数(/)#Python3.8新增defdemo1(a,b,/):returna,bif__name__=='__main__':demo1(1,2)#rightdemo1(1,b=2)#error#demo1(1,b=2)报错:'''Traceback(mostrecentcalllast):File"E:\PyProject\pytestD......
  • - python=3.7 -> libgcc-ng[version='>=11.2.0'] -> __glibc[version='>=2.17
     001、利用conda安装软件时遇到如下问题:Outputinformat:Requestedpackage->AvailableversionsThefollowingspecificationswerefoundtobeincompatiblewithyoursystem:-feature:/linux-64::__glibc==2.17=0-python=3.7->libgcc-ng[version='>=1......
  • 龙芯云平台python开发避坑指北
    龙芯云平台python开发配置避坑指北背景:网络尖峰训练营龙芯平台开发,准备使用python实现,在拿到云服务器第一时间就准备去配环境,踩了很多坑,在此记录一下。平台下python包不全部分pypi中的python包尚不支持Loongarch架构,loongson平台python包存在一些缺失比如我们此次准备用来开发......
  • Python 连接 MySQL 数据库
    在实际数据分析和建模过程中,我们通常需要从数据库中读取数据,并将其转化为Pandasdataframe对象进行进一步处理。而MySQL数据库是最常用的关系型数据库之一,因此在Python中如何连接MySQL数据库并查询数据成为了一个重要的问题。本文将介绍两种方法来连接MySQL数据库,并将......
  • Ubuntu20.04中为python3创建一个名为python的软连接
    问题描述:安装好Ubuntu20.04之后,想使用python,只能输入python3,输入python没有用处,如下图 为了少写一个字符,必须把"python3变成python"1.找到输入命令python3执行的二进制文件whichpython3 2.进入/usr/bin/目录查找与python有关的文件cd/usr/bin/ls-alF 可以看......
  • Python基础05
    成员运算符查看某个个体是否在群体中关键字:in在 notin不在name=['kevin','jack','tank']print('kevin'inname)print('lili'notinname)身份运算符比较是否相等关键字:==比较的是值是否相等  is比较内存代码是否相等s1=['kevin','tank'......
  • C++调用python过程+Anaconda使用arcpy包踩的坑
    C++调python(python文件包含第三方库):工具:VS2017QT5插件PycharmAnaconda1.下载Anaconda,配置一个虚拟环境2.将这个环境里的DLLs和Lib包以及相应py文件,放至C++项目生成.exe文件同级目录下 3.将include和libs放在项目某文件夹下,在VS里添加附加包含目录、附加库目录和附加依赖......
  • 用Python开发输入法后台(2)——输入‘我’的消息交互过程
    用户操作用户输入‘w’,显示以‘w’开始的单字用户输入数字键,比如‘1’,选择一个单字‘我’‘我’字上屏,回到初始状态消息交互过程init,onActivate切换到当前输入法时,后台会发送这两个消息filterKeyDown用户输入‘w’时,后台发送此消息,表示指定keycode是否处理还是忽略,pyth......
  • Python中,如何使得图像的中文和负号正常显示
    问题描述运行的图像结果里面,发现里面有许多空心框框,中文不见了,负号也不见了问题解决解决中文乱码问题:plt.rcParams['font.sans-serif']=['SimHei']解决负号乱码问题:plt.rcParams['axes.unicode_minus']=False以上两条代码均引用于这个包:importmatplotlib.pyplot......