|
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], |
|
] |
|
|
|
|
|
|
|
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() |
|
|
|
|