gaur3009 commited on
Commit
c980c20
·
verified ·
1 Parent(s): 9018f8f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -15
app.py CHANGED
@@ -66,7 +66,6 @@ def analyze_financial_data(file):
66
  # Read the uploaded CSV file
67
  data = pd.read_csv(file.name, encoding="utf-8", on_bad_lines='skip')
68
  except UnicodeDecodeError:
69
- # Fallback for non-UTF-8 encoding
70
  try:
71
  data = pd.read_csv(file.name, encoding="ISO-8859-1", on_bad_lines='skip')
72
  except Exception as e:
@@ -74,19 +73,29 @@ def analyze_financial_data(file):
74
  except Exception as e:
75
  return {"error": f"An unexpected error occurred: {str(e)}"}
76
 
77
- # Handle empty or malformed data
78
  if data.empty:
79
  return {"error": "The uploaded file is empty or has an invalid structure."}
80
 
81
- # Validate required columns
82
- required_columns = ["Revenue", "Profit", "Loss", "Expenses", "Risk_Level"]
83
- if not all(column in data.columns for column in required_columns):
84
- return {"error": f"The CSV must include these columns: {', '.join(required_columns)}"}
 
 
 
 
 
 
 
 
 
 
 
85
 
86
  try:
87
  # Data Preprocessing
88
- X = data[["Revenue", "Profit", "Loss", "Expenses"]].dropna()
89
- y = data["Risk_Level"].dropna()
90
 
91
  if X.empty or y.empty:
92
  return {"error": "The data contains missing values or invalid rows after cleaning."}
@@ -114,10 +123,9 @@ def analyze_financial_data(file):
114
  gan.train(torch.tensor(X_pca, dtype=torch.float32), epochs=200)
115
  anomalies = gan.generate(n_samples=5, input_dim=X_pca.shape[1])
116
 
117
- # Insights
118
- total_revenue = data["Revenue"].sum()
119
- total_profit = data["Profit"].sum()
120
- total_loss = data["Loss"].sum()
121
 
122
  return {
123
  "Accuracy": f"{accuracy * 100:.2f}%",
@@ -136,9 +144,7 @@ def analyze_financial_data(file):
136
  # Gradio Interface
137
  with gr.Blocks(theme=gr.themes.Monochrome()) as interface:
138
  gr.Markdown("# **AI Risk Analyst Agent**")
139
- gr.Markdown(
140
- "Analyze your financial risks and identify anomalies using advanced AI models. Upload financial data in CSV format to get started."
141
- )
142
  with gr.Row():
143
  with gr.Column():
144
  data_file = gr.File(label="Upload Financial Data (CSV)", file_types=[".csv"])
 
66
  # Read the uploaded CSV file
67
  data = pd.read_csv(file.name, encoding="utf-8", on_bad_lines='skip')
68
  except UnicodeDecodeError:
 
69
  try:
70
  data = pd.read_csv(file.name, encoding="ISO-8859-1", on_bad_lines='skip')
71
  except Exception as e:
 
73
  except Exception as e:
74
  return {"error": f"An unexpected error occurred: {str(e)}"}
75
 
 
76
  if data.empty:
77
  return {"error": "The uploaded file is empty or has an invalid structure."}
78
 
79
+ # Dynamically map required columns
80
+ expected_columns = ["Revenue", "Profit", "Loss", "Expenses", "Risk_Level"]
81
+ available_columns = data.columns.tolist()
82
+ column_mapping = {}
83
+
84
+ for expected_col in expected_columns:
85
+ for available_col in available_columns:
86
+ if expected_col.lower() in available_col.lower():
87
+ column_mapping[expected_col] = available_col
88
+ break
89
+
90
+ if len(column_mapping) != len(expected_columns):
91
+ return {"error": f"The CSV must contain columns similar to: {', '.join(expected_columns)}"}
92
+
93
+ data.rename(columns=column_mapping, inplace=True)
94
 
95
  try:
96
  # Data Preprocessing
97
+ X = data[[column_mapping["Revenue"], column_mapping["Profit"], column_mapping["Loss"], column_mapping["Expenses"]]].dropna()
98
+ y = data[column_mapping["Risk_Level"]].dropna()
99
 
100
  if X.empty or y.empty:
101
  return {"error": "The data contains missing values or invalid rows after cleaning."}
 
123
  gan.train(torch.tensor(X_pca, dtype=torch.float32), epochs=200)
124
  anomalies = gan.generate(n_samples=5, input_dim=X_pca.shape[1])
125
 
126
+ total_revenue = data[column_mapping["Revenue"]].sum()
127
+ total_profit = data[column_mapping["Profit"]].sum()
128
+ total_loss = data[column_mapping["Loss"]].sum()
 
129
 
130
  return {
131
  "Accuracy": f"{accuracy * 100:.2f}%",
 
144
  # Gradio Interface
145
  with gr.Blocks(theme=gr.themes.Monochrome()) as interface:
146
  gr.Markdown("# **AI Risk Analyst Agent**")
147
+ gr.Markdown("Analyze your financial risks and identify anomalies using AI models.")
 
 
148
  with gr.Row():
149
  with gr.Column():
150
  data_file = gr.File(label="Upload Financial Data (CSV)", file_types=[".csv"])