haruka yasui
Create app.py
3aea5d1 verified
import gradio as gr
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
def visualize_data(df):
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(20, 16))
# スクロール深度とクリック率の関係
sns.scatterplot(data=df, x='スクロール深度', y='クリック率', ax=ax1)
ax1.set_title('スクロール深度とクリック率の関係')
ax1.set_xlabel('スクロール深度')
ax1.set_ylabel('クリック率')
# クリック率の分布
sns.boxplot(data=df, y='クリック率', ax=ax2)
ax2.set_title('クリック率の分布')
# 離脱率の分布
sns.histplot(data=df, x='離脱率', kde=True, ax=ax3)
ax3.set_title('離脱率の分布')
# クリック数の分布
sns.histplot(data=df, x='クリック数', kde=True, ax=ax4)
ax4.set_title('クリック数の分布')
plt.tight_layout()
return fig
def process_input(file):
df = pd.read_csv(file.name)
visualization_plot = visualize_data(df)
# データの概要を文字列として取得
data_summary = df.describe().to_string()
return visualization_plot, data_summary
iface = gr.Interface(
fn=process_input,
inputs=[
gr.File(label="CSVファイルをアップロード")
],
outputs=[
gr.Plot(label="データ可視化"),
gr.Textbox(label="データ概要", lines=10)
],
title="リスティング広告LPデータの可視化",
description="CSVデータをアップロードして、データの可視化と概要を表示します。"
)
if __name__ == "__main__":
iface.launch()