| import pandas as pd |
| import matplotlib.pyplot as plt |
| import gradio as gr |
| import tempfile |
| import os |
|
|
| def analyze_csv(file): |
| |
| df = pd.read_csv(file.name) |
|
|
| |
| stats = df.describe().loc[["mean", "std", "min", "max"]].round(2).to_string() |
|
|
| |
| tmp_img_path = os.path.join(tempfile.gettempdir(), "income_vs_score.png") |
|
|
| |
| plt.figure(figsize=(6, 4)) |
| plt.scatter(df["Income"], df["SpendingScore"], alpha=0.7) |
| plt.title("Income vs Spending Score") |
| plt.xlabel("Income") |
| plt.ylabel("Spending Score") |
| plt.grid(True) |
| plt.tight_layout() |
| plt.savefig(tmp_img_path) |
| plt.close() |
|
|
| |
| return { |
| "统计摘要": stats, |
| "图表": tmp_img_path |
| } |
|
|
| |
| iface = gr.Interface( |
| fn=analyze_csv, |
| inputs=gr.File(file_types=[".csv"], label="上传CSV文件"), |
| outputs=gr.JSON(label="分析结果(包含统计摘要 + 图像路径)"), |
| title="📊 表格分析大模型", |
| description="上传一个CSV表格,我将输出统计分析结果并展示一张图表的路径。" |
| ) |
|
|
| if __name__ == "__main__": |
| iface.launch() |
|
|