0
我正在對熊貓數據框中的各種數據進行T檢驗。在多指標大熊貓數據框上執行T檢驗
我有這樣一個組織數據幀:(A,B等)
df = pd.DataFrame({'a': {('0hr', '0.01um', 0): 12,
('0hr', '0.01um', 1): 10,
('0hr', '0.1um', 0): 8,
('0hr', '0.1um', 1): 6,
('0hr', 'Control', 0): 4,
('0hr', 'Control', 1): 2,
('24hr', '0.01um', 0): 18,
('24hr', '0.01um', 1): 15,
('24hr', '0.1um', 0): 12,
('24hr', '0.1um', 1): 9,
('24hr', 'Control', 0): 6,
('24hr', 'Control', 1): 3},
'b': {('0hr', '0.01um', 0): 42,
('0hr', '0.01um', 1): 35,
('0hr', '0.1um', 0): 28,
('0hr', '0.1um', 1): 21,
('0hr', 'Control', 0): 14,
('0hr', 'Control', 1): 7,
('24hr', '0.01um', 0): 30,
('24hr', '0.01um', 1): 25,
('24hr', '0.1um', 0): 20,
('24hr', '0.1um', 1): 15,
('24hr', 'Control', 0): 10,
('24hr', 'Control', 1): 5}})
打印(DF)
a b
0hr 0.01um 0 12 42
1 10 35
0.1um 0 8 28
1 6 21
Control 0 4 14
1 2 7
24hr 0.01um 0 18 30
1 15 25
0.1um 0 12 20
1 9 15
Control 0 6 10
1 3 5
對於每一列我想計算執行噸 - 將給定時間範圍內的控制與該時間範圍內的其他測試進行比較。
例如:
[t, prob] = stats.ttest_ind(df.loc['0hr'].loc['Control'] , df.loc['0hr'].loc['Control'], 1, equal_var=True)
[t, prob] = stats.ttest_ind(df.loc['0hr'].loc['Control'] , df.loc['0hr'].loc['0.01um'], 1, equal_var=True)
[t, prob] = stats.ttest_ind(df.loc['0hr'].loc['Control'] , df.loc['0hr'].loc['0.1um'], 1, equal_var=True)
[t, prob] = stats.ttest_ind(df.loc['24hr'].loc['Control'] , df.loc['24hr'].loc['Control'], 1, equal_var=True)
[t, prob] = stats.ttest_ind(df.loc['24hr'].loc['Control'] , df.loc['24hr'].loc['0.01um'], 1, equal_var=True)
[t, prob] = stats.ttest_ind(df.loc['24hr'].loc['Control'] , df.loc['24hr'].loc['0.1um'], 1, equal_var=True)
我一直在試圖與df.apply這樣做,但我不知道正確的語法是什麼。我想結果返回到結構像一個新的數據框:
results = pd.DataFrame({'a': {('0hr', '0.01um', 't'): '-',
('0hr', '0.01um', 'prob'): '-',
('0hr', '0.1um', 't'): '-',
('0hr', '0.1um', 'prob'): '-',
('0hr', 'Control', 't'): '-',
('0hr', 'Control', 'prob'): '-',
('24hr', '0.01um', 't'): '-',
('24hr', '0.01um', 'prob'): '-',
('24hr', '0.1um', 't'): '-',
('24hr', '0.1um', 'prob'): '-',
('24hr', 'Control', 't'): '-',
('24hr', 'Control', 'prob'): '-'},
'b': {('0hr', '0.01um', 't'): '-',
('0hr', '0.01um', 'prob'): '-',
('0hr', '0.1um', 't'): '-',
('0hr', '0.1um', 'prob'): '-',
('0hr', 'Control', 't'): '-',
('0hr', 'Control', 'prob'): '-',
('24hr', '0.01um', 't'): '-',
('24hr', '0.01um', 'prob'): '-',
('24hr', '0.1um', 't'): '-',
('24hr', '0.1um', 'prob'): '-',
('24hr', 'Control', 't'): '-',
('24hr', 'Control', 'prob'): '-'}})
您是否考慮過使用anova測試?這對於幾個樣本來說是完全的t檢驗(很容易找到,例如在維基百科中)。我已經爲您提供的數據集運行它,結果是至少有一個樣本不同。然後你運行tukey的HSD來知道它是哪一個(一個或多個)。這我也試過了,但老實說,我無法正確對待你的multiindex。它會給你一個很好的清單,哪些樣品是不同的,哪些不是。你真的需要在你的問題中提出的格式的結果? – lrnzcig
我對結果的格式很開放,但我相信我需要一個t檢驗。這不是我的實驗數據,所以我提供了所要求的... 2尾獨立t檢驗。我需要報告p值。這對我來說似乎是有意義的,因爲在任何給定時間只有兩個數據集被比較(例如,0.01um與控制或者0.1um與控制)。據我所知,方差分析是用於比較多個數據集。 – agf1997
關鍵是我不認爲我已經理解了,對不起。好的,沒有ANOVA。但是,那麼你會運行24x2的t檢驗?也許我還是沒有明白......無論如何,如果你想將一個值應用於多指數,那就像'df.loc ['0hr']。loc ['0.01um'] ['t'] = xxx',假設't'是一列。對於你的數據框,我試過直接在ipython中作爲'df.loc ['0hr']。loc ['0.01um']。loc [0] ['a'] = 3'。但如果我還沒有明白,就告訴我! – lrnzcig