| name | budget-analyzer |
| description | Analyze personal or business expenses from CSV/Excel. Categorize spending, identify trends, compare periods, and get savings recommendations. |
Budget Analyzer
Comprehensive expense analysis tool for personal finance and business budgeting.
Features
- Auto-Categorization: Classify expenses by merchant/description
- Trend Analysis: Month-over-month spending patterns
- Period Comparison: Compare spending across time periods
- Category Breakdown: Pie charts and bar graphs by category
- Savings Recommendations: Identify areas to reduce spending
- Budget vs Actual: Track against budget targets
- Export Reports: PDF and HTML summaries
Quick Start
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")
CLI Usage
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"
python budget_analyzer.py --input data.csv --report report.pdf
python budget_analyzer.py --input data.csv --budget budget.json --report report.pdf
Input Format
Transaction CSV
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
Custom Categories (JSON)
{
"Food & Dining": ["starbucks", "mcdonalds", "restaurant", "uber eats"],
"Transportation": ["uber", "lyft", "gas station", "shell"],
"Shopping": ["amazon", "walmart", "target"],
"Utilities": ["electric", "water", "gas", "internet"]
}
Budget Targets (JSON)
{
"Food & Dining": 500,
"Transportation": 200,
"Shopping": 300,
"Utilities": 250,
"Entertainment": 150
}
API Reference
BudgetAnalyzer Class
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() -> pd.DataFrame
() -> pd.DataFrame
() ->
() -> pd.DataFrame
() ->
() -> pd.DataFrame
() -> []
() -> []
() ->
() ->
() ->
() ->
() ->
() ->
Analysis Features
Summary Statistics
summary = analyzer.analyze()
Category Breakdown
categories = analyzer.by_category()
Monthly Trends
monthly = analyzer.by_month()
Period Comparison
comparison = analyzer.compare_periods("2024-01", "2024-02")
Budget Tracking
Set Budget Targets
analyzer.set_budget({
"Food & Dining": 500,
"Transportation": 200,
"Shopping": 300
})
Budget vs Actual
comparison = analyzer.budget_vs_actual()
Budget Alerts
alerts = analyzer.budget_alerts()
Recommendations Engine
recommendations = analyzer.get_recommendations()
Spending Score
score = analyzer.spending_score()
Auto-Categorization
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"]
}
Visualizations
Category Pie Chart
analyzer.plot_categories("categories.png")
Spending Trends
analyzer.plot_trends("trends.png")
Budget Comparison
analyzer.plot_budget_comparison("budget.png")
Report Generation
PDF Report
analyzer.generate_report("report.pdf")
HTML Report
analyzer.generate_report("report.html", format="html")
Example Workflows
Personal Finance Review
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")
Business Expense Tracking
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")
Dependencies
- pandas>=2.0.0
- numpy>=1.24.0
- matplotlib>=3.7.0
- reportlab>=4.0.0