月薪5千也能存下钱 用Python搞定消费分析 3步看清钱花在哪

B站影视 港台电影 2025-08-16 15:33 2

摘要:你是不是也有过这样的困惑:明明没买什么贵重东西,工资到账没几天就见底了?打开电子账单,密密麻麻的消费记录看得头疼,根本不知道钱花在了哪里。别慌!今天就教你用Python的pandas和matplotlib,花10分钟搞定个人消费分析,从此告别“糊涂账”,轻松攒

你是不是也有过这样的困惑:明明没买什么贵重东西,工资到账没几天就见底了?打开电子账单,密密麻麻的消费记录看得头疼,根本不知道钱花在了哪里。别慌!今天就教你用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分析一次消费记录,你会发现:合理规划下,每月能省下的钱比想象中多!

如果尝试了这个方法,欢迎在评论区分享你的“主要消费类别”是什么,也可以交流消费调整技巧,一起养成理性消费的习惯~​​​​​

来源:绿叶菜

相关推荐