Вопрос для начинающего Python: как создать кросс-таблицы для нескольких переменных предиктора и переменной результата - PullRequest
0 голосов
/ 05 ноября 2018

Использование следующего тестового фрейма данных, содержащего двоичные переменные 0/1:

test_df = pd.DataFrame([
    [0, 0, 0, 1],
    [1, 0, 1, 1],
    [0, 0, 0, 1],
    [1, 0, 1, 0],
    [0, 0, 0, 0],
    [1, 0, 1, 0]], columns=["y", "age_catg", "race_catg", "sex_catg"])

Я бы хотел использовать функцию pd.crosstab() для создания двусторонних таблиц y против age_catg, race_catg, sex_catg, чтобы проверить полное разделение значений y между категориями предикторов.

Мой фактический фрейм данных содержит несколько тысяч предикторов, поэтому вместо того, чтобы явно указывать предикторы возраста, расы и пола, я бы предпочел использовать столбцы #. Тем не менее, я все еще путаю со ссылками на строки и столбцы в Python - например, следующий код не работает:

desc_tab = pd.crosstab(test_df[:,1],  test_df[:,2:4])     
desc_tab

1 Ответ

0 голосов
/ 05 ноября 2018

Чтобы использовать целочисленные индексы, вам нужен метод iloc:

pd.crosstab(test_df.iloc[:, 1], test_df.iloc[:, 2])

Выход:

race_catg  0  1
age_catg       
0          3  3

Вы можете передать несколько массивов / рядов в столбцы или строки, если поместите их в список:

pd.crosstab(test_df.iloc[:, 1], [test_df.iloc[:, 2], test_df.iloc[:, 3]])

race_catg  0     1
sex_catg   0  1  0  1
age_catg             
0          1  2  2  1

EDIT

Если вы хотите пакетно определить столбцы по их индексам ( список является зарезервированным словом в python, пожалуйста, не используйте его):

cols = [test_df.iloc[:, i] for i in [2, 3]]
pd.crosstab(test_df.iloc[:, 1], cols)

Выход:

race_catg  0     1   
sex_catg   0  1  0  1
age_catg             
0          1  2  2  1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...