baconnier commited on
Commit
830b865
·
verified ·
1 Parent(s): 67f471c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -23
app.py CHANGED
@@ -7,40 +7,36 @@ import os
7
  class DataAnalyzer:
8
  def __init__(self):
9
  self.temp_dir = tempfile.mkdtemp()
10
- self.current_df = None
11
 
12
  def generate_sweetviz_report(self, df):
 
13
  report = sv.analyze(df)
14
- # Save to temporary file
15
- temp_path = os.path.join(self.temp_dir, "report.html")
16
- report.show_html(temp_path, open_browser=False)
17
 
18
- # Read the content
19
- with open(temp_path, 'r', encoding='utf-8') as f:
20
- content = f.read()
21
- return content
22
-
23
- def get_dataset_info(self, df):
24
- info_dict = {
25
- "Rows": len(df),
26
- "Columns": len(df.columns),
27
- "Memory Usage (MB)": round(df.memory_usage(deep=True).sum() / 1024**2, 2),
28
- "Missing Values": int(df.isnull().sum().sum()),
29
- "Column Types": df.dtypes.astype(str).to_dict()
30
- }
31
- return info_dict
32
 
33
  def create_interface():
34
  analyzer = DataAnalyzer()
35
 
36
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
37
- gr.Markdown("# CSV Data Analysis Dashboard")
38
 
39
  with gr.Row():
40
  file_input = gr.File(label="Upload CSV")
41
  dataset_info = gr.JSON(label="Dataset Information")
42
 
43
- report_html = gr.HTML()
 
44
 
45
  def process_file(file):
46
  if file is None:
@@ -48,13 +44,25 @@ def create_interface():
48
 
49
  try:
50
  df = pd.read_csv(file.name)
51
- info = analyzer.get_dataset_info(df)
 
 
 
 
 
 
 
 
 
 
 
 
52
  report = analyzer.generate_sweetviz_report(df)
53
 
54
  return info, report
55
 
56
  except Exception as e:
57
- return {"error": str(e)}, None
58
 
59
  file_input.change(
60
  fn=process_file,
@@ -66,4 +74,7 @@ def create_interface():
66
 
67
  if __name__ == "__main__":
68
  demo = create_interface()
69
- demo.launch()
 
 
 
 
7
  class DataAnalyzer:
8
  def __init__(self):
9
  self.temp_dir = tempfile.mkdtemp()
 
10
 
11
  def generate_sweetviz_report(self, df):
12
+ # Create Sweetviz report
13
  report = sv.analyze(df)
 
 
 
14
 
15
+ # Save to temporary file with specific name
16
+ report_path = os.path.join(self.temp_dir, "sweetviz_report.html")
17
+ report.show_html(report_path, open_browser=False)
18
+
19
+ # Read the generated HTML
20
+ with open(report_path, 'r', encoding='utf-8') as f:
21
+ html_content = f.read()
22
+
23
+ # Clean up the temporary file
24
+ os.remove(report_path)
25
+
26
+ return html_content
 
 
27
 
28
  def create_interface():
29
  analyzer = DataAnalyzer()
30
 
31
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
32
+ gr.Markdown("# Data Analysis Dashboard")
33
 
34
  with gr.Row():
35
  file_input = gr.File(label="Upload CSV")
36
  dataset_info = gr.JSON(label="Dataset Information")
37
 
38
+ # Create a larger HTML viewer for the report
39
+ report_html = gr.HTML(label="Analysis Report", height=800)
40
 
41
  def process_file(file):
42
  if file is None:
 
44
 
45
  try:
46
  df = pd.read_csv(file.name)
47
+
48
+ # Convert 'value' column to numeric if possible
49
+ df['value'] = pd.to_numeric(df['value'], errors='coerce')
50
+
51
+ info = {
52
+ "Rows": len(df),
53
+ "Columns": len(df.columns),
54
+ "Memory Usage (MB)": round(df.memory_usage(deep=True).sum() / 1024**2, 2),
55
+ "Missing Values": df.isnull().sum().sum(),
56
+ "Column Types": df.dtypes.astype(str).to_dict()
57
+ }
58
+
59
+ # Generate Sweetviz report
60
  report = analyzer.generate_sweetviz_report(df)
61
 
62
  return info, report
63
 
64
  except Exception as e:
65
+ return {"error": str(e)}, f"Error generating report: {str(e)}"
66
 
67
  file_input.change(
68
  fn=process_file,
 
74
 
75
  if __name__ == "__main__":
76
  demo = create_interface()
77
+ demo.launch(
78
+ height=1000, # Increased height for better report visibility
79
+ show_error=True
80
+ )