Gradio 互動式報表教學:用 Codex 把 Python 分析程式變成可篩選、可分享的工具
Gradio 互動式報表適合已有 Python 分析程式、想讓同事自行篩選資料的人。用 10 筆合成訂單示範 Codex 需求寫法、KPI 驗算、CSV 下載與分享方式,附可執行範例。
已有 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 也必須只包含這兩個編號。
本文程式在本機實跑的篩選結果,圖中訂單為自行編造的教學資料。畫面與下載檔案均對應北區 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 分類)