В настоящее время я работаю с фреймом данных в форме:
import pandas as pd
import numpy as np
df = pd.DataFrame([['A', 12.1, 11.4, 15.1, 9.9], ['B', 8.3, 10.3, 16.6, 7.8], ['B', 7.8, 11.1, 16.3, 8.4],
['B', 8.6, 10.9, 16.4, 8.1], ['A', 12.25, 11.6, 16.25, 8.9], ['B', 8.13, 11.6, 16.7, 7.4]
], columns = ['Symbol', 'C1','C2', 'C3', 'C4'])
И список списков, который включает сравнения по столбцам, которые я хотел бы сделать:
lst = [['C1','C2'], ['C1','C3'], ['C3','C4']]
Я пытаюсь вычислить разницу средних (повторяющихся символов) для каждого сравнения, а также выполнить ttest_ind, а затем вернуть новый фрейм данных с результатами, которые будут выглядеть следующим образом:
df2 = pd.DataFrame([['A', 0.675, 'pval here', -3.5, 'pval here',6.275,'pval here'],
['B', -2.7675, 'pval here', -8.2925, 'pval here', 8.575 , 'pval here']],
columns = ['Symbol', 'C1-C2','C1-C2 pval', 'C1-C3', 'C1-C3 pval', 'C3-C4','C3-C4 pval'])
Найти разницу между средними значениями довольно просто, используя groupby, чтобы получить средние значения, а затем перебрать пары списка следующим образом:
df = df.groupby('Symbol').agg(np.mean)
for pair in lst:
df[pair[0]+'-'+pair[1]] = df[pair[0]] - df[pair[1]]
Но я застрял в применении ttest_ind и возвращении p-vaule в другой столбец.
Любая помощь очень ценится.