Overview
The Personal Finance Tracker project is designed to help users take control of their money by tracking their incomes and expenses. It simulates a real-world use case, where data is collected, stored, analyzed, and visualized — all using Python. This project brings together everything you’ve learned so far: user input, file handling, conditionals, data structures, and simple data visualization. It also serves as a stepping stone to working with external files and basic data analytics.
Core Features
- Input Transactions: Users can add income or expense entries along with categories such as “Food”, “Rent”, or “Salary”.
- Persistent Storage: Save each transaction to a CSV file or database so that data isn’t lost when the program closes.
- Summary Calculations: Compute overall balance, total income, total expense, and show a breakdown by category.
- Visual Reporting: Use charts like pie charts or bar graphs to represent expenses visually.
- Optional Filters: Add filters to show summaries for a specific date range or category.
Tools and Concepts You’ll Use
- File Handling: Read from and write to CSV files using Python’s built-in
csv
module. - Date and Time: Utilize
datetime
to timestamp transactions automatically. - Dictionaries & Lists: Use these core data structures to organize and manipulate financial data.
- Pandas (Optional): Efficiently analyze large amounts of financial data.
- Matplotlib: Turn your raw data into meaningful visual insights with simple graphs.
- SQLite (Optional): For those looking to expand further, use a lightweight database to manage transactions more securely.
Step-by-Step Project Breakdown
1. 📥 Collect User Input
amount = float(input("Enter amount: "))
category = input("Enter category (e.g. Food, Rent, Salary): ")
type_ = input("Is this an income or expense? ").lower()
Prompt the user to enter transaction details. Ensure the type is either income
or expense
.
2. 💾 Save to File
from datetime import datetime
import csv
entry = [datetime.now().strftime("%Y-%m-%d"), type_, category, amount]
with open("finance_data.csv", mode="a", newline="") as file:
writer = csv.writer(file)
writer.writerow(entry)
Every transaction is saved with the current date, type, category, and amount.
3. 📊 Analyze and Summarize Transactions
import pandas as pd
df = pd.read_csv("finance_data.csv", names=["Date", "Type", "Category", "Amount"])
income = df[df["Type"] == "income"]["Amount"].sum()
expense = df[df["Type"] == "expense"]["Amount"].sum()
balance = income - expense
print(f"Total Income: ₹{income}")
print(f"Total Expenses: ₹{expense}")
print(f"Current Balance: ₹{balance}")
Read from the CSV, calculate totals, and present an easy-to-read summary in the terminal.
4. 📈 Visualize Expense Breakdown
import matplotlib.pyplot as plt
expense_data = df[df["Type"] == "expense"].groupby("Category")["Amount"].sum()
expense_data.plot(kind='pie', autopct='%1.1f%%', startangle=90)
plt.title("Expenses by Category")
plt.ylabel("")
plt.show()
Visual feedback helps users quickly understand where most of their money goes.
Sample Output
- CSV Sample:
2025-03-30,expense,Food,500
2025-03-30,income,Salary,15000
- Terminal Output:
Total Income: ₹15000.0
Total Expenses: ₹500.0
Current Balance: ₹14500.0
- Pie Chart Example:
A colorful chart showing how much was spent in each category like Food, Rent, Shopping, etc.
Bonus Enhancements (Optional Ideas)
- GUI Interface: Build a simple user interface using
tkinter
to make the tracker more user-friendly. - Database Storage: Replace CSV with SQLite using the
sqlite3
module for more structured data storage. - Monthly Filters: Allow users to choose a specific month/year and generate custom reports.
- Export Report: Automatically generate PDF or Excel reports using
pandas
orxlsxwriter
.
What You’ll Learn
- How to take user input and store data persistently
- How to work with CSV files and analyze data with Pandas
- How to generate basic visual reports using
matplotlib
- How to write modular, real-world Python programs
Next Project: [Simple Chatbot – Let’s Build an Interactive Assistant!]