基于 Streamlit 构建的个人信用卡消费数据分析工具
支持多维度消费分析、趋势追踪和 AI 智能洞察
这是一个开源的个人财务管理工具,帮助你:
- 📊 可视化消费数据 - 直观了解每月消费趋势
- 🏷️ 智能分类统计 - 自动识别商户类别,分析消费结构
- 🤖 AI 智能洞察 - 基于消费数据生成个性化分析建议
- 📈 多维度分析 - 趋势、类别、商户、工作日模式等
本项目支持从 Outlook PST 文件中自动提取招商银行信用卡账单数据,或直接使用 CSV 格式的交易记录进行分析。
- 核心指标一目了然:总消费额、交易笔数、月均消费、日均消费
- 月度消费趋势可视化
- 各卡消费分布对比
- 月度消费趋势折线图(支持同比/环比)
- 环比增长率分析
- 季节性消费模式识别
- 工作日/周末消费模式对比
- 日消费热力图
- 高消费日 TOP20 榜单
- 月度明细展开功能
- 智能商户分类:支持 10+ 消费类别(餐饮、交通、购物、生活等)
- 基于关键词的自动分类
- 各类别消费占比(饼图/柱状图)
- TOP 商户排行
- 类别特征对比分析
- 各类别月度趋势追踪
- 按类别查看 TOP 商户
- 预设分析模板:
- 消费模式分析
- 节省建议
- 趋势解读
- 月度对比
- 自定义问题分析(自然语言问答)
- 对话式交互界面
- 对话历史管理
- 对话记录导出(TXT/Markdown)
git clone https://github.com/your-username/SpendAnalysis.git
cd SpendAnalysispip install -r requirements.txt如果你有招商银行信用卡账单的 Outlook PST 文件:
# 安装 pff-tools(用于解析 PST 文件)
sudo apt-get install pff-tools
# 导出 PST 文件
pffexport -t data/temp_export -f text data/your_email.pst
# 运行提取脚本
python tools/extract_credit_card_bills.py准备两个 CSV 文件,放置在 data/ 目录下:
credit_card_transactions.csv(必需):
card_number,statement_date,transaction_date,description,amount
5006,2025-02-01,2024-02-13,预约还款,19163.39
5006,2025-02-01,2024-02-09,支付宝-得物,959.00credit_card_bills.csv(可选):
bank,card_type,card_number,statement_date,new_balance,transactions_count
招商银行,标准信用卡,5006,2025-02-01,27617.95,197复制示例配置文件并填入你的 API Key:
cp .env.example .env编辑 .env 文件:
# LLM API(兼容 OpenAI 接口格式,用于 AI 分类和洞察功能)
LLM_API_KEY=your_api_key_here
LLM_BASE_URL=https://api.openai.com/v1 # 或其他兼容接口地址
LLM_MODEL=gpt-4o-mini # 使用的模型名称# 使用启动脚本(推荐)
./scripts/run.sh
# 或直接运行
streamlit run app.py访问 http://localhost:8501 查看看板
- 筛选数据:使用侧边栏的卡号筛选器,可单选或多选卡片
- 交互图表:鼠标悬停查看详细数值,支持缩放和平移
- 页面切换:点击侧边栏导航切换不同分析页面
- 配置 Anthropic API Key(在
.env文件或侧边栏) - 选择预设模板或输入自定义问题
- AI 会基于当前筛选的数据进行分析
- 支持导出对话记录
编辑 config.py 中的 MERCHANT_KEYWORDS:
MERCHANT_KEYWORDS = {
"餐饮": ["美团", "饿了么", "星巴克", ...],
"交通": ["滴滴", "特斯拉", "充电", ...],
# 添加你自己的类别和关键词
}展示核心消费指标、月度趋势和各卡分布情况。
深度分析消费趋势,包括季节性模式、工作日对比、高消费日排行等。
智能分类统计,查看各类别消费占比和 TOP 商户。
与 AI 对话,获取个性化消费分析和建议。
SpendAnalysis/
├── app.py # 主应用入口(数据概览)
├── config.py # 配置文件(主题、分类关键词、LLM配置)
├── requirements.txt # 依赖列表
├── .env.example # 环境变量示例
├── data/
│ ├── credit_card_bills.csv # 账单数据
│ └── credit_card_transactions.csv # 交易数据
├── pages/
│ ├── 02_Trends.py # 趋势分析页面
│ ├── 03_Categories.py # 类别分析页面
│ └── 04_Insights.py # AI洞察页面
├── utils/
│ ├── __init__.py # 模块导出
│ ├── data_loader.py # 数据加载模块
│ ├── analyzer.py # 数据分析模块
│ ├── classifier.py # 商户分类模块
│ └── llm_client.py # LLM调用模块
├── tools/
│ └── extract_credit_card_bills.py # 数据提取工具
├── scripts/
│ ├── init.sh # 初始化脚本
│ ├── run.sh # 启动脚本
│ └── extract_bills.sh # 数据提取脚本
└── README.md # 本文件
| 组件 | 技术 | 说明 |
|---|---|---|
| 前端框架 | Streamlit | 快速构建数据应用 |
| 数据处理 | Pandas | 数据清洗和分析 |
| 可视化 | Plotly | 交互式图表 |
| 配置管理 | python-dotenv | 环境变量管理 |
项目支持多种方式配置 API Key:
配置优先级:UI 输入 > .env 文件 > 环境变量
修改 config.py 中的 THEME 和 COLOR_PALETTE:
THEME = {
"primaryColor": "#FF6B6B",
"backgroundColor": "#0E1117",
# ...
}- 支持更多银行数据导入(工商、建设、农业等)
- 支持支付宝/微信账单导入
- 预算管理功能
- 消费预警功能
- 数据导出功能(Excel/PDF 报告)
- 云端部署支持
- 多用户支持
欢迎贡献代码、报告问题或提出新功能建议!
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
Q: 数据显示不完整? A: 检查 CSV 文件编码是否为 UTF-8,确保列名正确
Q: AI 功能无法使用? A: 确认已输入有效的 Anthropic API Key
Q: 分类不准确?
A: 在 config.py 中添加更多关键词到对应类别
Q: 如何只分析特定卡片? A: 使用侧边栏的卡号筛选器
Q: 可以分析其他银行的账单吗? A: 目前仅支持招商银行。你可以提供 CSV 格式的交易数据进行分析,或贡献代码支持更多银行。
本项目采用 MIT License 开源协议。
本项目使用 Claude Code 端到端完成开发 - 从需求分析、代码实现到文档编写,全程由 AI 辅助完成。
如果这个项目对你有帮助,请给一个 ⭐️ Star
Made with ❤️ by markson14