收集自己的每日消费类型(餐饮,购物,娱乐),统计每周各类型的消费时长,输出消费结构优化建议

1. 实际应用场景描述

场景

某职场人希望精细化管理个人财务,每天记录消费类型(餐饮、购物、娱乐等)、金额及对应的平均每小时消费额(例如:餐饮每小时50元,购物每小时100元),从而计算消费时长,并按周统计各类型消费时长,分析消费结构,获得优化建议。

痛点

- 手动记账无法直观看出时间与金钱的关系

- 难以量化不同消费类型的“时间成本”

- 缺乏自动化分析,依赖主观判断

2. 核心逻辑讲解

1. 输入:日期、消费类型、消费金额、平均每小时消费额

2. 计算:

- 消费时长 = 消费金额 / 平均每小时消费额

- 按周汇总各类型消费时长

3. 分析:找出占比最高的消费类型

4. 输出:每周消费时长报告与优化建议

3. 代码模块化设计

我们将代码分为:

-

"data_loader.py":数据加载模块

-

"calculation.py":消费时长计算模块

-

"analysis.py":按周汇总分析模块

-

"recommendation.py":优化建议生成模块

-

"main.py":主程序入口

3.1

"data_loader.py"

# data_loader.py

import json

def load_daily_consumption(file_path="daily_consumption.json"):

"""

从JSON文件加载每日消费记录

格式: [{"date": "2024-06-01", "type": "餐饮", "amount": 100, "hourly_rate": 50}, ...]

"""

try:

with open(file_path, "r", encoding="utf-8") as f:

data = json.load(f)

return data

except FileNotFoundError:

print(f"文件 {file_path} 未找到,使用示例数据")

return [

{"date": "2024-06-01", "type": "餐饮", "amount": 100, "hourly_rate": 50},

{"date": "2024-06-01", "type": "购物", "amount": 200, "hourly_rate": 100},

{"date": "2024-06-02", "type": "餐饮", "amount": 150, "hourly_rate": 50},

{"date": "2024-06-03", "type": "娱乐", "amount": 80, "hourly_rate": 40},

{"date": "2024-06-04", "type": "购物", "amount": 300, "hourly_rate": 100}

]

3.2

"calculation.py"

# calculation.py

def compute_duration(records):

"""

计算每条记录的消费时长(小时)

:param records: list of dict

:return: list of dict with duration added

"""

for r in records:

if r["hourly_rate"] > 0:

r["duration"] = r["amount"] / r["hourly_rate"]

else:

r["duration"] = 0

return records

3.3

"analysis.py"

# analysis.py

from collections import defaultdict

from datetime import datetime

def group_by_week(records):

"""

按周汇总各类型消费时长

:param records: list of dict with date and duration

:return: dict {week_number: {type: total_duration}}

"""

weekly_data = defaultdict(lambda: defaultdict(float))

for r in records:

date_obj = datetime.strptime(r["date"], "%Y-%m-%d")

week_num = date_obj.isocalendar()[1] # ISO周数

weekly_data[week_num][r["type"]] += r["duration"]

return weekly_data

3.4

"recommendation.py"

# recommendation.py

def suggest_optimization(weekly_data):

"""

根据消费结构生成优化建议

"""

suggestions = []

for week, types in weekly_data.items():

total = sum(types.values())

if total == 0:

continue

max_type, max_duration = max(types.items(), key=lambda x: x[1])

ratio = max_duration / total

if ratio > 0.6:

suggestions.append(

f"第{week}周「{max_type}」消费占比过高({ratio:.1%}),建议适当减少此类支出。"

)

return suggestions

3.5

"main.py"

# main.py

from data_loader import load_daily_consumption

from calculation import compute_duration

from analysis import group_by_week

from recommendation import suggest_optimization

def main():

print("=== 每日消费记录分析与优化建议系统 ===")

records = load_daily_consumption()

records = compute_duration(records)

weekly_data = group_by_week(records)

print("\n📊 每周消费时长统计:")

for week, types in weekly_data.items():

print(f"第 {week} 周:")

for ctype, dur in types.items():

print(f" {ctype}: {dur:.2f} 小时")

advice_list = suggest_optimization(weekly_data)

print("\n💡 消费结构优化建议:")

if advice_list:

for adv in advice_list:

print(f" - {adv}")

else:

print(" 当前消费结构较为均衡,继续保持!")

if __name__ == "__main__":

main()

4. README.md

# 每日消费记录分析与优化建议系统

## 项目简介

基于Python的个人消费分析工具,帮助统计每周各类型消费时长并提供优化建议。

## 功能

- 导入每日消费记录(JSON格式)

- 计算消费时长

- 按周统计各类型消费时长

- 生成消费结构优化建议

## 安装与使用

1. 确保已安装 Python 3.7+

2. 准备 `daily_consumption.json` 数据文件(或使用内置示例数据)

3. 运行 `python main.py`

## 数据格式示例 (daily_consumption.json)

json

[

{"date": "2024-06-01", "type": "餐饮", "amount": 100, "hourly_rate": 50}

]

## 模块说明

- `data_loader.py`: 数据加载

- `calculation.py`: 消费时长计算

- `analysis.py`: 按周汇总

- `recommendation.py`: 建议生成

- `main.py`: 主程序

5. 使用说明

1. 创建

"daily_consumption.json" 文件,按示例格式填写每日消费记录

2. 运行:

python main.py

3. 查看控制台输出的每周消费时长及优化建议

6. 核心知识点

知识点 说明

JSON数据处理 读写结构化数据

datetime模块 解析日期并计算ISO周数

defaultdict 高效分组统计

浮点数运算 计算消费时长

模块化设计 便于维护与扩展

条件判断与阈值分析 业务规则驱动建议

大数据预处理 真实场景可用Pandas处理多年消费数据

7. 总结

本项目通过模块化Python编程,解决了个人消费分析的痛点:

- 自动化:一键计算消费时长

- 可视化:按周展示消费结构

- 智能化:自动生成优化建议

未来可结合机器学习预测消费趋势,并利用可视化库(Matplotlib/Plotly)生成消费结构饼图/柱状图,打造真正的个人财务智能管家。

如果你愿意,可以把这个系统升级成带GUI的桌面应用(Tkinter/PyQt)或者Web版(Flask + Chart.js),并增加预算控制与预警功能,让财务管理更全面。

利用AI高效解决实际问题,如果你觉得这个工具好,欢迎关注我!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1178399.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何借助AI写好论文中的“前人工作”与“现有问题”?用ChatGPT提供全新思路颠覆认知,实测有效,直接使用

我们在写学术论文时,“前人工作”和“现有问题”这两个部分实际上至关重要,前者可以为我们的研究提供夯实的基础,后者则可以借机展示研究价值和创新点。怎么写好这两部分,既要准确反映前人成果,又要凸显研究意义以及创新呢? 七哥经常指导同仁写学术论文,总结出一些借助…

散热效率提升80%!3D VC如何解决AI算力“发热危机”?

🎓作者简介:科技自媒体优质创作者 🌐个人主页:莱歌数字-CSDN博客 💌公众号:莱歌数字(B站同名) 📱个人微信:yanshanYH 211、985硕士,从业16年 从…

leetcode 884. Uncommon Words from Two Sentences 两句话中的不常见单词

Problem: 884. Uncommon Words from Two Sentences 两句话中的不常见单词 解题过程 统计每个单词的频次&#xff0c;1的就是答案 Code class Solution { public:unordered_map<string, int> ump;vector<string> uncommonFromSentences(string s1, string s2) {s1 …

vue.js中如何集成WebUploader实现大文件分片上传源码?

北京码农の10G文件上传奇遇&#xff1a;在胡同里写信创代码 各位好&#xff0c;我是老张&#xff0c;北京中关村某软件公司“脱发攻坚队”队长。最近接了个政府项目&#xff0c;要求上传10G文件&#xff0c;还必须兼容信创环境并提供全套文档——这活儿就像在故宫里装Wi-Fi&am…

SpringAI实践-MCP使用

大多数Agent都不会仅仅满足于只回答问题,它们还需要理解用户意图后,需要做一些真正执行的操作。Agent应用中,调用的大模型相当于Agent的大脑,负责推理,而集成的MCP Server,则相当于真正的“手”做一些执行操作。 …

leetcode 883. Projection Area of 3D Shapes 三维形体投影面积-耗时100

Problem: 883. Projection Area of 3D Shapes 三维形体投影面积 解题过程 耗时100%&#xff0c;xy投影数!0的数量&#xff0c;另外两侧投影拿到行最大值、列最大值&#xff0c;累加 Code class Solution { public:int projectionArea(vector<vector<int>>& gr…

400w微型逆变器, 基于stm32g474实现 设计方案,不是成品 带有源代码、原理图(AD...

400w微型逆变器, 基于stm32g474实现 设计方案&#xff0c;不是成品 带有源代码、原理图(AD)、PCB(AD)一、项目概述 本项目是基于STM32G474微控制器实现的400W微型逆变器控制系统&#xff0c;通过精准的硬件外设配置与软件逻辑设计&#xff0c;实现直流到交流的电能转换&#xf…

基于SpringBoot的粮仓管理系统毕设

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于SpringBoot框架的粮仓管理系统&#xff0c;以满足现代粮仓管理的高效、便捷和智能化需求。具体研究目的如下&#xff1a; 首先&…

也许是集合幂级数

这里会选一些集合幂级数题,但是作者至今不知道集合幂级数是什么东西,所以可能做法不是集合幂级数()。 P13275 好像是区分金银的题? 感觉比省选的岁月简单啊,不知道是不是这个题不是在图上的缘故。 就首先,你考虑…

【后端】【Java】一文详解Spring Boot RESTful 接口统一返回与异常处理实践 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Spring Boot 3 + GraalVM Native Image 原理:从启动 10秒 到 0.05秒,AOT 编译到底干了什么? - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2026年知名的翻译企业,天使翻译公司口碑与实力并存 - 工业品牌热点

2026年全球化商务与跨文化交流持续升温,专业翻译服务已成为企业拓展国际市场、个人处理跨境事务的核心支撑。无论是法律合同的精准转译、国际会议的同传保障,还是音视频内容的本地化适配,优质翻译服务商的专业能力直…

基于SpringBoot的进销存系统毕设

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于SpringBoot框架的进销存系统&#xff0c;以满足现代企业对库存管理、销售管理和采购管理的需求。具体研究目的如下&#xff1a;提高…

SpringAI实践-MCP使用与创建

大多数Agent都不会仅仅满足于只回答问题,它们还需要理解用户意图后,需要做一些真正执行的操作。Agent应用中,调用的大模型相当于Agent的大脑,负责推理,而集成的MCP Server,则相当于真正的“手”做一些执行操作。 …

Python、CSharp、Go、Nextjs,不同框架的性能到底差多少?

前言 不知不觉居然12月了,最近琐事太多,产出并不高,继续整理一下近期的一些笔记吧。 上次我对部署 Django 框架时用的不同服务器进行对比测试,详见:不同Django服务器和部署方式的性能调研 在探索的过程中,我还对…

芯片制造企业如何利用百度WEB编辑器处理PDF技术文档?

河南软件工程大三狗的CMS升级记&#xff1a;从Word粘贴到Latex公式&#xff0c;99元预算的极限操作&#xff01; 一、项目背景&#xff1a;穷学生的倔强 作为一枚即将毕业的大三狗&#xff0c;自己撸了个CMS新闻管理系统&#xff0c;但后台编辑器太挫——从Word复制内容粘贴进…

2025年值得关注的高温塑料回收厂家有哪些?,排行前列的高温塑料回收精选国内优质品牌榜单 - 品牌推荐师

随着全球高温塑料应用场景的持续扩展,工业生产中产生的PEEK、PI、PTFE等特种塑料废弃物规模激增。据行业数据显示,2024年国内高温塑料回收市场规模已突破120亿元,但企业间技术水平、服务能力参差不齐,导致采购方在…

基于SpringBoot框架的社区网格化管理平台

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在构建一个基于SpringBoot框架的社区网格化管理平台&#xff0c;以实现社区资源的优化配置、提高社区管理效率、提升居民生活质量。具体研究目的如下&am…

2026年不锈钢EP管供应企业推荐,南通地区十大厂家有哪些? - 工业品牌热点

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家不锈钢EP管领域标杆企业,为半导体、新能源、医药等对流体输送纯度有严苛要求的行业企业选型提供客观依据,助力精准匹配适配的不锈钢EP管供应伙伴。 TOP1 推荐…

基于SpringBoot的社区疫情管理系统毕业设计源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于SpringBoot框架的社区疫情管理系统&#xff0c;以满足当前疫情防控工作的实际需求。具体研究目的如下&#xff1a;构建一个高效、可…