月薪5千也能存下钱 用Python搞定消费分析 3步看清钱花在哪
发布时间:2025-08-16 15:33 浏览量:1
你是不是也有过这样的困惑:明明没买什么贵重东西,工资到账没几天就见底了?打开电子账单,密密麻麻的消费记录看得头疼,根本不知道钱花在了哪里。别慌!今天就教你用Python的pandas和matplotlib,花10分钟搞定个人消费分析,从此告别“糊涂账”,轻松攒下第一桶金。
很多人一听到“Python”就觉得难,其实只要跟着步骤来,零基础也能上手。首先要准备好工具,就像做饭需要锅碗瓢盆一样,分析消费记录也需要“趁手的装备”。
1. 安装必备工具
我们需要两个核心库:pandas(处理数据)和matplotlib(画图表)。如果你还没安装,打开电脑的“命令提示符”(Windows)或“终端”(Mac),复制粘贴下面两行代码,按回车就能自动安装,全程不用手动操作。
• 安装pandas:pip install pandas
• 安装matplotlib:pip install matplotlib
2. 导出你的消费记录
光有工具还不够,得有“原材料”——你的消费数据。以常用的电子支付平台为例,导出步骤超简单:
1. 打开对应支付APP,进入“我的”→“账单”模块;
2. 点击右上角“筛选”,选择你想分析的时间(比如近3个月),点击“确认”;
3. 点击右上角“导出”,选择“用于个人对账”,填写接收数据的邮箱,等待几分钟,就能收到包含消费记录的Excel文件。
拿到Excel文件后,我们就可以用Python“解剖”消费记录了。这里以近3个月的消费数据为例,教你统计每月开销最多的类别、找出“隐形消费”。
1. 导入数据并初步整理
首先打开Python(推荐用Jupyter Notebook,界面友好,新手也能快速上手),输入以下代码,导入需要的库并加载消费数据:
# 导入库
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# 设置中文字体(避免图表出现乱码)
plt.rcParams['font.sans-serif'] = ['WenQuanYi Zen Hei']
plt.rcParams['axes.unicode_minus'] = False
# 加载Excel文件(把括号里的路径换成你自己的文件路径)
df = pd.read_excel('个人账单202402-202404.xlsx')
# 查看数据前5行,了解数据结构
print("数据前5行:")
print(df.head)
# 查看数据的列名,知道有哪些信息
print("\n数据列名:")
print(df.columns.tolist)
运行代码后,你会看到消费数据的基本结构,包括“交易时间”“交易金额”“交易分类”“商家名称”等关键信息。这一步就像把一堆杂乱的账单按“时间、金额、类别”分类摆放,为后续分析打基础。
2. 数据清洗:去掉无用信息,只留“关键线索”
导出的账单里会有很多无用数据(比如退款记录、转账记录),这些会影响分析结果,必须先清理掉。我们只保留“支出”类型的记录,并且筛选出核心列:
# 1. 查看交易类型,确定“支出”的标识(不同平台可能不一样,先看清楚)
print("交易类型分布:")
print(df['交易类型'].value_counts)
# 2. 只保留“支出”记录(这里的“支出”要和你数据里的标识一致,比如有的是“消费支出”)
df_expense = df[df['交易类型'] == '支出'].copy
# 3. 只保留核心列:交易时间、交易金额、交易分类、商家名称
df_expense = df_expense[['交易时间', '交易金额', '交易分类', '商家名称']]
# 4. 处理交易时间:把“交易时间”列转换成日期格式,方便按月份统计
df_expense['交易时间'] = pd.to_datetime(df_expense['交易时间'])
# 5. 新增“月份”列,提取交易时间的月份(比如2024-02-15提取成202402)
df_expense['月份'] = df_expense['交易时间'].dt.strftime('%Y%m')
# 查看清洗后的数据
print("\n清洗后的数据前5行:")
print(df_expense.head)
# 查看每月总支出
print("\n每月总支出:")
monthly_total = df_expense.groupby('月份')['交易金额'].sum.round(2)
print(monthly_total)
运行后,你会看到每月的总支出金额。比如近3个月的总支出分别是:202402(2850.5元)、202403(3210.8元)、202404(2980.2元)。这一步就像把账单里的“退款单、转账单”挑出来扔掉,只留下真正花出去的钱的记录。
3. 核心分析:找出每月开销最多的类别
接下来就是最关键的一步——统计每月各消费类别的支出,看看钱到底花在了哪里。用下面的代码,就能快速算出每月每个类别的花费:
# 按“月份”和“交易分类”分组,计算每月各类别的总支出
monthly_category = df_expense.groupby(['月份', '交易分类'])['交易金额'].sum.round(2)
# 把结果转换成DataFrame格式,方便查看
monthly_category_df = monthly_category.reset_index
# 查看每月各分类支出
print("每月各分类支出:")
print(monthly_category_df)
# 找出每月开销最多的类别(重点!)
max_category_per_month = monthly_category_df.loc[monthly_category_df.groupby('月份')['交易金额'].idxmax]
print("\n每月开销最多的类别:")
print(max_category_per_month)
这一步运行后,你会得到一个“重磅结论”。比如近3个月的最大消费类别分别是:202402(餐饮美食,1200元)、202403(服饰鞋包,1500元)、202404(餐饮美食,1100元)。原来每个月一半的钱都花在了吃饭和衣物购置上,这就是“钱不知不觉花光”的真相!
光看数字不够直观,用图表一画,消费情况就一目了然。下面教你画3个实用的图表,清晰呈现消费分布。
1. 每月总支出趋势图:看支出是增是减
想知道自己的消费是越来越多还是越来越少?画个折线图就清楚了:
# 准备数据
months = monthly_total.index.tolist
total_amounts = monthly_total.values.tolist
# 创建图表
plt.figure(figsize=(10, 6)) # 设置图表大小
# 画折线图,加上数据标签
plt.plot(months, total_amounts, marker='o', linewidth=2, markersize=8, color='#FF6B6B')
for x, y in zip(months, total_amounts):
plt.text(x, y + 50, f'{y}元', ha='center', fontsize=10)
# 设置图表标题和标签
plt.title('近3个月每月总支出趋势', fontsize=16, fontweight='bold', pad=20)
plt.xlabel('月份', fontsize=12)
plt.ylabel('总支出(元)', fontsize=12)
# 加网格线,方便看数值
plt.grid(True, alpha=0.3)
# 保存图表(可以直接在Jupyter里显示,也能保存到电脑)
plt.tight_layout
plt.savefig('每月总支出趋势图.png', dpi=300)
plt.show
画出来的图很直观:如果折线向上走,说明消费在增加,需要控制;如果向下走,说明消费在减少,继续保持。比如3月支出比2月多,4月又降了下来,说明3月衣物购置支出较高,4月及时调整了消费节奏。
2. 每月消费类别饼图:看各类别占比
想知道每个月吃饭、购物、交通分别占多少比例?饼图是最佳选择。下面的代码能生成每月的消费类别饼图:
# 遍历每个月,画饼图
for month in months:
# 筛选该月的数据
month_data = monthly_category_df[monthly_category_df['月份'] == month]
categories = month_data['交易分类'].tolist
amounts = month_data['交易金额'].tolist
# 创建图表
plt.figure(figsize=(8, 8))
# 画饼图,设置颜色和标签
colors = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4', '#FECA57', '#FF9FF3']
wedges, texts, autotexts = plt.pie(
amounts,
labels=categories,
colors=colors,
autopct='%1.1f%%', # 显示百分比
startangle=90,
textprops={'fontsize': 10}
)
# 设置百分比文字颜色为白色,更醒目
for autotext in autotexts:
autotext.set_color('white')
autotext.set_fontweight('bold')
# 设置标题
plt.title(f'{month}消费类别占比', fontsize=14, fontweight='bold', pad=20)
# 保存图表
plt.tight_layout
plt.savefig(f'{month}消费类别饼图.png', dpi=300)
plt.show
以202402的饼图为例:餐饮美食占42.1%,交通出行占15.8%,日用百货占12.5%,其他类别占29.6%。一眼就能看出,吃饭是最大的开销,接下来就可以针对性地调整——比如减少外卖次数,自己准备餐食,每月能省300-500元。
3. 各类别跨月对比图:看哪个类别在“超支”
想知道哪个消费类别在3个月里花得越来越多?画个柱状图对比一下:
# 准备数据:先找出所有出现过的消费类别
all_categories = monthly_category_df['交易分类'].unique.tolist
# 创建一个DataFrame,用于存储每个月每个类别的支出
category_monthly_compare = pd.DataFrame(index=all_categories, columns=months)
# 填充数据
for month in months:
month_data = monthly_category_df[monthly_category_df['月份'] == month]
for _, row in month_data.iterrows:
category_monthly_compare.loc[row['交易分类'], month] = row['交易金额']
# 把空值填充为0(表示该月没有这个类别的支出)
category_monthly_compare = category_monthly_compare.fillna(0)
# 创建图表
plt.figure(figsize=(12, 7))
# 设置柱状图的位置
x = np.arange(len(all_categories))
width = 0.25 # 柱子的宽度
# 画3个月的柱状图
for i, month in enumerate(months):
plt.bar(x + i*width, category_monthly_compare[month], width, label=month, color=colors[i])
# 设置图表标签和标题
plt.xlabel('消费类别', fontsize=12)
plt.ylabel('支出金额(元)', fontsize=12)
plt.title('近3个月各消费类别支出对比', fontsize=16, fontweight='bold', pad=20)
plt.xticks(x + width, all_categories, rotation=45, ha='right') # 旋转类别标签,避免重叠
plt.legend # 显示图例
# 加网格线
plt.grid(True, alpha=0.3, axis='y')
# 保存图表
plt.tight_layout
plt.savefig('各类别跨月对比图.png', dpi=300)
plt.show
从对比图中能清晰看到:“餐饮美食”3个月都在1000元以上,“服饰鞋包”3月支出较高,“交通出行”每月基本稳定在400元左右。这样一来,就能精准找到“超支点”——3月服饰鞋包支出较多,下次购置衣物时可以提前规划需求,避免冲动消费。
分析数据不是目的,合理控制消费、增加储蓄才是!根据上面的分析结果,总结了3个超实用的消费调整技巧,亲测每月能多存500-800元:
1. 针对“最大消费类别”做预算
如果最大消费类别是餐饮,可以制定“每月餐饮预算1000元”的计划:工作日自己准备餐食(每天成本20元,每月440元),周末允许外出就餐2次(每次150元,每月300元),剩余260元作为应急(比如同事聚餐)。这样一来,餐饮支出能从1200元降到1000元,每月省200元。
2. 砍掉“隐形消费”
分析数据时若发现每月有100-200元花在“零食饮料”上(多为随手购买的饮品、小食),可以调整为“每周集中采购一次零食”,且只买必要物品,这部分支出能降到50元以内,每月又省150元。
3. 用“月度对比”监督消费
每月初用上述代码分析上个月的消费数据,检查是否有超支类别。比如若4月餐饮支出比预算多100元,可通过账单追溯原因(如多购买了几次饮品),次月针对性控制,逐步将支出稳定在预算内。
可能有人会问:“手动记账也能看消费类别,为什么要用Python?”其实Python的核心价值在于3点:
1. 效率高:手动统计3个月的消费类别需要1-2小时,用Python10分钟就能搞定,还能避免计算错误;
2. 更直观:图表能快速定位“消费重点”,比如之前误以为交通支出高,实际图表显示餐饮才是最大开销;
3. 易坚持:手动记账容易半途而废,用Python只需导出账单就能自动分析,形成“分析-调整-优化”的消费管理闭环。
最后,文中所有代码已整理成“个人消费分析脚本”,需要的朋友可以自行整理文中代码使用。下次发工资后,别再稀里糊涂花钱了,用Python分析一次消费记录,你会发现:合理规划下,每月能省下的钱比想象中多!
如果尝试了这个方法,欢迎在评论区分享你的“主要消费类别”是什么,也可以交流消费调整技巧,一起养成理性消费的习惯~