ming2gui4's picture
Rename anova.py to app.py
70a8f49 verified
import gradio as gr
import pandas as pd
import pingouin as pg
def kira_anova(alamat: str) -> pd.DataFrame:
komponen_alamat: list = alamat.split("/")
spreadsheet: str = komponen_alamat[5]
sheet: str = komponen_alamat[6].split("#")[1]
alamat_baru: str = f'https://docs.google.com/spreadsheets/d/{spreadsheet}/export?format=csv&{sheet}'
data: pd.DataFrame = pd.read_csv(alamat_baru)
senarai_lajur: list = list(data.columns)
dv: str = senarai_lajur[-1]
faktor: list = senarai_lajur[:-1]
jadual_anova: pd.DataFrame = pg.anova(
data=data,
dv=dv,
between=faktor,
ss_type=3,
detailed=True,
effsize="np2"
).round(5)
if jadual_anova.iloc[-2, -2] >= 0.05:
jadual_anova = pg.anova(
data=data,
dv=dv,
between=faktor,
ss_type=2,
detailed=True,
effsize="np2"
).round(5)
return jadual_anova
arahan: str = f'''1. Data dalam bentuk memanjang ke bawah.
2. Pembolehubah bersandar berada di *lajur terakhir (paling kanan)*.
3. Status *sharing* file Google Sheet ditetapkan sebagai *Anyone with the link*.
4. Sila masukkan alamat file Google Sheet di sini:
'''
analisis_data: gr.Interface = gr.Interface(
fn=kira_anova,
inputs=gr.Textbox(label="Alamat Google Sheet", show_label=True),
outputs=gr.DataFrame(label="Jadual ANOVA", show_label=True),
description=arahan,
allow_flagging="never",
title="N-Way Univariate ANOVA",
submit_btn=gr.Button("Hantar", variant="primary"),
clear_btn=gr.Button("Semula", variant="secondary")
)
if __name__ == "__main__":
analisis_data.launch()