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 example_files = ['#TaxDirection (Responses)_Example1.xlsx', ] # 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 examples=example_files, # Add the example files # outputs=gr.File(label="Download Processed Excel File"), # File download output outputs=gr.File(label="

Download Processed Excel File containing the Project Proposals for each Location~Problem paired combination

"), # File download output title="Excel File Uploader", # description="Upload an Excel file to process and download the result.", description="Upload an Excel file to process and download the result or use the example files (click on anyone of them)." # title="

Excel File Uploader

", # Solid title # description="

Upload an Excel file to process and download the result or use the example files.

", # Solid description # description=( # "

Upload an Excel file to process and download the result " # "or use the example files. The processed file will contain the project proposals for each " # "location-problem paired combination.

" # ), # Solid description ) # Launch the interface if __name__ == "__main__": interface.launch()