恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Python记账数据分析源码:pandas清洗与matplotlib可视化消费方向

  • 首页
  • 资讯中心
  • /
  • Python记账数据分析源码:pandas清洗与matplotlib可视化消费方向

相关资讯

Linux基础IO全解析:从文件描述符到缓冲区与重定向 2026/10/11 18:58:16
Linux进程详解:从内核结构到僵尸进程排查实战 2026/10/11 18:58:16
拆解 tern_for_vim 架构:VimL、Python 桥接与 Tern 服务器的三层协作内幕 2026/10/11 18:58:16

最新资讯

期货量化策略云端部署实战:从本地迁移到云服务器的完整指南
2026 企业 AI API 聚合平台盘点:国际与国内八大服务商全维度评测
Cheat Engine 6.8.1 源码解析:进程内存扫描与修改原理
rea:用命令行解决碎片笔记管理与检索难题
Playwright实战指南:浏览器自动化核心原理与避坑技巧
Cursor实战:自然语言驱动开发与意图式调试工作流

今日推荐

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

Python记账数据分析源码:pandas清洗与matplotlib可视化消费方向

发布时间:2026/10/11 19:03:16
Python记账数据分析源码:pandas清洗与matplotlib可视化消费方向 简介这是一份面向Python初学者与个人理财爱好者的数据分析实战示例围绕日常记账数据展开帮助读者用代码梳理个人消费方向、识别支出结构从而辅助财务决策。压缩包共3个文件包含1个py源码脚本、1个xlsx记账数据表和1个txt使用说明整体约20KB体积轻巧便于快速运行与二次修改。源码演示了如何借助Pandas完成数据清洗、分类汇总与聚合筛选并用matplotlib、seaborn绘制柱状图、饼图与趋势线直观呈现食品、交通、娱乐等类别的占比与时间变化同时体现自动化思路可批量读取表格、按规则归类消费记录并定期更新结果。目前已有191人学习下载适合想练习数据分析与可视化、培养记账习惯的读者参考也能为后续接入爬虫抓取电商或外卖订单数据打下基础。1. 记账三年还在靠感觉这份 Python 源码把消费方向拆成可读图表每个月工资到账没几天就见了底打开账单却只看到一堆零散数字说不清钱到底流向了哪里——这是很多人做记账时的真实状态。这份「数据分析和图标-可视化分析日常记账数据总结个人消费方向-Python源码示例.zip」就是冲着这个场景来的它用 Python 把一份日常记账流水读进来做清洗、分类汇总再输出消费方向的可视化图表让你一眼看出钱花在哪些类目上。它适合正在学 Python 数据分析、想找一个完整可跑案例的入门者也适合手头有记账 CSV 却不知道怎么下手的从业者。技术栈是 Python pandas matplotlib 这套最常见的组合不需要数据库不需要联网本地跑通即可。下面我按「资源是什么 → 怎么用 → 坑在哪」的顺序把这份源码拆开讲清楚。2. 先看清这份源码的骨架pandas 清洗加 matplotlib 出图拿到一个 zip 源码包我习惯先不急着跑而是把目录结构和依赖摸清楚。这份示例的定位很明确输入是记账流水输出是消费方向图表中间靠 pandas 做数据处理、matplotlib 做可视化。理解这条数据链路后面改字段、换数据格式才不会翻车。2.1 目录结构与数据流从 CSV 到图表的四步链路常见做法是这类记账分析源码会包含一个数据文件、一个主分析脚本可能再加一个绘图脚本或配置。整体数据流大致是四步读取原始流水 → 清洗与字段规整 → 按消费类目聚合 → 绘图输出。下面是我按这个场景还原出的典型结构你对照自己解压后的实际文件调整即可。# 解压后先看目录别急着运行 unzip 数据分析和图标-可视化分析日常记账数据总结个人消费方向-Python源码示例.zip -d bookkeeping_demo cd bookkeeping_demo # 列出文件确认数据文件和脚本位置 ls -R这段命令做两件事解压到独立目录避免污染当前工作区用ls -R递归列出所有文件确认数据文件通常是.csv或.xlsx和 Python 脚本的相对位置。参数上-d指定解压目标目录名字随意但要记住。跑之前先看清楚哪个是入口脚本一般名字里带main、analysis或visual的就是。数据流的关键在于字段。记账流水通常有日期、金额、类目、备注这几列源码要能识别它们才能聚合。如果列名对不上后面聚合就会报 KeyError这是新手最容易卡住的地方。2.2 环境准备pandas 与 matplotlib 的安装与版本确认这份源码依赖 pandas 和 matplotlib中文图表还常需要中文字体配置。安装本身不复杂但版本不匹配会出各种玄学问题所以先确认环境。# 建议用虚拟环境隔离避免和系统包冲突 python -m venv venv # Linux/macOS 激活 source venv/bin/activate # Windows 激活PowerShell # .\venv\Scripts\Activate.ps1 # 安装核心依赖 pip install pandas matplotlib openpyxl # 确认版本pandas 2.x 与 1.x 在部分 API 上有差异 python -c import pandas, matplotlib; print(pandas.__version__, matplotlib.__version__)这里openpyxl是为了读.xlsx文件如果你的数据是 CSV 可以不装。虚拟环境的作用是把依赖锁在项目内避免不同项目之间版本打架。最后一行打印版本是为了心里有数pandas 2.x 之后部分默认行为变了比如append方法被移除如果源码里用了老写法就会报错。遇到这类报错先看版本再决定是改代码还是降版本。提示如果绘图时中文显示成方框是字体没配好不是代码逻辑问题后面避坑章节会专门讲。2.3 核心脚本逐段拆解读取、清洗、聚合、绘图把入口脚本打开按数据流四步逐段看。下面是我按这份源码场景还原的核心逻辑字段名以你实际数据为准。import pandas as pd import matplotlib.pyplot as plt # 1. 读取流水注意编码中文 CSV 常见 gbk 或 utf-8-sig df pd.read_csv(records.csv, encodingutf-8-sig) # 2. 清洗统一日期格式金额转数值去掉无效行 df[日期] pd.to_datetime(df[日期], errorscoerce) df[金额] pd.to_numeric(df[金额], errorscoerce) df df.dropna(subset[日期, 金额, 类目]) # 3. 按消费类目聚合统计每个方向的总支出 summary df.groupby(类目)[金额].sum().sort_values(ascendingFalse) # 4. 绘图横向条形图更适合类目名较长的场景 plt.rcParams[font.sans-serif] [SimHei] # 中文字体 plt.rcParams[axes.unicode_minus] False summary.plot(kindbarh) plt.xlabel(金额) plt.title(消费方向汇总) plt.tight_layout() plt.savefig(summary.png, dpi150)逐段说明第一步read_csv的encoding参数很关键中文 CSV 用utf-8-sig能避免首列出现乱码字符第二步errorscoerce把无法解析的值变成 NaN再用dropna清掉保证后续聚合不报错第三步groupby按类目求和并降序排列sort_values让图表从大到小更直观第四步设置中文字体后绘图barh是横向条形图类目名长时不会挤在一起tight_layout防止标签被裁掉savefig的dpi控制清晰度。参数怎么改想换成正向柱状图把barh改成bar想按月份看趋势把groupby(类目)换成按月份分组想过滤掉小额支出在聚合前加df df[df[金额] 10]。这些改动都不影响主流程是这份源码最实用的扩展点。3. 把源码跑成自己的换数据、调参数、出图骨架看清之后真正的落地是把它换成你自己的记账数据。这一步的难点不在代码而在数据格式对齐和参数微调。下面按「准备数据 → 跑通 → 定制图表」推进。3.1 准备一份能被识别的记账数据源码能不能跑通八成取决于你的数据长什么样。合格从业者一般会先把原始账单整理成规整的表格列名和源码约定一致。下面是一份最小可用的示例数据。日期,类目,金额,备注 2024-01-03,餐饮,38.5,午餐 2024-01-03,交通,6,地铁 2024-01-05,购物,299,日用品 2024-01-08,餐饮,52,聚餐 2024-01-12,娱乐,88,电影字段说明日期用YYYY-MM-DD格式pd.to_datetime能直接解析类目是聚合的维度尽量用固定几个词别一会儿「吃饭」一会儿「餐饮」金额是纯数字不要带「元」字备注可选不影响分析。如果你的原始数据列名是英文或别的叫法有两个办法改 CSV 表头或在读取后用df.rename(columns{...})映射。我一般选后者不动原始文件改代码更安全。注意金额列如果混入了收入正负号不分聚合出来的「消费方向」会失真。分析前先确认这份数据只含支出或加一步筛选。3.2 跑通主流程并核对中间结果直接跑脚本之前建议先分步验证别一口气跑完只看最后那张图。中间结果对了图基本不会错。# 分步核对避免一步到位后不知道哪里出错 print(df.head()) # 看前几行确认列名和数据类型 print(df.dtypes) # 日期是否为 datetime金额是否为 float print(df[类目].value_counts()) # 看类目是否有拼写不一致 print(summary) # 看聚合结果是否符合预期head()确认读取没问题dtypes确认日期和金额类型正确——如果金额是 object 类型说明有非数字字符混进去了。value_counts()是排查类目脏数据的利器如果出现「餐饮」和「餐饮 」这种带空格的重复项就得先df[类目] df[类目].str.strip()。summary打印出来和你的直觉对一下比如餐饮是不是最大项不对就回头查数据。这一步看着笨但能省下大量「图不对但不知道哪错」的时间。我见过太多人直接跑绘图结果图是空的回头查半天才发现是日期列没解析成功。3.3 定制可视化从默认条形图到可读的消费方向图默认图能出但往往不够看。这份源码的价值在于它给了你可改的绘图入口稍微调几个参数图的可读性就上一个台阶。# 在默认基础上做三处增强 fig, ax plt.subplots(figsize(8, 5)) summary.plot(kindbarh, axax, color#4C72B0) ax.set_xlabel(支出金额元) ax.set_ylabel(消费类目) ax.set_title(个人消费方向分布) # 在每个条形末尾标注数值 for i, v in enumerate(summary.values): ax.text(v, i, f {v:.0f}, vacenter) plt.tight_layout() plt.savefig(summary_v2.png, dpi150)三处增强figsize控制画布大小类目多时调高color统一配色比默认循环色更干净ax.text在条形末尾标数值省得读者对着坐标轴估。vacenter让文字垂直居中f{v:.0f}保留整数。这些参数都不影响数据逻辑纯展示层调整改坏了也不影响分析结果。如果你的数据跨度大比如有一笔几千的大额和一堆几十的小额条形图会被大额压扁。这时可以改用饼图看占比或对金额取对数。常见做法是先看总额分布再决定用哪种图别默认一种图打天下。4. 避坑与排查中文乱码、日期解析、聚合失真的血泪经验这份源码本身不复杂但数据分析的坑往往藏在细节里。下面五条是我在实际跑这类记账分析时反复遇到的按「现象 → 原因 → 解决」写清楚。4.1 图表中文显示成方框现象图能出来但标题和类目名全是方框或乱码。原因matplotlib 默认字体不含中文SimHei在部分系统上不存在。解决先确认系统有哪些中文字体再指定。Linux 上常用WenQuanYi Micro HeimacOS 用Arial Unicode MSWindows 用SimHei或Microsoft YaHei。设置plt.rcParams[font.sans-serif]后还要加plt.rcParams[axes.unicode_minus] False否则负号也会出问题。4.2 日期列解析后全是 NaT现象pd.to_datetime之后日期列全是 NaTdropna把数据全删了图是空的。原因原始日期格式和默认解析不匹配比如2024/1/3、20240103或带时间戳。解决用format参数显式指定如pd.to_datetime(df[日期], format%Y/%m/%d, errorscoerce)。不确定格式时先print(df[日期].head(20))肉眼看别猜。4.3 类目拼写不一致导致聚合碎片化现象聚合后类目特别多每个金额都很小看不出方向。原因同一类消费写了不同名字如「餐饮」「吃饭」「午餐」。解决聚合前做一次映射用df[类目] df[类目].replace({吃饭: 餐饮, 午餐: 餐饮})或先value_counts()找出所有变体再统一。这一步没有捷径只能靠看数据。4.4 金额列混入非数字字符现象to_numeric报错或金额列是 object 类型聚合结果异常。原因金额里带了「元」「¥」或千分位逗号。解决先清洗字符串df[金额] df[金额].astype(str).str.replace(r[^\d.-], , regexTrue)再转数值。errorscoerce能把清不掉的值变 NaN配合dropna兜底。4.5 大额支出压扁图表可读性现象条形图里大部分类目几乎看不见只有一两个特别长。原因金额分布跨度大线性坐标被极值主导。解决要么改用饼图看占比要么对金额取对数np.log1p(summary)后再画要么直接过滤掉极端值单独说明。选哪种取决于你想表达什么没有标准答案但别硬画一张读不了的图。5. 进阶玩法把一次性脚本改成可复用的月度分析习惯跑通一次不难难的是让它变成你每个月都愿意用的东西。这份源码最大的价值不是那张图而是它给了你一个可改的模板。我的习惯是把它改造成「丢一个 CSV 进去自动出当月消费方向图」的小工具省得每次手动改路径。具体做法是加一层命令行参数用argparse接收文件路径和输出目录。这样你每月导出账单后一条命令就能出图不用打开编辑器改代码。import argparse parser argparse.ArgumentParser(description月度消费方向分析) parser.add_argument(--input, requiredTrue, help记账 CSV 路径) parser.add_argument(--output, defaultsummary.png, help输出图片路径) args parser.parse_args() df pd.read_csv(args.input, encodingutf-8-sig) # ... 清洗、聚合逻辑同上 ... plt.savefig(args.output, dpi150) print(f已输出{args.output})改造后运行方式变成python analysis.py --input 2024-01.csv --output jan.png。参数--input必填--output有默认值。这样脚本就从「一次性示例」变成了「可复用工具」这是我认为这份源码最值得动手改的地方。再进一步可以按月份循环处理多个文件把每个月的消费方向图拼成一张趋势对比。常见做法是用for遍历目录下的 CSV聚合后把结果存进一个 DataFrame最后画分组柱状图。这一步涉及多文件读取和结果合并是练 pandas 的好场景。验证方法上我一般会拿两个月的真实数据跑一遍对比总额是否和账单对得上。如果对不上八成是某个月的数据有重复行或漏读。对得上才说明清洗逻辑没问题。这个核对习惯比任何单元测试都直接。提示脚本里别硬编码文件路径用参数传。硬编码的脚本换台机器就跑不了这是最常见的「后悔药」场景。从那以后我每次拿到这类分析源码都强制先跑一遍中间结果核对再动绘图参数——图好看是次要的数据对才是底线。希望这份拆解能帮你把这份源码真正用起来而不是解压完就躺在硬盘里。本文还有配套的精品资源点击获取

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号