TaxDirection / app.py
SantanuBanerjee's picture
Update app.py
61e6b62 verified
raw
history blame
3.29 kB
import gradio as gr
import pandas as pd
def data_pre_processing(file_responses):
# Financial Weights are in per decas and NOT per cents
try:
# Define the columns to be processed
columns = [
'''Your financial allocation for Problem 1:
Mention the percentage of your Tax Amount which you wish the Government would allocate through their annual budget, to implement a specific solution for your 1st problem.''',
'''Your financial allocation for Problem 2:
Mention the percentage of your Tax Amount which you wish the Government would allocate through their annual budget, to implement a solution specifically to your 2nd problem.''',
'''Your financial allocation for Problem 3:
Mention the percentage of your Tax Amount which you wish the Government would allocate through their annual budget, to implement a solution specifically to your 3rd problem.'''
]
# Convert columns to numeric and fill NaN values with 0
for col in columns:
file_responses[col] = pd.to_numeric(file_responses[col], errors='coerce').fillna(0)
# Calculate the Total Allocation
file_responses['Total Allocation'] = file_responses[columns].sum(axis=1)
# Convert the Tax Payment column to numeric
tax_payment_col = '''How much was your latest Tax payment (in U$D) ?
Please try to be as accurate as possible:
Eg.: If your last tax amount was INR 25,785/-; then convert it in U$D and enter only the amount as: 310.
If you have never paid tax, consider putting in a realistic donation amount which wish to contribute towards helping yourself obtain the desired relief.'''
file_responses[tax_payment_col] = pd.to_numeric(file_responses[tax_payment_col], errors='coerce').fillna(0)
# Calculate Financial Token Weights
for i, col in enumerate(columns, start=1):
file_responses[f'Financial Token Weight for Problem {i}'] = (
file_responses[tax_payment_col] * file_responses[col] / file_responses['Total Allocation']
).fillna(0)
return file_responses
except Exception as e:
return str(e)
def nlp_pipeline(original_df):
processed_df = data_pre_processing(original_df)
return processed_df
def process_excel(file):
try:
# Ensure the file path is correct
file_path = file.name if hasattr(file, 'name') else file
# Read the Excel file
df = pd.read_excel(file_path)
# Process the DataFrame
result_df = nlp_pipeline(df)
return result_df # Return the processed DataFrame
except Exception as e:
return str(e) # Return the error message
# Define the Gradio interface
interface = gr.Interface(
fn=process_excel, # The function to process the uploaded file
inputs=gr.File(type="filepath", label="Upload Excel File"), # File upload input
outputs="dataframe", # Display the output as a DataFrame
title="Excel File Uploader",
description="Upload an Excel file to see the first few rows."
)
# Launch the interface
if __name__ == "__main__":
interface.launch()