Personal Finance个人收支数据管理
Personal Finance 是一款面向个人的财务数据管理与分析工具,支持对导入的支付宝、微信账单自动合并、清洗与分类标注。
项目目标:用最少的人工介入,完成个人收支流水的自动抓取、清洗和分类,为趋势分析与预算管理提供干净的数据基础。
项目概览
本项目聚焦于个人支付数据的自动化处理,涵盖导入账单的合并、数据清洗、智能分类。通过 Python 脚本与 DeepSeek 结合,极大提升记账效率和数据利用价值。
Why
- 手工记账效率低且难以持续
- 支付宝/微信账单格式不统一,分析困难
- 软件自动分类不够准确和个性化
What
- 自动合并导入的支付宝、微信账单
- 自动清洗并统一数据格式
- DeepSeek智能分类与标签自动化
系统架构
- 数据导入:支持支付宝、微信账单 CSV 文件批量导入。
- 数据清洗:自动对齐字段、去重、格式标准化。
- 合并与去重:账单合并,按日期、金额等规则去重。
- 智能分类:调用 DeepSeek 自动识别消费类别,并支持定制分类标签。
技术栈与工具
核心技术
- Python 3.8+
- Pandas
- DeepSeek API
开发工具
- uv 包管理
- Git 版本管理
- Streamlit/BI 可视化(可扩展)
核心功能伪代码
以下为项目核心模块的功能伪代码:
update.py - 数据更新与合并
# 支付宝数据处理
FUNCTION process_alipay():
LOAD CSV files from Alipay directory
RENAME columns to standard format
CLEAN data: remove unwanted columns, format dates
MAP income/expense values (0, -1, 1)
EXPORT to unified CSV
# 微信数据处理
FUNCTION process_wechat():
LOAD CSV files from Wechat directory
RENAME columns to standard format
CLEAN data: format amounts, add missing columns
MAP income/expense values
EXPORT to unified CSV
# 数据合并
FUNCTION concat_and_sort():
LOAD Alipay, Wechat and previous data
MERGE all datasets
SORT by date and time
REMOVE duplicates
EXPORT final merged dataset
clean.py - 数据清洗与分类映射
# 类别映射函数
FUNCTION map_category(category):
FOR each regex pattern in predefined map:
IF pattern matches category:
RETURN mapped value
RETURN original category
# 主清洗流程
FUNCTION clean_and_merge():
LOAD merged dataset
CONVERT data types: dates, amounts, categories
MERGE duplicate transactions (with/without time)
APPLY category mapping using regex patterns
REMOVE invalid characters and empty values
EXPORT cleaned dataset
label.py - 智能分类标注
# API调用函数
FUNCTION deepseek_label(prompt, api_key):
SEND prompt to DeepSeek API
EXTRACT classification result
RETURN label
# 提示词生成
FUNCTION row_to_prompt(transaction_row):
FORMAT transaction details into natural language
INCLUDE predefined category options
RETURN formatted prompt
# 并发处理
FUNCTION process_all_transactions():
LOAD cleaned data and existing labels
IDENTIFY unlabeled transactions
USING ThreadPoolExecutor:
FOR each unlabeled transaction:
GENERATE prompt from transaction data
CALL deepseek_label() to get classification
UPDATE transaction with new label
PERIODICALLY save progress
EXPORT fully labeled dataset
开发计划
- ✅ 支付宝/微信账单自动合并与清洗
- ✅ DeepSeek 自动分类与标签个性化
- ⏳ 增加更多数据分析与可视化功能
- ⏳ 支付宝/微信账单定期自动同步
- 📝 优化交互体验