收集自己的每日消费金额,统计每周消费峰值,输出消费高峰日,并给出省钱建议。

49 阅读5分钟

完整输出一个可运行的 Python 项目示例,用于记录每日消费、统计每周消费峰值、输出消费高峰日并给出省钱建议。

  1. 实际应用场景描述

在日常生活中,很多人习惯用手机支付或现金消费,但往往缺乏对消费数据的系统化管理。

例如:

  • 月底发现钱花光了,却不知道花在哪里。
  • 想控制预算,但不知道哪几天花钱最多。
  • 没有数据支撑,难以制定合理的省钱计划。

本程序基于大数据与智能管理课程中的数据采集、统计分析与可视化方法,帮助用户记录每日消费、自动统计每周消费峰值、识别消费高峰日,并基于规则给出个性化省钱建议。

  1. 痛点分析
  • 数据分散:消费记录可能分布在微信、支付宝、银行卡等多个平台。
  • 缺乏统计:无法快速知道一周内哪天花钱最多。
  • 无建议支持:即使知道花得多,也不知道如何改进。
  • 手动记录麻烦:传统记账方式容易中断,数据不完整。
  1. 核心逻辑讲解

  2. 数据采集:用户输入每日消费金额(可扩展为从支付平台 API 导入)。

  3. 数据存储:用列表或 CSV 文件存储日期和消费额。

  4. 周统计:按自然周(周一至周日)分组,计算每周总消费。

  5. 峰值检测:找出每周消费最高的一天。

  6. 建议生成:根据消费模式(如餐饮占比高、娱乐支出多)给出省钱建议。

  7. 代码模块化

项目结构

daily_expense_tracker/ ├── main.py ├── expense_data.py ├── analyzer.py ├── advisor.py └── README.md

"expense_data.py"

消费数据模块

import csv from datetime import datetime, timedelta

DATA_FILE = "expenses.csv"

def init_data_file(): """初始化 CSV 文件""" try: with open(DATA_FILE, 'x', newline='') as f: writer = csv.writer(f) writer.writerow(["date", "amount"]) except FileExistsError: pass

def add_expense(date_str, amount): """添加一条消费记录""" with open(DATA_FILE, 'a', newline='') as f: writer = csv.writer(f) writer.writerow([date_str, amount])

def load_expenses(): """加载所有消费记录""" expenses = [] try: with open(DATA_FILE, 'r') as f: reader = csv.DictReader(f) for row in reader: expenses.append({ "date": datetime.strptime(row["date"], "%Y-%m-%d"), "amount": float(row["amount"]) }) except FileNotFoundError: pass return expenses

"analyzer.py"

消费分析模块

from collections import defaultdict from datetime import datetime, timedelta

def get_week_start(date): """获取给定日期所在周的周一""" return date - timedelta(days=date.weekday())

def analyze_weekly_peaks(expenses): """ 分析每周消费峰值 :param expenses: list of dicts with 'date' and 'amount' :return: dict, key为周开始日期字符串,value为该周的消费峰值日及金额 """ weekly_data = defaultdict(lambda: defaultdict(float))

for exp in expenses:
    week_start = get_week_start(exp["date"]).strftime("%Y-%m-%d")
    day_str = exp["date"].strftime("%Y-%m-%d")
    weekly_data[week_start][day_str] += exp["amount"]

peaks = {}
for week, days in weekly_data.items():
    peak_day = max(days.items(), key=lambda x: x[1])
    peaks[week] = {
        "peak_date": peak_day[0],
        "peak_amount": round(peak_day[1], 2)
    }
return peaks

"advisor.py"

省钱建议模块

def generate_advice(peaks, expenses): """ 根据消费峰值生成建议 :param peaks: 每周峰值数据 :param expenses: 所有消费记录 :return: list of advice strings """ advice_list = []

# 计算餐饮类消费占比(假设金额<100为餐饮,>200为大额)
food_count = sum(1 for e in expenses if e["amount"] < 100)
total_count = len(expenses)
if total_count > 0 and food_count / total_count > 0.5:
    advice_list.append("餐饮消费占比较高,建议减少外卖频率,尝试自己做饭。")

# 检查是否有连续多天高消费
high_spend_days = [e["date"].strftime("%Y-%m-%d") for e in expenses if e["amount"] > 200]
if len(high_spend_days) >= 3:
    advice_list.append("检测到多天高额消费,建议提前规划大额支出,避免冲动购物。")

if not advice_list:
    advice_list.append("消费较为均衡,继续保持!")

return advice_list

"main.py"

主程序入口

from expense_data import init_data_file, add_expense, load_expenses from analyzer import analyze_weekly_peaks from advisor import generate_advice

def main(): init_data_file()

# 示例数据录入(实际应用中可改为用户输入或API导入)
sample_data = [    ("2026-01-12", 80),    ("2026-01-13", 250),    ("2026-01-14", 90),    ("2026-01-15", 300),    ("2026-01-16", 70),    ("2026-01-17", 60),    ("2026-01-18", 400)]

for date_str, amount in sample_data:
    add_expense(date_str, amount)

expenses = load_expenses()
peaks = analyze_weekly_peaks(expenses)

print("=== 每周消费峰值 ===")
for week, data in peaks.items():
    print(f"周开始于 {week}, 消费高峰日: {data['peak_date']}, 金额: ¥{data['peak_amount']}")

advice = generate_advice(peaks, expenses)
print("\n=== 省钱建议 ===")
for a in advice:
    print("- " + a)

if name == "main": main()

  1. README.md

Daily Expense Tracker

一个基于 Python 的个人消费分析工具,可统计每周消费峰值、识别高峰日并给出省钱建议。

功能

  • 记录每日消费金额
  • 按周统计消费峰值
  • 输出消费高峰日
  • 基于规则生成省钱建议

使用方法

  1. 克隆或下载本项目
  2. 确保已安装 Python 3.x
  3. 运行:

bash

python main.py

项目结构

  • main.py:主程序入口
  • expense_data.py:数据读写
  • analyzer.py:消费分析
  • advisor.py:建议生成

扩展方向

  • 接入支付平台 API 自动导入数据
  • 增加分类统计(餐饮、交通、娱乐等)
  • 使用 Matplotlib 绘制消费趋势图
  1. 使用说明

  2. 运行 "main.py" 会自动创建 "expenses.csv" 并写入示例数据。

  3. 可修改 "sample_data" 为真实消费记录。

  4. 程序会输出每周消费高峰日及金额,并打印省钱建议。

  5. 后续可扩展为交互式输入或图形界面。

  6. 核心知识点卡片

知识点 说明 CSV 文件操作 用 "csv" 模块实现数据持久化 日期处理 使用 "datetime" 和 "timedelta" 计算周起始日 分组统计 用 "defaultdict" 按周和日分组消费数据 规则引擎 基于简单条件生成建议 模块化设计 数据、分析、建议分离,便于维护 大数据思维 从日常小数据中发现规律,指导行为优化

  1. 总结

本项目将大数据与智能管理课程中的数据采集、统计分析、规则决策方法应用于个人消费管理,解决了消费记录分散、缺乏统计、无建议支持的痛点。

通过模块化设计和清晰的规则引擎,用户可以快速识别消费高峰并获得个性化省钱建议。未来可结合机器学习预测消费趋势,并接入真实支付数据,打造完整的智能理财助手。

如果你愿意,可以加上 Matplotlib 可视化每周消费柱状图,让数据更直观。 利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我!