engralimalik's picture
Update app.py
3ce8ba3 verified
raw
history blame
1.28 kB
import gradio as gr
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from transformers import pipeline
import plotly.express as px
# Initialize the Hugging Face model for expense categorization (use zero-shot classification)
expense_classifier = pipeline("zero-shot-classification", model="facebook/bart-large-mnli")
# Batch categorization function for efficiency
def categorize_transaction_batch(descriptions):
candidate_labels = ["Groceries", "Entertainment", "Rent", "Utilities", "Dining", "Transportation", "Shopping", "Others"]
return [expense_classifier(description, candidate_labels)["labels"][0] for description in descriptions]
# Function to process the uploaded CSV and generate visualizations
def process_expenses(file):
# Read CSV data
df = pd.read_csv(file.name)
# Check if required columns are present
if 'Date' not in df.columns or 'Description' not in df.columns or 'Amount' not in df.columns:
return "CSV file should contain 'Date', 'Description', and 'Amount' columns."
# Categorize the expenses (using batch processing to minimize model calls)
df['Category'] = categorize_transaction_batch(df['Description'].tolist())
# Create visualizations:
# 1. Pie chart for Category-wise spendin