Python LLM 数据分析 最后更新:

Personal Finance个人收支数据管理

Personal Finance 是一款面向个人的财务数据管理与分析工具,支持对导入的支付宝、微信账单自动合并、清洗与分类标注。

项目目标:用最少的人工介入,完成个人收支流水的自动抓取、清洗和分类,为趋势分析与预算管理提供干净的数据基础。

项目概览

本项目聚焦于个人支付数据的自动化处理,涵盖导入账单的合并、数据清洗、智能分类。通过 Python 脚本与 DeepSeek 结合,极大提升记账效率和数据利用价值。

Why

  • 手工记账效率低且难以持续
  • 支付宝/微信账单格式不统一,分析困难
  • 软件自动分类不够准确和个性化

What

  • 自动合并导入的支付宝、微信账单
  • 自动清洗并统一数据格式
  • DeepSeek智能分类与标签自动化

系统架构

  1. 数据导入:支持支付宝、微信账单 CSV 文件批量导入。
  2. 数据清洗:自动对齐字段、去重、格式标准化。
  3. 合并与去重:账单合并,按日期、金额等规则去重。
  4. 智能分类:调用 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

开发计划

参考资源