Перекрестная таблица по нескольким столбцам с категориальными значениями в Pandas - PullRequest
0 голосов
/ 09 мая 2019

У меня есть набор данных, в котором есть информация для нескольких состояний, которые относятся к одной категории (например: человек с гиперактивным типом СДВГ будет считаться имеющим СДВГ).Мне нужно определить, у скольких людей есть хотя бы одно из условий в категории, чтобы я мог иметь общий счет, не считая человека дважды.

Вот так выглядят мои данные:

IID SEX ADHDh ADHDi ADHDc... Ind1 M Present Absent Absent

Поэтому мне нужно выполнить перекрестную таблицу, потому что в противном случае я буду раздувать реальный счет.Проблема заключается в том, что значения моей строки являются категориальными переменными: «Присутствует», «Отсутствует» и «Unable_to_code».Однако меня интересует только подсчет числа людей со значением «Присутствовать» в нескольких столбцах, которые имеют условия, относящиеся к одной категории.Я подходил к этому несколькими способами, но у меня всегда одна и та же проблема: я получаю грязную таблицу, которая пытается подсчитать все различные категориальные значения для каждого столбца.Мне нужно получить таблицу на случай непредвиденных обстоятельств, которая подсчитывает только количество лиц в этой категории, у которых есть хотя бы одно условие («присутствует» для ADHD_NOS, ADHDh, ADHDi или ADHDc), сгруппированное по полу.квадратный тест для сравнения между мужчинами и женщинами.

Это то, что я ищу: `

 SEX      ADHD              
   F        57
   M       113

Это код, который я использовал в Пандах без группировки по полу:

ct_adhd=pd.crosstab([df_trans.ADHD_NOS=="Present", df_trans.ADHDi=="Present", df_trans.ADHDh=="Present"], df_trans.ADHDc=="Present", margins=True) ct_adhd

Это грязная таблица, которую я получил:

ADHD_NOS False True All ADHDc ADHDi ADHDh<br> False False False 10 5 25 True 5 0 2 True False 5 0 3 True False False 20 0 30 True False 1 0 1 All 41 5 107

Я также пробовал этот код для суммирования только тех людей, которые имеют значение = "Присутствует »в любом из столбцов, однако этот код автоматически предполагает, что no-data = 0, поэтому он не дает информацию о том, сколько человек на самом деле имеют данные:

df_trans['Count_ADHD'] = (df_trans[["ADHDc","ADHDh","ADHDi"]] == 'Present').sum(axis=1)

PSМне нравится лучше работать с Пандами, но если бы это было лучше в R, я бы попробовал. Я был бы признателен за любую помощь!

...