csv-test / app.py
bbbdbbb's picture
Update app.py
2d928bd verified
import os
os.system("pip uninstall -y gradio")
os.system("pip install gradio==3.50.2")
import pandas as pd
import matplotlib.pyplot as plt
import gradio as gr
import gradio as gr
import pandas as pd
import matplotlib.pyplot as plt
import tempfile
import os
# 主分析函数
def analyze_csv(file, u, alpha1, alpha2):
df = pd.read_csv(file.name)
df_original = df.copy()
df["Computed"] = df["Income"] * u + df["SpendingScore"] * alpha1 - df["Age"] * alpha2
output_path = os.path.join(tempfile.gettempdir(), "processed.csv")
df.to_csv(output_path, index=False)
image_path = os.path.join(tempfile.gettempdir(), "computed_plot.png")
plt.figure(figsize=(6, 4))
plt.plot(df["Income"], df["Computed"], marker='o')
plt.xlabel("Income")
plt.ylabel("Computed Value")
plt.title("Income vs Computed")
plt.grid(True)
plt.tight_layout()
plt.savefig(image_path)
plt.close()
return df_original, df, output_path, image_path
# 示例数据定义(文件路径 + 参数)
example_data = [
["sample_table_0.csv", 0.0002, 0.4, 0.8],
["sample_table_1.csv", 0.0001, 0.5, 1.0],
["sample_table_2.csv", 0.00015, 0.6, 0.7],
]
# 构建 Gradio 界面
with gr.Blocks() as demo:
gr.Markdown("## 📊 表格分析大模型")
gr.Markdown("上传 CSV 文件或点击示例,我将为你分析并可视化结果。")
with gr.Row():
file_input = gr.File(label="上传CSV文件", file_types=[".csv"])
u = gr.Number(label="u", value=0.0001)
alpha1 = gr.Number(label="alpha1", value=0.5)
alpha2 = gr.Number(label="alpha2", value=1.0)
run_btn = gr.Button("开始分析")
gr.Markdown("### ✅ 示例(点击自动加载)")
gr.Examples(
examples=example_data,
inputs=[file_input, u, alpha1, alpha2],
outputs=["original_table", "processed_table", "download", "image"],
fn=analyze_csv,
examples_per_page=3,
label="点击示例自动分析"
)
gr.Markdown("### 📄 原始 CSV")
original_table = gr.Dataframe(label="original_table")
gr.Markdown("### 📑 处理后 CSV")
processed_table = gr.Dataframe(label="processed_table")
download = gr.File(label="下载处理结果", elem_id="download")
gr.Markdown("### 📈 图表可视化")
image = gr.Image(label="image")
run_btn.click(fn=analyze_csv,
inputs=[file_input, u, alpha1, alpha2],
outputs=[original_table, processed_table, download, image])
demo.launch()