bbbdbbb commited on
Commit
73264e0
·
verified ·
1 Parent(s): 1b64fcf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -28
app.py CHANGED
@@ -1,44 +1,41 @@
 
1
  import pandas as pd
2
  import matplotlib.pyplot as plt
3
- import gradio as gr
4
  import tempfile
5
  import os
6
 
7
- def analyze_csv(file):
8
- # 读取上传的文件
9
- df = pd.read_csv(file.name)
10
 
11
- # 统计信息
12
  stats = df.describe().loc[["mean", "std", "min", "max"]].round(2).to_string()
13
 
14
- # 临时生成图片路径
15
- tmp_img_path = os.path.join(tempfile.gettempdir(), "income_vs_score.png")
16
-
17
- # 绘制散点图
18
  plt.figure(figsize=(6, 4))
19
  plt.scatter(df["Income"], df["SpendingScore"], alpha=0.7)
20
- plt.title("Income vs Spending Score")
21
  plt.xlabel("Income")
22
  plt.ylabel("Spending Score")
 
23
  plt.grid(True)
24
  plt.tight_layout()
25
- plt.savefig(tmp_img_path)
26
  plt.close()
27
 
28
- # 返回字典结构,避免多输出 schema 解析问题
29
- return {
30
- "统计摘要": stats,
31
- "图表": tmp_img_path
32
- }
33
-
34
- # Gradio 接口,注意 outputs 使用 gr.Json 兼容 dict 返回
35
- iface = gr.Interface(
36
- fn=analyze_csv,
37
- inputs=gr.File(file_types=[".csv"], label="上传CSV文件"),
38
- outputs=gr.JSON(label="分析结果(包含统计摘要 + 图像路径)"),
39
- title="📊 表格分析大模型",
40
- description="上传一个CSV表格,我将输出统计分析结果并展示一张图表的路径。"
41
- )
42
-
43
- if __name__ == "__main__":
44
- iface.launch()
 
1
+ import gradio as gr
2
  import pandas as pd
3
  import matplotlib.pyplot as plt
 
4
  import tempfile
5
  import os
6
 
7
+ def analyze(file_obj):
8
+ # 读取CSV
9
+ df = pd.read_csv(file_obj.name)
10
 
11
+ # 统计摘要
12
  stats = df.describe().loc[["mean", "std", "min", "max"]].round(2).to_string()
13
 
14
+ # 生成图表并保存为临时图片
15
+ tmp_path = os.path.join(tempfile.gettempdir(), "income_vs_score.png")
 
 
16
  plt.figure(figsize=(6, 4))
17
  plt.scatter(df["Income"], df["SpendingScore"], alpha=0.7)
 
18
  plt.xlabel("Income")
19
  plt.ylabel("Spending Score")
20
+ plt.title("Income vs Spending Score")
21
  plt.grid(True)
22
  plt.tight_layout()
23
+ plt.savefig(tmp_path)
24
  plt.close()
25
 
26
+ return stats, tmp_path
27
+
28
+
29
+ with gr.Blocks(title="CSV分析工具") as demo:
30
+ gr.Markdown("## 📊 表格分析大模型\n请上传一个CSV文件,我将输出统计摘要并绘制图表。")
31
+
32
+ with gr.Row():
33
+ file_input = gr.File(label="上传 CSV 文件", file_types=[".csv"])
34
+ run_btn = gr.Button("开始分析")
35
+
36
+ output_text = gr.Textbox(label="统计摘要", lines=10)
37
+ output_image = gr.Image(label="图表")
38
+
39
+ run_btn.click(fn=analyze, inputs=file_input, outputs=[output_text, output_image])
40
+
41
+ demo.launch()