python: применение t-критерия к каждому столбцу в DataFrame - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть датафрейм, имеющий около 100 000 столбцов.Первый столбец кадра данных - это «метки».Данные каждого столбца делятся на две группы.Один - метка == 1, а другой - метка == 0.Как и выше: введите описание изображения здесь

Моя цель - применить t-критерий к каждому столбцу в соответствии с различными «метками».Ниже приведены мои коды:

import pandas as pd
from scipy import stats as ss

def t_test(filename):
    df = pd.read_csv(filename)

    column_list = [x for x in df.columns if x != 'labels']
    t_test_results = {}
    for column in column_list:
    non_essential = df.where('labels'==1).dropna()[column]
    essential = df.where('labels'==0).dropna()[column]
    t_test_results[column] = ss.ttest_rel(non_essential, essential)
    result_df = pd.DataFrame.from_dict(t_test_results, orient='Index')
    result_df.columns = ['statistic', 'pvalue']
    return result_df

if __name__ == '__main__':
    result = t_test('encoding_test_data.csv')
    with open('t_test_result.txt', 'w') as f:
        f.write(str(result))

'encoding_test_data.csv' - это мой тестовый файл.И я получил информацию об ошибке:

Traceback (most recent call last):
File "E:/master_subject/t_test.py", line 22, in <module>
result = t_test('encoding_test_data.csv')
File "E:/master_subject/t_test.py", line 14, in t_test
non_essential = df.where('labels'==1).dropna()[column]
File "D:\Python37\lib\site-packages\pandas\core\generic.py", line 7772, in where
errors=errors, try_cast=try_cast)
File "D:\Python37\lib\site-packages\pandas\core\generic.py", line 7516, in _where
raise ValueError('Array conditional must be same shape as '
ValueError: Array conditional must be same shape as self 

Как я могу получить свою цель?

...