TaxDirection / app.py
SantanuBanerjee's picture
Update app.py
3d103e2 verified
raw
history blame
3.64 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)
output_file = "OutPut_file.xlsx"
result_df.to_excel(output_file, index=False)
return output_file # Return the processed DataFrame as Excel file
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=gr.File(label="Download Processed Excel File"), # File download output
title="Excel File Uploader",
description="Upload an Excel file to process and download the result."
# 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()