每月花哪了?Python 帮你从 Excel 到可视化图表,10 分钟看清家庭支出
- 2026-11-09 02:06:05
每月花哪了?Python 帮你从 Excel 到可视化图表,10 分钟看清家庭支出pip install pandas matplotlib seaborn openpyxl import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 设置中文显示(Windows 常用 SimHei / Microsoft YaHei) plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False def load_data(file_path): """加载 Excel 数据""" return pd.read_excel(file_path) def clean_data(df): # 转换日期格式 df['日期'] = pd.to_datetime(df['日期']) # 提取年月用于月度分析 df['年月'] = df['日期'].dt.to_period('M') # 统一类别名称(可选) category_map = {'吃饭': '餐饮', '打的': '交通'} df['类别'] = df['类别'].map(category_map).fillna(df['类别']) # 处理异常金额 df = df[df['金额'] > 0] return df def monthly_summary(df): # 按年月和类别分组汇总 monthly = df.groupby(['年月', '类别'])['金额'].sum().unstack() # 计算总支出 monthly['总支出'] = monthly.sum(axis=1) # 计算各类别占比 for col in monthly.columns[:-1]: monthly[f'{col}_占比'] = monthly[col] / monthly['总支出'] return monthly def plot_monthly_trend(df): monthly_total = df.groupby('年月')['金额'].sum() plt.figure(figsize=(12, 6)) monthly_total.plot(kind='bar', color='skyblue') plt.title('月度总支出趋势', fontsize=16) plt.xlabel('年月'); plt.ylabel('金额(元)') plt.xticks(rotation=45) plt.grid(axis='y', linestyle='--', alpha=0.7) for i, v in enumerate(monthly_total): plt.text(i, v + 100, f'{v:.0f}', ha='center') plt.tight_layout() plt.savefig('月度支出趋势.png', dpi=300) plt.show() def plot_category_pie(df, month): monthly_data = df[df['年月'] == month] category_sum = monthly_data.groupby('类别')['金额'].sum() plt.figure(figsize=(10, 8)) plt.pie(category_sum, labels=category_sum.index, autopct='%1.1f%%', startangle=90, colors=sns.color_palette('pastel')) plt.title(f'{month} 支出类别占比', fontsize=16) plt.tight_layout() plt.savefig(f'{month}_支出占比.png', dpi=300) plt.show() def budget_alert(df, budget_dict): """budget_dict 示例:{'餐饮': 3000, '交通': 1000}""" category_spending = df.groupby('类别')['金额'].sum() alerts = {} for category, spending in category_spending.items(): if category in budget_dict and spending > budget_dict[category]: alerts[category] = { '预算': budget_dict[category], '实际支出': spending, '超支比例': (spending - budget_dict[category]) / budget_dict[category] } return alerts
家庭财务 · Python 实战
每月花哪了?Python 帮你从 Excel 到可视化图表,10 分钟看清家庭支出
pandas + matplotlib / seaborn 一键出图,零基础也能上手
每月整理账单时,是不是总在翻收据、对着 Excel 逐行核对,最后发现花最多的竟是「不知道花哪了」的类别?本文用 Python 搭一套轻量家庭支出分析系统:从 Excel 读取、自动分类汇总,到生成趋势图与占比饼图,还能做预算预警。跟着走,今天就能让数据替你掌握财务主动权。
一、先把 Excel 表准备好
自动化处理的前提是数据规范。推荐表格包含这几列:日期、类别、支付方式、金额、商家、备注。日期统一 YYYY-MM-DD,金额只放数字、不带货币符号,避免合并单元格。
二、装好这几个库
只用到数据处理和绘图三件套,一个命令搞定:
pandas 管数据、matplotlib/seaborn 画图、openpyxl 读写 Excel。
三、读取数据 + 解决中文乱码
Windows 下图表最容易踩的坑就是中文变方块,加两行配置即可:
四、数据清洗:日期、类别、异常一笔勾
把日期转成时间类型、按月分组、统一口语化类别(如「吃饭」归到「餐饮」)、再滤掉非正金额:
五、月度汇总:总支出与各类别占比
按「年月 × 类别」分组求和,并算出每类占比,一眼看清钱去哪了:
六、画两张图:趋势柱状 + 占比饼图
月度总支出用柱状图看走势,单月各类别用饼图看结构:
七、进阶:预算预警,超支自动提醒
给定每月预算,自动算出哪些类别超支、超了多少比例:
💡 小结
整套流程就四步:读 Excel → 清洗归类 → 分组汇总 → 出图预警。pandas 负责算,matplotlib/seaborn 负责画,几行函数就能把杂乱账单变成「趋势图 + 占比饼图」两张专业图表。想再省事,还能用 Streamlit 做成网页随时看,或接银行账单 API 自动导入。家庭财务,不需要复杂工具,Python 就够。
如果这篇对你有用,点个「在看」+ 转发给家人朋友 💚
关注「Py库半功倍」,每天一篇能上手的 Python 实战。
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。