2017-07-27 8 views
1

私はパンダのデータフレーム(100x10)を持っています。各カラムはいくつかの量を表しており、t検定を使ってすべての列をペアワイズでテストしたいと思います。代わりに列をループで:パンダのデータフレームのペアごとの統計的有意性

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

i!=jを、それを行うにはクリーンな方法は何ですか?相関関係に類似するもの:

df.corr() 

ここで、すべてのペアワイズ相関を計算します。私はペアワイズt検定を作成する直接的な方法がないと思わ

答えて

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

、あなたはこのスクリプトは、あなたのペアワイズトンを伝えresult.csvとして出力ファイルが得られます。この1

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) 

を試すことができます検定の計算

関連する問題