2017-07-27 43 views
1

我有一個熊貓數據框(100x10),其中每列表示一些數量,我想用t檢驗對所有列進行配對測試。相反,遍歷列:熊貓數據框上的成對測試統計顯着

stats.ttest_rel(df.iloc[:,i], df.iloc[:,j]) 

其中i!=j,是有一個更清潔的方式做到這一點?類似於相關性的東西:

df.corr() 

它計算所有成對相關性。

回答

2

不需要自己做一個雙循環。您可以使用itertools.combinations

results = pd.DataFrame(columns=df.columns, index=df.columns) 
for (label1, column1), (label2, column2) in itertools.combinations(df.items(), 2): 
    results.loc[label1, label2] = results.loc[label2, label1] = stats.ttest_rel(column1, column2) 
2

我認爲沒有直接的方法來創建配對t檢驗,你可以試試這個

from scipy.stats import ttest_ind 
import pandas as pd 
import csv 
df=pd.read_csv('input.csv') 


fo = open('result.csv','wb+') 
outfile = csv.writer(fo, delimiter=',') 
outfile.writerow((df.columns).insert(0,'')) 

for i in df.columns: 
    t=[] 
    for j in df.columns: 

     t.append(ttest_ind(df[i], df[j])) 
    (t).insert(0,i) 
    outfile.writerow(t) 

這個劇本會給你的輸出文件作爲result.csv告訴你的成對ŧ - 測試計算