Как выполнить тесты хи-квадрат на строках данных панд?

Если относительный путь не работает, значит, текущий каталог, заданный при выполнении задач cron, не является / home / username123 / public_html. В таких случаях вы можете использовать только абсолютный путь.

0
задан Melsauce 18 January 2019 в 11:58
поделиться

1 ответ

Вы можете воспользоваться функцией apply на pd.DataFrame. Это позволяет применять произвольные функции к столбцам или строкам таблицы DataFrame. Используя ваш пример:

df = pd.DataFrame([[20, 10], [60, 25], [50, 15]])

Для создания таблиц сопряженности можно использовать lambda и некоторые векторные операции

>>> members = np.array([70, 30])
>>> df.apply(lambda x: np.array([x, members-x]), axis=1)
0    [[20, 10], [50, 20]]
1    [[60, 25], [10,  5]]
2    [[50, 15], [20, 15]]

И это, конечно, можно обернуть функцией scipy . [+1112]

df.apply(lambda x: chi2_contingency(np.array([x, members-x])), axis=1)

Это производит все возможные возвращаемые значения, но, разрезая выходные данные, можно указать желаемые возвращаемые значения, оставив, например, ожидаемые массивы. Полученный ряд также может быть преобразован в DataFrame.

>>> s = df.apply(lambda x: chi2_contingency(np.array([x, members-x]))[:-1], axis=1)
>>> s
0    (0.056689342403628114, 0.8118072280034329, 1)
1                                    (0.0, 1.0, 1)
2      (3.349031920460492, 0.06724454934343391, 1)
dtype: object
>>> s.apply(pd.Series)
          0         1    2
0  0.056689  0.811807  1.0
1  0.000000  1.000000  1.0
2  3.349032  0.067245  1.0

Сейчас я не знаю об эффективности выполнения этого подхода, но я бы доверял тем, кто реализовал эти функции. И, скорее всего, скорость не так критична. Но, по крайней мере, он эффективен в том смысле, что его (гипотетически) легко понять и быстро написать.

0
ответ дан Felix 18 January 2019 в 11:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: