Gradio 互動式報表教學:用 Codex 把 Python 分析程式變成可篩選、可分享的工具

Gradio 互動式報表適合已有 Python 分析程式、想讓同事自行篩選資料的人。用 10 筆合成訂單示範 Codex 需求寫法、KPI 驗算、CSV 下載與分享方式,附可執行範例。

Share
Gradio 互動式報表:北區兩筆合成訂單金額 2400 元
本文程式的本機實跑畫面,訂單為自行編造的教學資料。

已有 Python 程式算出訂單金額,卻常因同事換地區、換日期,又要重跑一次,這正是 Gradio 互動式報表能接手的工作。

因為對方需要自己選條件的畫面,所以只讓 AI 多畫一張固定圖表,還沒解決來回改報表的問題。

Gradio 可以用 Python 把篩選欄位接到既有函式,讓操作介面的人按下按鈕,就看到重新計算的結果。

但介面不會替你判斷訂單金額算得對不對,資料定義、篩選條件與錯誤處理,仍要由分析者確認。

因此,這個做法適合已能執行 Python 分析、想先做出可操作原型的人。若需要完整帳號權限與企業報表管理,還要另行設計。

先弄清楚操作介面會接手哪一段工作,才容易判斷自己的分析程式適不適合改成互動報表。

Gradio 互動式報表適合哪些工作?

如果每次修改報表只是換日期或類別,再重跑同一段 Python,Gradio 就能把這些條件變成操作欄位。

例如選「北區」後按下更新,程式只保留北區訂單,再計算金額。使用者不必開啟程式碼,分析者也不用為每一種條件另外製作檔案。

這些欄位叫作元件,就是下拉選單、按鈕、表格這類畫面元素。它們負責收集輸入或顯示輸出,計算仍交給 Python 函式。

依 Gradio 官方快速入門,它可以替一般 Python 函式建立網頁介面。因此,這裡不需要先把分析程式改寫成另一種網頁語言。

但如果工作已涉及每位同事只能看不同客戶、大量資料即時查詢,或多人共同修改資料,光有篩選欄位還不夠,必須另外設計權限與資料處理流程。

這份範例先處理一個較小的任務:把同一份訂單資料變成可選日期、看指標與下載明細的報表。要顯示哪些數字,得先由原本的分析程式決定。

先準備能驗算的 Python 訂單分析

範例先定義「訂單金額=數量乘以單價」,再讓畫面上的每一個結果共用這條規則,避免新增介面時順手改掉計算。

下載完整範例:程式、合成 CSV 與測試檔。解壓縮後,orders.csv 放資料,analysis.py 放分析,app.py 放介面。

這 10 筆訂單是自行編造的合成資料,檔案與畫面都標示 Synthetic。它們只用來核對程式,不代表任何公司的訂單或商業成效。

以下欄位決定了這份報表怎麼算,換資料前要先確認它們的意思。

欄位 範例中的意思
order_id 唯一訂單編號,每列算一筆訂單
date 訂單日期,篩選包含開始與結束當天
region 北區、中區或南區
qty、unit_price 數量與示例新臺幣單價
amount 程式計算的數量乘以單價

因此,這裡的「訂單數」就是資料列數,「平均每筆金額」則是金額合計除以筆數。示例金額沒有納入折扣、退貨、稅與運費,不能直接套用為企業營收。

analysis.py 把工作拆成載入資料、依條件篩選與彙總指標。介面只要呼叫它,就不用重新寫一套計算。

from analysis import filter_orders, summarize

filtered = filter_orders("北區", "2026-10-02", "2026-10-04")
print(summarize(filtered))
# {'orders': 2, 'amount': 2400, 'average': 1200.0}

這段先在沒有網頁畫面的情況下得到 2 筆、2,400 元。之後加上按鈕,仍要得到相同答案,才表示介面把資料接對了。

怎麼請 Codex 加入篩選、KPI 與下載?

交給 Codex 的需求要寫清楚保留哪些計算,以及使用者按下按鈕後應該得到什麼結果,因為「幫我做報表」沒有交代數字口徑。

Codex 是能讀取、修改程式並執行檢查的 AI 開發工具。這裡讓它新增操作介面,原本的分析函式與核對數字則是它必須遵守的條件。

可以在專案中提供以下需求。這段同時說明背景、畫面與驗收方式,讓產出比較容易檢查。

**任務:**保留 analysis.py 的計算規則,用 Gradio 6.30.0 新增 app.py。

**背景:**使用者已能跑 Python,但不熟前端。orders.csv 是合成教學資料,每列一筆訂單。

**畫面:**加入地區、開始日期、結束日期與更新按鈕。顯示訂單數、金額、平均每筆金額、每日金額圖、明細與下載 CSV。

**驗收:**北區 10 月 2 日至 4 日應為 2 筆、2,400 元。明細與下載必須同一批資料。無資料顯示 0,開始日期晚於結束日期時顯示錯誤。只在本機啟動。

其中 KPI 是用來快速掌握結果的重點指標,在本例就是訂單數、金額合計與平均每筆金額。把它們寫明,Codex 才不會自行加上資料無法支持的成長率。

如何安裝並啟動範例?

先安裝 Python 3.10 以上版本,再於解壓縮的資料夾開啟終端機。macOS 可使用以下命令。

python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python app.py

Windows PowerShell 可直接使用專案環境裡的 Python,不必先執行啟用環境的指令。

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\python.exe app.py

第一行建立這個專案專用的套件環境,因此安裝套件時不必改動其他專案。範例使用 Gradio 6.30.0、pandas 2.3.3,並在 Python 3.12 實跑。

啟動後,在同一台電腦打開終端機顯示的本機網址。本例是 http://127.0.0.1:7867,關閉程式後,這個報表也會停止服務。

按下按鈕後,資料怎麼更新?

這段程式的關鍵是把元件接到函式,讓按鈕觸發一次完整計算。這個被按鈕呼叫的函式,也常叫作 callback,也就是接到操作後執行的處理程序。

完整範例的接線如下,輸入次序必須對應函式的地區、開始日期與結束日期。

run.click(
    report,
    inputs=[region, start, end],
    outputs=[summary, table, trend, download],
)

report 先取得篩選資料,再回傳指標文字、明細、每日金額與 CSV 路徑。因此,輸出元件的排列,也必須對應這四個回傳值。

依 Gradio File 元件文件,把檔案路徑交給輸出元件後,就能提供下載。本例為每次執行產生不同暫存路徑,避免兩次匯出互相覆蓋。

若請 Codex 調整介面外觀,也要附上版本。依 Gradio 6 遷移指南,主題參數應放在 launch()。

本例使用的 6.30.0 對舊版 Blocks(theme=...) 會發出移轉提示,因此新增程式時就採用新版寫法。

畫面出現後,還要拿相同條件的原 Python 輸出,核對畫面與下載檔是否算出同一組數字。

怎麼確認篩選與下載沒有算錯?

同一組條件下,KPI、畫面明細與下載 CSV 必須使用同一份篩選結果,因為三者只要各自計算,就可能出現畫面更新了、下載卻還是全部資料的情況。

範例中的 report 先產生一份篩選結果,再把它分別交給彙總、圖表與檔案輸出。以下是這份合成資料實跑後的核對值。

測試條件 訂單數 金額合計 檢查重點
全部,10/1–10/7 10 筆 12,000 元 完整資料基準
北區,10/1–10/7 4 筆 4,600 元 地區條件有效
北區,10/2–10/4 2 筆 2,400 元 兩個條件同時生效
全部,10/3–10/3 2 筆 2,400 元 日期含首尾當天
全部,10/8–10/9 0 筆 0 元 無資料時仍可讀取空表

北區 10/2–10/4 對應 S1003 與 S1006,兩筆金額為 900 元及 1,500 元,所以平均每筆是 1,200 元。下載的 CSV 也必須只包含這兩個編號。

Gradio 互動式報表篩選北區訂單後顯示 2 筆與 2400 元 本文程式在本機實跑的篩選結果,圖中訂單為自行編造的教學資料。畫面與下載檔案均對應北區 10 月 2 日至 4 日的兩筆資料。

範例另外檢查了日期倒置與錯誤格式,並透過程式呼叫介面實際觸發篩選、讀取下載檔案。核對結果列在下載包的 test-results.json,也可執行 python test_demo.py 重跑。

若選到沒有訂單的日期,平均每筆金額也顯示 0,避免除以零。如果開始日期晚於結束日期,畫面會顯示明確錯誤,請使用者修正條件。

確認這些小案例後,再換成自己的資料才容易找出差異。如果資料本身要先從網站或資料服務取得,還需要處理來源與更新失敗。

延伸閱讀:Replit Agent 教學:AI 爬蟲如何變成金融 Dashboard?

當計算與下載都一致,才需要決定誰能打開報表,以及程式應該在哪裡持續執行。

如何分享報表,才不會把測試當正式上線?

本機執行、臨時分享與部署到主機,對使用者來說都是開網頁,但存取範圍與維護責任不同。以下依使用方式比較。

方式 用途 需要留意
本機網址 自己確認資料與功能 本例綁定 127.0.0.1,供同一台電腦使用
share=True 提供可由外部打開的臨時網址 網址公開,本機程式仍需保持啟動
Hugging Face Spaces 把程式部署到代為執行程式的主機服務 要確認資料公開範圍、運算資源與存取設定

因此,臨時分享適合用合成資料展示操作,不能把「拿到網址」當成已完成長期部署。本次範例只測試本機,沒有開啟公開分享或上傳外部主機。

依 2026 年 10 月 20 日查詢的 Gradio 分享文件,臨時連結一週到期,而且分享服務只是轉送到本機的程式,所以電腦關機或程式停止,也會影響使用。

若報表要長期提供給同事,則要讓它在持續運作的環境執行。選擇部署到 Spaces 時,但誰可以讀資料、誰可以下載,仍需依組織需求設定。

對含客戶、員工或公司內部資料的報表,先確認資料與存取規則,再選擇部署方式。不要直接把公開示例換成敏感 CSV 就分享出去。

Gradio 互動式報表常見問題

不會前端,也能做互動報表嗎?

可以先用 Python 建立元件與互動,但仍需要能啟動程式、理解資料欄位並核對結果。

本例適合已有分析程式的人,並不保證完全沒有程式基礎也能直接完成。

Gradio 一定要搭配 ChatGPT 或 Codex 嗎?

不必,它本身是 Python 套件,本例執行時也不需要 AI 服務金鑰。

Codex 的角色是協助寫程式與檢查,報表運作仍由 Python 執行。

報表可以直接處理 Excel 或公司資料嗎?

可以另外編寫資料載入與清理流程,但要先確認欄位、日期與金額定義。

如果一張訂單拆成多列商品,本例用資料列數當訂單數的算法就要改,否則會把訂單筆數算多。

分享連結會一直有效嗎?

臨時連結有有效期,也需要本機程式繼續執行。

若要長期提供服務,應另外安排部署、資源與存取控制。

想把自己的 Python 報表做成可操作工具?

先完成一份小資料的互動報表,才容易分辨接下來缺的是介面設計、程式審查,還是部署能力。帶著一組能核對的數字開始,也更容易判斷 AI 有沒有改錯原本的分析。

如果想跟著示範,把既有程式加入篩選、KPI、趨勢圖與下載,可以參考 Skill Shot 17|資料分析 AI 實戰:ChatGPT x Gradio 打造互動式分析報表。

課程預定於 2026 年 11 月 15 日(日)10:00–11:30,台灣時間,以 Zoom 直播,適合已有 Python 分析程式、想透過 Codex 建立介面的人。報名方式與最新費用可在課程頁查看。

如果還在挑選適合交給 AI 的工作,也可以先從已有輸入資料、能驗收成果的小任務開始。

延伸閱讀:2026 新版 ChatGPT 用法大全:100 個真的能完成工作的使用情境(ChatGPT Work、Codex 分類)