budget-analyzer by dkyazzentwatwa/chatgpt-skills
npx skills add https://github.com/dkyazzentwatwa/chatgpt-skills --skill budget-analyzer用于个人理财和商业预算的综合支出分析工具。
from budget_analyzer import BudgetAnalyzer
analyzer = BudgetAnalyzer()
# 加载交易数据
analyzer.load_csv("transactions.csv",
date_col="date",
amount_col="amount",
description_col="description")
# 分析支出
summary = analyzer.analyze()
print(summary)
# 获取类别细分
categories = analyzer.by_category()
print(categories)
# 生成报告
analyzer.generate_report("budget_report.pdf")
# 基础分析
python budget_analyzer.py --input transactions.csv --date date --amount amount
# 使用自定义类别
python budget_analyzer.py --input data.csv --categories custom_categories.json
# 比较两个时间段
python budget_analyzer.py --input data.csv --compare "2024-01" "2024-02"
# 生成 PDF 报告
python budget_analyzer.py --input data.csv --report report.pdf
# 设置预算目标
python budget_analyzer.py --input data.csv --budget budget.json --report report.pdf
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
date,amount,description,category
2024-01-15,45.99,Amazon Purchase,Shopping
2024-01-16,12.50,Starbucks,Food & Dining
2024-01-17,150.00,Electric Company,Utilities
{
"Food & Dining": ["starbucks", "mcdonalds", "restaurant", "uber eats"],
"Transportation": ["uber", "lyft", "gas station", "shell"],
"Shopping": ["amazon", "walmart", "target"],
"Utilities": ["electric", "water", "gas", "internet"]
}
{
"Food & Dining": 500,
"Transportation": 200,
"Shopping": 300,
"Utilities": 250,
"Entertainment": 150
}
class BudgetAnalyzer:
def __init__(self)
# 数据加载
def load_csv(self, filepath: str, date_col: str, amount_col: str,
description_col: str = None, category_col: str = None) -> 'BudgetAnalyzer'
def load_dataframe(self, df: pd.DataFrame) -> 'BudgetAnalyzer'
# 分类
def set_categories(self, categories: Dict[str, List[str]]) -> 'BudgetAnalyzer'
def auto_categorize(self) -> 'BudgetAnalyzer'
# 分析
def analyze(self) -> Dict # 完整摘要
def by_category(self) -> pd.DataFrame
def by_month(self) -> pd.DataFrame
def by_day_of_week(self) -> pd.DataFrame
def top_expenses(self, n: int = 10) -> pd.DataFrame
def recurring_expenses(self) -> pd.DataFrame
# 比较
def compare_periods(self, period1: str, period2: str) -> Dict
def year_over_year(self) -> pd.DataFrame
# 预算
def set_budget(self, budget: Dict[str, float]) -> 'BudgetAnalyzer'
def budget_vs_actual(self) -> pd.DataFrame
def budget_alerts(self) -> List[Dict]
# 洞察
def get_recommendations(self) -> List[str]
def spending_score(self) -> Dict
# 可视化
def plot_categories(self, output: str) -> str
def plot_trends(self, output: str) -> str
def plot_budget_comparison(self, output: str) -> str
# 导出
def generate_report(self, output: str, format: str = "pdf") -> str
def to_csv(self, output: str) -> str
summary = analyzer.analyze()
# 返回:
# {
# "total_spent": 2500.00,
# "transaction_count": 45,
# "date_range": {"start": "2024-01-01", "end": "2024-01-31"},
# "average_transaction": 55.56,
# "largest_expense": {"amount": 500, "description": "Rent"},
# "categories": {"Food": 450, "Transport": 200, ...}
# }
categories = analyzer.by_category()
# 返回 DataFrame:
# category | amount | percentage | count
# Food & Dining | 450.00 | 18.0% | 15
# Transportation | 200.00 | 8.0% | 8
# ...
monthly = analyzer.by_month()
# 返回 DataFrame:
# month | total | avg_transaction | count
# 2024-01 | 2500.00 | 55.56 | 45
# 2024-02 | 2800.00 | 60.87 | 46
comparison = analyzer.compare_periods("2024-01", "2024-02")
# 返回:
# {
# "period1_total": 2500.00,
# "period2_total": 2800.00,
# "difference": 300.00,
# "percent_change": 12.0,
# "category_changes": {
# "Food": {"change": 50, "percent": 11.1},
# ...
# }
# }
analyzer.set_budget({
"Food & Dining": 500,
"Transportation": 200,
"Shopping": 300
})
comparison = analyzer.budget_vs_actual()
# 返回 DataFrame:
# category | budget | actual | difference | status
# Food & Dining | 500 | 450 | 50 | under
# Transportation | 200 | 250 | -50 | over
alerts = analyzer.budget_alerts()
# 返回:
# [
# {"category": "Transportation", "status": "over", "amount": 250, "budget": 200, "percent_over": 25},
# {"category": "Shopping", "status": "warning", "amount": 280, "budget": 300, "percent_used": 93}
# ]
recommendations = analyzer.get_recommendations()
# 返回:
# [
# "Food & Dining spending increased 15% from last month. Consider meal prepping.",
# "You have 3 subscription services totaling $45/month. Review for unused subscriptions.",
# "Transportation costs are 25% over budget. Consider carpooling or public transit.",
# "Top merchant: Amazon ($350). Set spending limits for online shopping."
# ]
score = analyzer.spending_score()
# 返回:
# {
# "overall_score": 72, # 0-100
# "factors": {
# "budget_adherence": 65,
# "spending_consistency": 80,
# "savings_rate": 70
# },
# "grade": "B",
# "summary": "Good spending habits with room for improvement in budget adherence."
# }
内置类别模式:
DEFAULT_CATEGORIES = {
"Food & Dining": ["restaurant", "cafe", "starbucks", "mcdonald", "uber eats", "doordash"],
"Transportation": ["uber", "lyft", "gas", "shell", "chevron", "parking"],
"Shopping": ["amazon", "walmart", "target", "costco", "best buy"],
"Utilities": ["electric", "water", "gas", "internet", "phone", "verizon"],
"Entertainment": ["netflix", "spotify", "hulu", "movie", "theater"],
"Healthcare": ["pharmacy", "cvs", "walgreens", "doctor", "hospital"],
"Travel": ["airline", "hotel", "airbnb", "booking"],
"Subscriptions": ["subscription", "membership", "monthly"]
}
analyzer.plot_categories("categories.png")
# 创建按类别划分的支出饼图
analyzer.plot_trends("trends.png")
# 创建随时间变化的月度支出折线图
analyzer.plot_budget_comparison("budget.png")
# 创建按类别对比预算与实际支出的条形图
analyzer.generate_report("report.pdf")
# 包含:
# - 执行摘要
# - 带图表的类别细分
# - 月度趋势
# - 主要支出
# - 预算与实际对比 (如果已设置)
# - 建议
analyzer.generate_report("report.html", format="html")
# 包含图表的交互式 HTML 报告
analyzer = BudgetAnalyzer()
analyzer.load_csv("bank_transactions.csv",
date_col="Date",
amount_col="Amount",
description_col="Description")
# 自动分类交易
analyzer.auto_categorize()
# 设置月度预算
analyzer.set_budget({
"Food & Dining": 600,
"Transportation": 250,
"Entertainment": 200
})
# 获取完整分析
print(analyzer.analyze())
print(analyzer.budget_vs_actual())
print(analyzer.get_recommendations())
# 生成报告
analyzer.generate_report("monthly_review.pdf")
analyzer = BudgetAnalyzer()
analyzer.load_csv("business_expenses.csv",
date_col="date",
amount_col="amount",
category_col="expense_type")
# 比较季度数据
q1_vs_q2 = analyzer.compare_periods("2024-Q1", "2024-Q2")
# 主要支出类别
top = analyzer.by_category().head(5)
# 为会计生成报告
analyzer.generate_report("quarterly_expenses.pdf")
每周安装量
97
代码仓库
GitHub 星标数
39
首次出现
2026年1月24日
安全审计
已安装于
gemini-cli83
opencode83
cursor81
codex79
github-copilot77
cline68
Comprehensive expense analysis tool for personal finance and business budgeting.
from budget_analyzer import BudgetAnalyzer
analyzer = BudgetAnalyzer()
# Load transaction data
analyzer.load_csv("transactions.csv",
date_col="date",
amount_col="amount",
description_col="description")
# Analyze spending
summary = analyzer.analyze()
print(summary)
# Get category breakdown
categories = analyzer.by_category()
print(categories)
# Generate report
analyzer.generate_report("budget_report.pdf")
# Basic analysis
python budget_analyzer.py --input transactions.csv --date date --amount amount
# With custom categories
python budget_analyzer.py --input data.csv --categories custom_categories.json
# Compare two periods
python budget_analyzer.py --input data.csv --compare "2024-01" "2024-02"
# Generate PDF report
python budget_analyzer.py --input data.csv --report report.pdf
# Set budget targets
python budget_analyzer.py --input data.csv --budget budget.json --report report.pdf
date,amount,description,category
2024-01-15,45.99,Amazon Purchase,Shopping
2024-01-16,12.50,Starbucks,Food & Dining
2024-01-17,150.00,Electric Company,Utilities
{
"Food & Dining": ["starbucks", "mcdonalds", "restaurant", "uber eats"],
"Transportation": ["uber", "lyft", "gas station", "shell"],
"Shopping": ["amazon", "walmart", "target"],
"Utilities": ["electric", "water", "gas", "internet"]
}
{
"Food & Dining": 500,
"Transportation": 200,
"Shopping": 300,
"Utilities": 250,
"Entertainment": 150
}
class BudgetAnalyzer:
def __init__(self)
# Data Loading
def load_csv(self, filepath: str, date_col: str, amount_col: str,
description_col: str = None, category_col: str = None) -> 'BudgetAnalyzer'
def load_dataframe(self, df: pd.DataFrame) -> 'BudgetAnalyzer'
# Categorization
def set_categories(self, categories: Dict[str, List[str]]) -> 'BudgetAnalyzer'
def auto_categorize(self) -> 'BudgetAnalyzer'
# Analysis
def analyze(self) -> Dict # Full summary
def by_category(self) -> pd.DataFrame
def by_month(self) -> pd.DataFrame
def by_day_of_week(self) -> pd.DataFrame
def top_expenses(self, n: int = 10) -> pd.DataFrame
def recurring_expenses(self) -> pd.DataFrame
# Comparison
def compare_periods(self, period1: str, period2: str) -> Dict
def year_over_year(self) -> pd.DataFrame
# Budgeting
def set_budget(self, budget: Dict[str, float]) -> 'BudgetAnalyzer'
def budget_vs_actual(self) -> pd.DataFrame
def budget_alerts(self) -> List[Dict]
# Insights
def get_recommendations(self) -> List[str]
def spending_score(self) -> Dict
# Visualization
def plot_categories(self, output: str) -> str
def plot_trends(self, output: str) -> str
def plot_budget_comparison(self, output: str) -> str
# Export
def generate_report(self, output: str, format: str = "pdf") -> str
def to_csv(self, output: str) -> str
summary = analyzer.analyze()
# Returns:
# {
# "total_spent": 2500.00,
# "transaction_count": 45,
# "date_range": {"start": "2024-01-01", "end": "2024-01-31"},
# "average_transaction": 55.56,
# "largest_expense": {"amount": 500, "description": "Rent"},
# "categories": {"Food": 450, "Transport": 200, ...}
# }
categories = analyzer.by_category()
# Returns DataFrame:
# category | amount | percentage | count
# Food & Dining | 450.00 | 18.0% | 15
# Transportation | 200.00 | 8.0% | 8
# ...
monthly = analyzer.by_month()
# Returns DataFrame:
# month | total | avg_transaction | count
# 2024-01 | 2500.00 | 55.56 | 45
# 2024-02 | 2800.00 | 60.87 | 46
comparison = analyzer.compare_periods("2024-01", "2024-02")
# Returns:
# {
# "period1_total": 2500.00,
# "period2_total": 2800.00,
# "difference": 300.00,
# "percent_change": 12.0,
# "category_changes": {
# "Food": {"change": 50, "percent": 11.1},
# ...
# }
# }
analyzer.set_budget({
"Food & Dining": 500,
"Transportation": 200,
"Shopping": 300
})
comparison = analyzer.budget_vs_actual()
# Returns DataFrame:
# category | budget | actual | difference | status
# Food & Dining | 500 | 450 | 50 | under
# Transportation | 200 | 250 | -50 | over
alerts = analyzer.budget_alerts()
# Returns:
# [
# {"category": "Transportation", "status": "over", "amount": 250, "budget": 200, "percent_over": 25},
# {"category": "Shopping", "status": "warning", "amount": 280, "budget": 300, "percent_used": 93}
# ]
recommendations = analyzer.get_recommendations()
# Returns:
# [
# "Food & Dining spending increased 15% from last month. Consider meal prepping.",
# "You have 3 subscription services totaling $45/month. Review for unused subscriptions.",
# "Transportation costs are 25% over budget. Consider carpooling or public transit.",
# "Top merchant: Amazon ($350). Set spending limits for online shopping."
# ]
score = analyzer.spending_score()
# Returns:
# {
# "overall_score": 72, # 0-100
# "factors": {
# "budget_adherence": 65,
# "spending_consistency": 80,
# "savings_rate": 70
# },
# "grade": "B",
# "summary": "Good spending habits with room for improvement in budget adherence."
# }
Built-in category patterns:
DEFAULT_CATEGORIES = {
"Food & Dining": ["restaurant", "cafe", "starbucks", "mcdonald", "uber eats", "doordash"],
"Transportation": ["uber", "lyft", "gas", "shell", "chevron", "parking"],
"Shopping": ["amazon", "walmart", "target", "costco", "best buy"],
"Utilities": ["electric", "water", "gas", "internet", "phone", "verizon"],
"Entertainment": ["netflix", "spotify", "hulu", "movie", "theater"],
"Healthcare": ["pharmacy", "cvs", "walgreens", "doctor", "hospital"],
"Travel": ["airline", "hotel", "airbnb", "booking"],
"Subscriptions": ["subscription", "membership", "monthly"]
}
analyzer.plot_categories("categories.png")
# Creates pie chart of spending by category
analyzer.plot_trends("trends.png")
# Creates line chart of monthly spending over time
analyzer.plot_budget_comparison("budget.png")
# Creates bar chart comparing budget vs actual by category
analyzer.generate_report("report.pdf")
# Includes:
# - Executive summary
# - Category breakdown with charts
# - Monthly trends
# - Top expenses
# - Budget vs actual (if set)
# - Recommendations
analyzer.generate_report("report.html", format="html")
# Interactive HTML report with charts
analyzer = BudgetAnalyzer()
analyzer.load_csv("bank_transactions.csv",
date_col="Date",
amount_col="Amount",
description_col="Description")
# Auto-categorize transactions
analyzer.auto_categorize()
# Set monthly budget
analyzer.set_budget({
"Food & Dining": 600,
"Transportation": 250,
"Entertainment": 200
})
# Get full analysis
print(analyzer.analyze())
print(analyzer.budget_vs_actual())
print(analyzer.get_recommendations())
# Generate report
analyzer.generate_report("monthly_review.pdf")
analyzer = BudgetAnalyzer()
analyzer.load_csv("business_expenses.csv",
date_col="date",
amount_col="amount",
category_col="expense_type")
# Compare quarters
q1_vs_q2 = analyzer.compare_periods("2024-Q1", "2024-Q2")
# Top expense categories
top = analyzer.by_category().head(5)
# Generate report for accounting
analyzer.generate_report("quarterly_expenses.pdf")
Weekly Installs
97
Repository
GitHub Stars
39
First Seen
Jan 24, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
gemini-cli83
opencode83
cursor81
codex79
github-copilot77
cline68
DOCX文件创建、编辑与分析完整指南 - 使用docx-js、Pandoc和Python脚本
51,800 周安装
视觉质量检查工具:AI自动化UI审查,发现间距、对齐、颜色、响应式设计问题
159 周安装
Swift应用架构与状态管理指南:axiom-app-composition最佳实践
160 周安装
AI辅助Git提交工具:自动生成规范提交信息,遵循Conventional Commits
160 周安装
tmux 终端复用器使用指南:隔离会话、安全输入与自动化脚本
161 周安装
Webpack 5 打包配置指南:优化代码分割、Tree Shaking 与构建性能
163 周安装
iOS/macOS 构建调试指南:解决 Xcode SPM/CocoaPods 依赖项与编译错误
163 周安装