完整输出一个可运行的 Python 项目示例,用于记录每日消费、统计每周消费峰值、输出消费高峰日并给出省钱建议。
- 实际应用场景描述
在日常生活中,很多人习惯用手机支付或现金消费,但往往缺乏对消费数据的系统化管理。
例如:
- 月底发现钱花光了,却不知道花在哪里。
- 想控制预算,但不知道哪几天花钱最多。
- 没有数据支撑,难以制定合理的省钱计划。
本程序基于大数据与智能管理课程中的数据采集、统计分析与可视化方法,帮助用户记录每日消费、自动统计每周消费峰值、识别消费高峰日,并基于规则给出个性化省钱建议。
- 痛点分析
- 数据分散:消费记录可能分布在微信、支付宝、银行卡等多个平台。
- 缺乏统计:无法快速知道一周内哪天花钱最多。
- 无建议支持:即使知道花得多,也不知道如何改进。
- 手动记录麻烦:传统记账方式容易中断,数据不完整。
-
核心逻辑讲解
-
数据采集:用户输入每日消费金额(可扩展为从支付平台 API 导入)。
-
数据存储:用列表或 CSV 文件存储日期和消费额。
-
周统计:按自然周(周一至周日)分组,计算每周总消费。
-
峰值检测:找出每周消费最高的一天。
-
建议生成:根据消费模式(如餐饮占比高、娱乐支出多)给出省钱建议。
-
代码模块化
项目结构
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()
- README.md
Daily Expense Tracker
一个基于 Python 的个人消费分析工具,可统计每周消费峰值、识别高峰日并给出省钱建议。
功能
- 记录每日消费金额
- 按周统计消费峰值
- 输出消费高峰日
- 基于规则生成省钱建议
使用方法
- 克隆或下载本项目
- 确保已安装 Python 3.x
- 运行:
bash
python main.py
项目结构
main.py:主程序入口expense_data.py:数据读写analyzer.py:消费分析advisor.py:建议生成
扩展方向
- 接入支付平台 API 自动导入数据
- 增加分类统计(餐饮、交通、娱乐等)
- 使用 Matplotlib 绘制消费趋势图
-
使用说明
-
运行 "main.py" 会自动创建 "expenses.csv" 并写入示例数据。
-
可修改 "sample_data" 为真实消费记录。
-
程序会输出每周消费高峰日及金额,并打印省钱建议。
-
后续可扩展为交互式输入或图形界面。
-
核心知识点卡片
知识点 说明 CSV 文件操作 用 "csv" 模块实现数据持久化 日期处理 使用 "datetime" 和 "timedelta" 计算周起始日 分组统计 用 "defaultdict" 按周和日分组消费数据 规则引擎 基于简单条件生成建议 模块化设计 数据、分析、建议分离,便于维护 大数据思维 从日常小数据中发现规律,指导行为优化
- 总结
本项目将大数据与智能管理课程中的数据采集、统计分析、规则决策方法应用于个人消费管理,解决了消费记录分散、缺乏统计、无建议支持的痛点。
通过模块化设计和清晰的规则引擎,用户可以快速识别消费高峰并获得个性化省钱建议。未来可结合机器学习预测消费趋势,并接入真实支付数据,打造完整的智能理财助手。
如果你愿意,可以加上 Matplotlib 可视化每周消费柱状图,让数据更直观。 利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我!