Introduction: Understanding the Finance Expenses Dataset
The Finance Expenses Dataset is a real-world financial transaction dataset containing 500 records of income and expense transactions across multiple accounts and companies throughout 2023. This dataset mirrors the complexity of actual financial data management systems I’ve worked with during my experience building ERPs like the HR & Payroll Management System and creating 300+ dashboards for Fortune 500 clients.
Get the Dataset here: https://github.com/slidescope/Generated_Finance_Expenses
Dataset Overview:
- Records: 500 transactions
- Time Period: January – December 2023
- Accounts: 3 types (Credit, Savings, Checking)
- Companies: 4 entities (Company A, B, C, D)
- Transaction Types: 7 categories ranging from Salary, Rent, Entertainment to various expense types
- Key Metrics: Debit/Credit amounts, transaction amounts, and categorical classifications
This dataset is perfect for practicing financial data analysis, budget tracking, and expense optimization—skills that are highly valuable in today’s data-driven business environment.
What Analysis Can Students Perform?
Working with the Finance Expenses dataset, students can develop proficiency in:
- Exploratory Data Analysis (EDA) – Understanding data structure, missing values, and distributions
- Time Series Analysis – Tracking spending patterns and income trends across 2023
- Categorical Analysis – Analyzing expenses by category, sub-category, and account type
- Comparative Analysis – Comparing spending patterns across different companies and accounts
- Financial KPI Calculation – Creating metrics like Total Income, Total Expenses, Savings Rate, etc.
- Budget Forecasting – Using historical data to predict future spending patterns
- Anomaly Detection – Identifying unusual transactions or spending spikes
- Segmentation Analysis – Grouping transactions by department, cost center, or time period
- Variance Analysis – Understanding deviations from budgeted amounts
- Dashboard Creation – Visualizing insights for stakeholder reporting
These skills directly translate to real-world applications in companies I’ve consulted for, from multinational consulting firms to mid-sized tech startups.
Step-by-Step Python Pandas EDA Code
Step 1: Import Libraries and Load Data
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from datetime import datetime
import warnings
warnings.filterwarnings('ignore')
# Set style for better-looking plots
sns.set_style("whitegrid")
plt.rcParams['figure.figsize'] = (12, 6)
# Load the dataset
df = pd.read_excel('Generated_Finance_Expenses.xlsx')
print("Dataset loaded successfully!")
print(f"Shape: {df.shape}")
This foundational step imports essential data science libraries. Pandas handles data manipulation, NumPy provides numerical operations, Seaborn creates statistical visualizations, and Matplotlib offers detailed plot control. We suppress warnings for cleaner output and configure visual parameters. The data is loaded from the Excel file into a DataFrame, the primary data structure in pandas. This setup is identical to what I use when building dashboards for client data analysis projects.
Step 2: Data Inspection and Understanding
# Display basic information
print("=" * 60)
print("DATASET OVERVIEW")
print("=" * 60)
print("\nFirst 5 rows:")
print(df.head())
print("\nDataset Shape:", df.shape)
print("\nColumn Data Types:")
print(df.dtypes)
print("\nMissing Values:")
print(df.isnull().sum())
print("\nBasic Statistics:")
print(df.describe())
Data inspection is the foundation of any analysis. Using .head(), we view sample records to understand the structure. .shape reveals dimensions (500 rows, 9 columns). .dtypes shows data types—Date fields, numerical amounts, and categorical information. The missing values analysis identifies gaps: Credit and Debit columns have ~250 nulls each, while Amount has none. This inspection mirrors the ERP data validation processes I implemented in Hospital and School Management systems.
Step 3: Data Cleaning and Preparation
# Convert Date column to datetime if not already
df['Date'] = pd.to_datetime(df['Date'])
# Create new useful columns
df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month
df['Month_Name'] = df['Date'].dt.strftime('%B')
df['Week'] = df['Date'].dt.isocalendar().week
df['Day_of_Week'] = df['Date'].dt.day_name()
df['Quarter'] = df['Date'].dt.quarter
# Fill missing values strategically
# Debit/Credit represent transaction direction; combine them into Amount if needed
df['Combined_Amount'] = df['Debit'].fillna(0) + df['Credit'].fillna(0)
# Check for duplicates
print(f"Duplicate rows: {df.duplicated().sum()}")
# Display cleaned data
print("\nCleaned Dataset Info:")
print(df.info())
print("\nFirst few records with new columns:")
print(df[['Date', 'Month_Name', 'Day_of_Week', 'Amount', 'Category', 'Sub-category']].head(10))
Data preparation transforms raw data into analysis-ready format. We extract temporal features (Year, Month, Quarter) from dates, enabling time-based analysis. Filling missing Debit/Credit values creates a complete transaction picture. The Combined_Amount calculation merges transaction types. Creating Day_of_Week and Month_Name fields helps identify spending patterns by day or month—a technique I’ve used extensively in Tableau and Power BI dashboards for client reporting.
Step 4: Exploratory Categorical Analysis
# Analyze unique values in categorical columns
print("=" * 60)
print("CATEGORICAL ANALYSIS")
print("=" * 60)
print("\nAccounts:")
print(df['Account'].value_counts())
print("\nCompanies:")
print(df['Company'].value_counts())
print("\nCategories (Category Type):")
print(df['Category Type'].value_counts())
print("\nExpense Categories:")
expense_categories = df[df['Category Type'] == 'Expense']['Category'].value_counts()
print(expense_categories)
print("\nIncome Categories:")
income_categories = df[df['Category Type'] == 'Income']['Category'].value_counts()
print(income_categories)
print("\nSub-categories distribution:")
print(df['Sub-category'].value_counts())
Categorical analysis reveals data distribution patterns. Value counts show transaction frequency across accounts, companies, and categories. Separating income and expense categories provides clear insight into revenue versus cost structures—essential for budget planning. In my experience building financial dashboards for multinational companies, this analysis forms the basis for departmental drill-downs and cost center allocations. Understanding these distributions ensures accurate segmentation for deeper analysis and client reporting requirements.
Step 5: Statistical Summary and Distribution Analysis
# Financial summary statistics
print("=" * 60)
print("FINANCIAL SUMMARY")
print("=" * 60)
income_data = df[df['Category Type'] == 'Income']['Amount']
expense_data = df[df['Category Type'] == 'Expense']['Amount'].abs() # Make positive for clarity
print(f"\nIncome Statistics:")
print(f" Total Records: {len(income_data)}")
print(f" Mean Income: ${income_data.mean():,.2f}")
print(f" Median Income: ${income_data.median():,.2f}")
print(f" Std Dev: ${income_data.std():,.2f}")
print(f" Max Transaction: ${income_data.max():,.2f}")
print(f"\nExpense Statistics:")
print(f" Total Records: {len(expense_data)}")
print(f" Mean Expense: ${expense_data.mean():,.2f}")
print(f" Median Expense: ${expense_data.median():,.2f}")
print(f" Std Dev: ${expense_data.std():,.2f}")
print(f" Max Transaction: ${expense_data.max():,.2f}")
# Correlation analysis
print("\n\nNumerical Correlation Matrix:")
numeric_cols = df[['Amount', 'Debit', 'Credit']].corr()
print(numeric_cols)
Statistical summaries provide quantitative insights into transaction patterns. Calculating mean, median, and standard deviation reveals typical spending behavior and variability. Separating income and expense data provides directional clarity. Standard deviation measurement indicates predictability—high variance suggests irregular transactions. Correlation analysis identifies relationships between numerical features. These metrics are fundamental to the KPI dashboards I create for financial analysis, helping executives understand cash flow patterns and budget deviations at a glance.
5 Essential Financial KPIs
KPI 1: Total Revenue and Expenses
total_income = df[df['Category Type'] == 'Income']['Amount'].sum()
total_expenses = df[df['Category Type'] == 'Expense']['Amount'].abs().sum()
print("KPI 1: TOTAL REVENUE & EXPENSES")
print(f"Total Income: ${total_income:,.2f}")
print(f"Total Expenses: ${total_expenses:,.2f}")
print(f"Net Cash Flow: ${total_income - total_expenses:,.2f}")
This fundamental KPI measures the organization’s overall financial health. Total income represents all revenue sources across companies, while expenses show total outflows. Net cash flow (income minus expenses) indicates whether the organization is operating profitably. A positive net cash flow suggests financial stability. This is the cornerstone metric in every financial dashboard I’ve created—it’s the first number executives check. Tracking this monthly reveals seasonal trends and helps forecast annual performance accurately.
KPI 2: Expense-to-Income Ratio (Burn Rate)
# KPI 2: Expense to Income Ratio
burn_rate = (total_expenses / total_income) * 100
savings_rate = 100 - burn_rate
print("\nKPI 2: EXPENSE-TO-INCOME RATIO & SAVINGS RATE")
print(f"Burn Rate: {burn_rate:.2f}%")
print(f"Savings Rate: {savings_rate:.2f}%")
The burn rate indicates what percentage of income is consumed by expenses. A lower burn rate signals better financial efficiency and sustainability. Savings rate (inverse metric) shows the percentage of income retained. Tracking this ratio quarterly helps identify cost control effectiveness. Organizations aim for sustainable burn rates—typically below 80% for healthy cash reserves. In my work with HR and Payroll management systems, this ratio helps identify opportunities for cost optimization and budget reallocation.
KPI 3: Average Monthly Spending and Income
# KPI 3: Monthly Aggregation
monthly_data = df.groupby('Month')['Amount'].agg(['sum', 'count', 'mean'])
monthly_data.columns = ['Total_Amount', 'Transaction_Count', 'Avg_Transaction']
income_monthly = df[df['Category Type'] == 'Income'].groupby('Month')['Amount'].sum()
expense_monthly = df[df['Category Type'] == 'Expense'].groupby('Month')['Amount'].abs().sum()
print("\nKPI 3: MONTHLY AGGREGATES")
print("\nMonthly Income:")
print(income_monthly)
print(f"\nAverage Monthly Income: ${income_monthly.mean():,.2f}")
print("\n\nMonthly Expenses:")
print(expense_monthly)
print(f"Average Monthly Expenses: ${expense_monthly.mean():,.2f}")
print("\n\nMonthly Summary Table:")
print(monthly_data)
Monthly aggregation reveals temporal patterns and seasonality in financial data. Average monthly income and expenses provide normalized metrics for planning. Transaction counts show activity intensity. Variations month-to-month suggest seasonal factors or business cycles. Analyzing this data helps with cash flow forecasting and budget setting. In my experience creating financial dashboards for multinational consulting companies, monthly trends are critical—they inform resource allocation, hiring cycles, and expense budgets for the upcoming quarters.
KPI 4: Category-Wise Expense Analysis
# KPI 4: Expense Breakdown by Category
category_expense = df[df['Category Type'] == 'Expense'].groupby('Category')['Amount'].agg(['sum', 'count', 'mean'])
category_expense.columns = ['Total_Spent', 'Transaction_Count', 'Avg_Expense']
category_expense = category_expense.sort_values('Total_Spent', ascending=False)
subcategory_expense = df[df['Category Type'] == 'Expense'].groupby('Sub-category')['Amount'].agg(['sum', 'count', 'mean'])
subcategory_expense.columns = ['Total_Spent', 'Transaction_Count', 'Avg_Expense']
subcategory_expense = subcategory_expense.sort_values('Total_Spent', ascending=False)
print("\nKPI 4: EXPENSE BREAKDOWN BY CATEGORY")
print("\nBy Category:")
print(category_expense)
print("\n\nBy Sub-Category:")
print(subcategory_expense)
# Identify top spending categories
top_3_categories = category_expense.head(3)['Total_Spent']
print(f"\n\nTop 3 Expense Categories:")
for category, amount in top_3_categories.items():
percentage = (amount / total_expenses) * 100
print(f" {category}: ${amount:,.2f} ({percentage:.1f}% of total)")
Category-wise analysis identifies where money is actually being spent. Ranking categories by total amount highlights major cost drivers. Transaction counts reveal frequency—some categories have many small transactions while others have fewer large ones. Average expense calculations show typical transaction size. This granular view is essential for budget optimization. In my Hospital Management ERP system, this analysis helped identify unnecessary departmental spending. For my clients, it’s typically the second dashboard—showing “where does the money go?”
KPI 5: Account and Company Performance
# KPI 5: Account and Company Wise Analysis
account_analysis = df.groupby('Account')['Amount'].agg(['sum', 'count', 'mean'])
account_analysis.columns = ['Total_Amount', 'Transaction_Count', 'Avg_Transaction']
company_analysis = df.groupby('Company')['Amount'].agg(['sum', 'count', 'mean'])
company_analysis.columns = ['Total_Amount', 'Transaction_Count', 'Avg_Transaction']
print("\nKPI 5: ACCOUNT & COMPANY PERFORMANCE")
print("\nBy Account Type:")
print(account_analysis)
print("\n\nBy Company:")
print(company_analysis)
# Distribution of income and expenses by account
account_type_distribution = pd.crosstab(df['Account'], df['Category Type'], margins=True)
print("\n\nIncome vs Expense by Account:")
print(account_type_distribution)
This KPI reveals performance metrics by organizational dimension—account type and company entity. Different accounts (Credit, Savings, Checking) serve different purposes; this analysis shows utilization. Company-wise breakdown identifies which business units drive revenue or incur costs. Cross-tabulation of accounts and category types shows liquidity distribution. Critical for treasury management and inter-company reconciliation. In the School Management System ERP I developed, similar analysis helped allocate funds across departments and track expenditure compliance by cost center.
5 Professional Visualizations with Seaborn
Visualization 1: Monthly Income vs Expense Trend
# Visualization 1: Monthly Trends
fig, ax = plt.subplots(figsize=(14, 6))
# Prepare data
months_ordered = ['January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December']
income_by_month = df[df['Category Type'] == 'Income'].groupby('Month_Name')['Amount'].sum().reindex(months_ordered)
expense_by_month = df[df['Category Type'] == 'Expense'].groupby('Month_Name')['Amount'].abs().sum().reindex(months_ordered)
# Plot
x_pos = np.arange(len(months_ordered))
width = 0.35
bars1 = ax.bar(x_pos - width/2, income_by_month, width, label='Income', color='#2ecc71', alpha=0.85)
bars2 = ax.bar(x_pos + width/2, expense_by_month, width, label='Expenses', color='#e74c3c', alpha=0.85)
# Customize
ax.set_xlabel('Month', fontsize=12, fontweight='bold')
ax.set_ylabel('Amount ($)', fontsize=12, fontweight='bold')
ax.set_title('Monthly Income vs Expenses Trend - 2023', fontsize=14, fontweight='bold', pad=20)
ax.set_xticks(x_pos)
ax.set_xticklabels([m[:3] for m in months_ordered], rotation=45)
ax.legend(fontsize=11)
ax.grid(axis='y', alpha=0.3)
# Add value labels on bars
for bars in [bars1, bars2]:
for bar in bars:
height = bar.get_height()
ax.text(bar.get_x() + bar.get_width()/2., height,
f'${int(height)}',
ha='center', va='bottom', fontsize=8)
plt.tight_layout()
plt.savefig('01_monthly_trends.png', dpi=300, bbox_inches='tight')
plt.show()
print("✓ Visualization 1 saved: Monthly Income vs Expenses Trend")
This side-by-side bar chart compares monthly income against expenses throughout 2023. Green bars represent income; red bars show expenses. Visual comparison reveals months with surplus (income > expenses) and deficit periods. The chart shows spending consistency—expenses remain relatively stable while income fluctuates. This type of visualization is my go-to dashboard component for executive reporting. It immediately communicates financial health and identifies concerning trends without requiring detailed spreadsheet analysis.
Visualization 2: Expense Breakdown by Category (Pie Chart)
# Visualization 2: Expense Pie Chart
expense_by_category = df[df['Category Type'] == 'Expense'].groupby('Category')['Amount'].sum().sort_values(ascending=False)
fig, ax = plt.subplots(figsize=(10, 8))
# Create pie chart
colors = sns.color_palette("Set2", len(expense_by_category))
wedges, texts, autotexts = ax.pie(expense_by_category,
labels=expense_by_category.index,
autopct='%1.1f%%',
startangle=90,
colors=colors,
textprops={'fontsize': 11})
# Customize
ax.set_title('Expense Distribution by Category', fontsize=14, fontweight='bold', pad=20)
# Make percentage text bold and white
for autotext in autotexts:
autotext.set_color('white')
autotext.set_fontweight('bold')
autotext.set_fontsize(10)
# Add legend with actual amounts
legend_labels = [f'{cat}: ${amt:,.0f}' for cat, amt in expense_by_category.items()]
ax.legend(legend_labels, loc='center left', bbox_to_anchor=(1, 0, 0.5, 1), fontsize=10)
plt.tight_layout()
plt.savefig('02_expense_distribution.png', dpi=300, bbox_inches='tight')
plt.show()
print("✓ Visualization 2 saved: Expense Distribution by Category")
The pie chart visualizes expense allocation across categories, showing relative proportions. Each slice represents a cost category; larger slices indicate higher spending. Percentages display the proportion of total expenses. This chart immediately highlights the largest cost drivers. The legend includes actual dollar amounts for reference. I frequently use this visualization in my Power BI dashboards—it’s intuitive for non-technical stakeholders. It helps executives quickly understand budget allocation and identify optimization opportunities without deep analysis.
Visualization 3: Transaction Count by Account Type
# Visualization 3: Seaborn Count Plot
fig, ax = plt.subplots(figsize=(12, 6))
# Prepare data for count plot
plot_data = df[df['Category Type'] == 'Expense'].copy()
# Create count plot
sns.countplot(data=plot_data, x='Account', hue='Sub-category',
palette='Set2', ax=ax)
# Customize
ax.set_xlabel('Account Type', fontsize=12, fontweight='bold')
ax.set_ylabel('Number of Transactions', fontsize=12, fontweight='bold')
ax.set_title('Transaction Frequency by Account Type and Sub-Category',
fontsize=14, fontweight='bold', pad=20)
ax.legend(title='Sub-Category', title_fontsize=11, fontsize=10, bbox_to_anchor=(1.05, 1), loc='upper left')
ax.grid(axis='y', alpha=0.3)
plt.tight_layout()
plt.savefig('03_transaction_count.png', dpi=300, bbox_inches='tight')
plt.show()
print("✓ Visualization 3 saved: Transaction Count by Account Type")
The count plot displays transaction frequency by account type, segmented by sub-category. Different account types (Credit, Savings, Checking) show varying transaction patterns. Stacked colors represent sub-categories. This visualization reveals which accounts handle specific expense types most frequently. High transaction counts on credit accounts might indicate recurring expenses, while low counts on savings suggest reserve preservation. This analysis is valuable for account optimization and transaction routing decisions in financial systems.
Visualization 4: Daily Spending Pattern Heatmap
# Visualization 4: Heatmap of Spending by Day and Category
# Create pivot table
heatmap_data = df[df['Category Type'] == 'Expense'].pivot_table(
values='Amount',
index='Day_of_Week',
columns='Category',
aggfunc='sum',
fill_value=0
)
# Reorder days
day_order = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
heatmap_data = heatmap_data.reindex(day_order)
# Create heatmap
fig, ax = plt.subplots(figsize=(12, 6))
sns.heatmap(heatmap_data, annot=True, fmt='.0f', cmap='YlOrRd',
cbar_kws={'label': 'Amount ($)'}, linewidths=0.5, ax=ax)
# Customize
ax.set_title('Spending Pattern by Day of Week and Category', fontsize=14, fontweight='bold', pad=20)
ax.set_xlabel('Expense Category', fontsize=12, fontweight='bold')
ax.set_ylabel('Day of Week', fontsize=12, fontweight='bold')
ax.set_xticklabels(ax.get_xticklabels(), rotation=45, ha='right')
plt.tight_layout()
plt.savefig('04_daily_spending_heatmap.png', dpi=300, bbox_inches='tight')
plt.show()
print("✓ Visualization 4 saved: Daily Spending Heatmap")
The heatmap reveals spending patterns across days of the week for each expense category. Warmer colors (red/orange) indicate higher spending; cooler colors suggest lower activity. Each cell shows the amount spent in a specific day-category combination. This visualization identifies temporal patterns—payroll might spike on certain days, while entertainment varies. Useful for cash flow planning and staffing decisions. I’ve used similar heatmaps in my consulting work to optimize transaction processing windows and resource allocation schedules.
Visualization 5: Amount Distribution Box Plot by Category Type
# Visualization 5: Box Plot
fig, ax = plt.subplots(figsize=(12, 6))
# Create box plot
sns.boxplot(data=df, x='Category', y='Amount', hue='Category Type',
palette={'Income': '#2ecc71', 'Expense': '#e74c3c'}, ax=ax)
# Customize
ax.set_xlabel('Category', fontsize=12, fontweight='bold')
ax.set_ylabel('Amount ($)', fontsize=12, fontweight='bold')
ax.set_title('Amount Distribution by Category and Type (Identifying Outliers)',
fontsize=14, fontweight='bold', pad=20)
ax.tick_params(axis='x', rotation=45)
ax.grid(axis='y', alpha=0.3)
ax.legend(title='Type', fontsize=11, title_fontsize=11)
plt.tight_layout()
plt.savefig('05_amount_distribution_boxplot.png', dpi=300, bbox_inches='tight')
plt.show()
print("✓ Visualization 5 saved: Amount Distribution Box Plot")
The box plot shows distribution statistics for transaction amounts by category. The box represents the interquartile range (middle 50% of data); the line inside shows the median. Whiskers extend to the data range; dots beyond whiskers are outliers. Different categories show varying distributions—some concentrated near the median, others highly spread. Outliers indicate unusual transactions worth investigating. This visualization is crucial for anomaly detection. In my ERP systems, I’ve used similar analysis to flag suspicious transactions for compliance teams and fraud detection.
Summary and Key Takeaways
What You’ve Learned:
- EDA Foundation: Proper data loading, cleaning, and exploration techniques
- Financial KPIs: Calculating critical metrics like burn rate, monthly averages, and category-wise analysis
- Time Series Analysis: Understanding temporal patterns in financial data
- Visualization Techniques: Creating business-ready charts with Seaborn and Matplotlib
- Data-Driven Insights: Translating data into actionable business intelligence
Practical Applications:
- Budget Planning: Use monthly trends to forecast and allocate resources
- Cost Optimization: Identify and reduce unnecessary expenses in high-spending categories
- Financial Reporting: Generate executive dashboards using these visualizations
- Trend Analysis: Detect seasonal patterns and plan for peak spending periods
- Anomaly Detection: Identify outliers and unusual transactions for investigation
Next Steps:
Once you master this dataset, advance your skills by:
- Building interactive dashboards using Power BI or Tableau (I’ve created 300+ dashboards using these tools)
- Implementing predictive models using machine learning for expense forecasting
- Creating automated reporting systems with Python scheduling
- Developing full-stack financial applications similar to the HR & Payroll Management ERP I’ve built
Complete Code Repository
Here’s the entire code in one executable script for your reference:
# Complete Finance Expenses EDA Script
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from datetime import datetime
import warnings
warnings.filterwarnings('ignore')
# Configuration
sns.set_style("whitegrid")
plt.rcParams['figure.figsize'] = (12, 6)
# Load data
df = pd.read_excel('Generated_Finance_Expenses.xlsx')
# Data preparation
df['Date'] = pd.to_datetime(df['Date'])
df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month
df['Month_Name'] = df['Date'].dt.strftime('%B')
df['Week'] = df['Date'].dt.isocalendar().week
df['Day_of_Week'] = df['Date'].dt.day_name()
df['Quarter'] = df['Date'].dt.quarter
df['Combined_Amount'] = df['Debit'].fillna(0) + df['Credit'].fillna(0)
# KPI Calculations
total_income = df[df['Category Type'] == 'Income']['Amount'].sum()
total_expenses = df[df['Category Type'] == 'Expense']['Amount'].abs().sum()
burn_rate = (total_expenses / total_income) * 100
savings_rate = 100 - burn_rate
income_monthly = df[df['Category Type'] == 'Income'].groupby('Month')['Amount'].sum()
expense_monthly = df[df['Category Type'] == 'Expense'].groupby('Month')['Amount'].abs().sum()
category_expense = df[df['Category Type'] == 'Expense'].groupby('Category')['Amount'].sum().sort_values(ascending=False)
# Print KPIs
print("=" * 60)
print("FINANCIAL KPIs")
print("=" * 60)
print(f"Total Income: ${total_income:,.2f}")
print(f"Total Expenses: ${total_expenses:,.2f}")
print(f"Net Cash Flow: ${total_income - total_expenses:,.2f}")
print(f"Burn Rate: {burn_rate:.2f}%")
print(f"Savings Rate: {savings_rate:.2f}%")
print(f"Average Monthly Income: ${income_monthly.mean():,.2f}")
print(f"Average Monthly Expenses: ${expense_monthly.mean():,.2f}")
# Create all visualizations
# [All visualization code from above]
About the Author
Ankit Srivastava is a Data Analytics specialist and IT educator with extensive experience in:
- Building enterprise ERPs (School Management, Hospital Management, HR & Payroll systems)
- Creating 300+ analytical dashboards using Excel, Power BI, Tableau, and Python
- Training 10,000+ students through online courses on data analytics and programming
- Consulting for Fortune 500 companies on financial analytics and business intelligence
His practical experience translates into real-world, applicable learning content that bridges the gap between academic theory and industry practice.
Ready to master data analytics? Enroll in our Data Analytics Course at Slidescope to learn from industry practitioners like Ankit and build your portfolio with real projects.
Explore Slidescope Courses → Slidescope.com
