A beginner-friendly finance data analysis project built with Python, pandas, and Matplotlib.
This project analyzes six months of personal transaction data to understand income, expenses, savings, and spending behavior. The objective is to identify key spending patterns and provide simple financial insights that can support better budgeting and saving decisions.
The individual wants to understand where their salary goes each month, how much they are able to save, and which spending categories have the greatest impact on their budget. The analysis aims to support decisions about whether spending habits should be adjusted to improve savings.
- Calculate total income, total expenses, net savings, and savings rate.
- Analyze spending by category.
- Compare monthly income, expenses, and savings.
- Identify the highest-spending and lowest-saving months.
- Create visualizations that make spending patterns easier to understand.
- Translate the results into simple financial insights and recommendations.
The dataset contains 48 fictional personal transactions covering January to June 2026. Each row represents one transaction.
| Column | Description |
|---|---|
| Date | Date of the transaction |
| Description | Name or short description of the transaction |
| Category | Spending or income category |
| Amount | Transaction amount in euros |
| Type | Indicates whether the transaction is Income or Expense |
- Loaded the transaction dataset using pandas.
- Converted the Date column into a datetime format for time-based analysis.
- Checked for missing values and duplicate transactions.
- Calculated core financial KPIs such as total income, total expenses, net savings, and savings rate.
- Grouped expenses by category to identify the largest spending areas.
- Analyzed monthly income, expenses, and savings.
- Created charts to visualize category spending and monthly financial patterns.
| KPI | Result |
|---|---|
| Total Income | €15,000.00 |
| Total Expenses | €7,123.00 |
| Net Savings | €7,877.00 |
| Savings Rate | 52.51% |
| Expense Ratio | 47.49% |
| Average Monthly Spending | €1,187.17 |
| Average Monthly Savings | €1,312.83 |
| Largest Expense Category | Housing |
| Housing Share of Total Expenses | 63.18% |
| Highest-Spending Month | May 2026 (€1,357.00) |
| Lowest-Spending Month | February 2026 (€1,098.00) |
-
Sara generated €15,000 in total income and €7,123 in total expenses over the six-month period, resulting in €7,877 in net savings.
-
The overall savings rate was 52.51%, meaning that slightly more than half of total income was retained.
-
Housing was the largest expense category at €4,500 and represented 63.18% of total expenses.
-
Shopping was the largest non-housing expense category, followed by groceries and dining.
-
May 2026 was the highest-spending month at €1,357 and also the month with the lowest savings at €1,143.
-
Monthly spending fluctuated over the six-month period rather than showing a consistent upward or downward trend.
-
Maintain the current overall saving behavior, as the six-month savings rate is strong at approximately 52.5%.
-
Monitor discretionary spending, particularly Shopping and Dining, because these categories contributed to higher spending in months such as May.
-
Consider setting monthly budgets for discretionary categories and comparing actual spending against those limits.
-
Continue tracking additional months before concluding that spending follows a long-term increasing or decreasing trend.
- Python
- pandas
- Matplotlib
- Visual Studio Code
- Git
- GitHub
personal-budget-analyzer/
│
├── data/
│ └── transactions.csv
│
├── charts/
│ ├── spending_by_category.png
│ ├── monthly_income_vs_expenses.png
│ ├── monthly_savings.png
│ └── monthly_spending_trend.png
│
├── analysis.py
├── README.md
├── requirements.txt
└── .gitignore
- Install the required Python packages:
python -m pip install -r requirements.txt- Run the analysis:
python analysis.py- View the generated charts in the
chartsfolder.
- Replace the fictional dataset with real or anonymized banking transaction data.
- Extend the analysis to cover a longer time period.
- Add budget targets and compare actual spending against planned limits.
- Detect unusually high transactions or spending months.
- Build a simple Streamlit dashboard for interactive exploration.



