The purpose of this project is to empower individuals to take control of their finances by analyzing their spending habits. It uses Pandas for data handling, Matplotlib for visualizations, and NumPy for efficient numerical computations. The tool can graph trends, predict future expenses, and suggest cutbacks to help users manage their finances more effectively.
Whether you're budgeting for the first time or trying to improve your financial health, this tool helps you visualize spending patterns, forecast future spending, and identify areas where you can save.
- Install all the necessary Python packages from the requirements.txt file
- Run the program from the main.py file
- At this point the GUI should pop up
- Go over to the file option the menu bar and click on it, two options should show up
- Import - By selecting this you are prompted to import the necessary csv file, make sure it is in the right format. Go to Import File Rules for more instructions
- Exit - By selecting this it closes the program
- Once you import the file, if evey thing is set up correctly you should see a tab of the file you imported. That tab has subtabs:
- By clicking into any of these you can see the data represented in tables and graphs
Follow these rules in order to make the application work.
-
Create a csv file, no other file type will work at this moment
-
Use the following example as your header
| Dates | Amount | Tag | Optional Tag | Account | |-------|--------|-----|--------------|---------|
-
Fill in the data
- Dates - Put valid dates in this format mm/dd/yyyy.
Example: 2/24/2025. - Amount - Either positive or negative numbers, the Spent and Earned numbers will be automatically formatted but the Transfer amount will not so be aware of those.
- Tag - Use one of 3 tags per row
Spent, Earned, Transfer. - Optional Tag - You can leave this blank, but you can put what ever extra tag in to better see what you spent or
how you get your earnings
Example: Groceries, Movies, Utilities, etc.... - Account - Name of an account
Example: Checking, Savings, 401k, etc....
- Dates - Put valid dates in this format mm/dd/yyyy.
| Dates | Amount | Tag | Optional Tag | Account |
|---|---|---|---|---|
| 1/1/2025 | 100 | Earned | Work | Savings |
| 1/2/2025 | 50 | Earned | Work | Checking |
| 1/10/2025 | 25 | Spent | Groceries | Checking |
| 1/14/2025 | -25 | Transfer | Savings | |
| 1/20/2025 | 25 | Transfer | Checking | |
| 1/25/2025 | 50 | Spent | Utilities | Checking |
This tab basically shows you the csv file you imported in a table view.
This tab spreads out the data from the original file in Spent, Earned, Transferred, and Account totals for each account for every day between the first day and the last day in the file.
This tab shows a line graph representing the amount of each accounts over time. This also uses Linear Regression to help predict then next 6 months.
This tab shows both a bar graph and a pie chart on what was spent. The bar graph shows what was spent per month. The pie chart shows the percentage of what was spent between the first day and the last day in the file.
This tab shows both a bar graph and a pie chart on what was earned. The bar graph shows what type of earnings per month. The pie chart shows the percentage of the different types of earnings between the first day and the last day in the file.
- You can import multiple files, just not at the same time.
- If you hover your curser over the graph it will tell you the value of that spot.
- Be able to edit table cells in the Original Table
- Be able to add rows to the Original Table
- Be able to close file tabs
- Give the use more options and setting to configure like starting account amounts or length of prediction
- Graph animations
- Export menu option
- Dark mode
- Better error handling
- More file import options
- Have an instructions button
- Have a template button
- Set up project directory and virtual environment
- Create
requirements.txtfor dependencies - Initialize Git repo and create
README.md
- Define a standard CSV format or accept user-uploaded data
- Use Pandas to read, clean, and categorize expenses
- Summarize expenses by category and month
- Implement handling for missing or malformed data
- Line chart of monthly expenses over time
- Pie charts of spending and income by category
- Bar chart comparing months/categories for spending and income
- Use moving averages or linear regression to predict next 6 months' expenses
- Build a simple CLI or GUI (e.g., Streamlit or Tkinter)
- Allow importing new data without overwriting old analysis
- User can hover over a data point and tells them the exact value
- Add usage instructions to
README.md - Polish codebase (comments, docstrings, clean structure)