當代的數據科學領域,Stata 以其嚴謹的統計報表著稱,而 Python 則在資料清理與結構變換(如長寬表轉換)展現了強大的彈性。對於追求專業效率的研究者而言,不再需要將資料在多個軟體間匯出匯入,透過 Stata 內置的 Python 引擎,我們可以在同一個 .do 執行檔中完成所有工作。
本文將以一個實際的臨床滿意度調查資料為例,示範如何在 Stata 19.5 環境下串接 Python。
一、 環境建置:穩定連結的基礎
在開始分析前,最關鍵的一步是讓 Stata 找到正確的 Python 實體路徑。如果您使用 pyenv 進行環境管理,請務必指向真正的 .exe 檔案。
- 在Windows,開啟命令提示字元(cmd),鍵入
where python,即可以找到系統預設python位置 - 在 macOS(蘋果電腦)上,可以用 Terminal(終端機) 鍵入
which python3,查詢 Python 安裝位置
# Windows
Microsoft Windows [版本 10.0.26200.8457]
(c) Microsoft Corporation. 著作權所有,並保留一切權利。
C:\Users\user>where python
C:\Program Files\Python311\python.exe
找到 python位置後,回到Stata ,鍵入 set python_exec <你的Python路徑> , permanently ,即設定好 Stata 與 python 關聯性,以後就能在 Stata 使用 python
Stata
* 1. 初始化環境
clear all
set python_exec "C:\Users\User\.pyenv\pyenv-win\versions\3.11.9\python.exe", permanently
*註:在執行過程中,若遇到 Unknown #command 錯誤,通常是符號誤用(如用成 # 而非 ),修正為註解符號即可。

二、匯入CSV檔
import delimited "C:\0514\data.csv", encoding("UTF-8") clear
list in 1/10 // 查看前10筆長表數據

三、 Python 介入:優雅的資料重組 (Reshaping)
雖然 Stata 有 reshape 指令,但面對複雜結構時,Python 的 Pandas 庫提供了更直覺的邏輯。
Stata 啟用 python ,只要在Command 中 鍵入 python後,即可以進入python,退出python時,輸入end就退出
1. 長表轉寬表 (Long to Wide)
我們將原始數據匯入後,利用 pivot 功能,將「週次 (Week)」展開為獨立欄位。這在檢視個別受試者在不同時間點(如 vist1 與 vist2)的表現變化時非常有幫助。
2. 寬表轉回長表 (Wide to Long)
利用 melt 指令,我們可以輕易將資料轉回長表格式。這對於後續執行 T 檢定或混合模型分析至關重要。
python:
import pandas as pd
from sfi import Data
# 抓取數據並轉為寬表
df = pd.DataFrame(Data.get(None))
df.columns = ['ID', 'Group', 'Week', 'Satisfaction']
df_wide = df.pivot(index=['ID', 'Group'], columns='Week', values='Satisfaction').reset_index()
print(df_wide.head())
end


三、 Stata 統計:精準的 T 檢定分析
完成資料重組後,我們回到 Stata 執行核心統計分析。本次分析重點在於:「實驗組」與「對照組」在滿意度上是否存在顯著差異?
1. 總體滿意度比較
根據 Stata 輸出的 ttest 報表顯示,實驗組平均值為 5.72,對照組為 3.38。
- P 值 (Pr > |t|) = 0.0000:代表兩組間存在極顯著差異。t 值 = 8.8351:顯示實驗組的滿意度顯著高於對照組。
2. 特定時間點 (vist1) 的深入分析
為了更精確了解干預初期的影響,我們利用 if 條件式針對第一週數據進行檢定:
ttest 滿意度 if 週次 == "vist1", by(組別)結果同樣顯示 $p < 0.01$,證明實驗組在初期即展現出優勢。

四、 結語:為什麼研究者需要這種流程?
透過 .do 指令檔(stata_code)進行管理,我們確保了研究的可重複性 (Reproducibility)。當數據更新時,您只需按下一鍵,Stata 就會自動透過 Python 進行清洗,並即時產出最新的統計報表。
這種工作流不僅減少了手動複製貼上的錯誤風險,更能讓研究者專注於數據背後的科學洞察。















