Обобщение категорических данных анкеты с использованием панд - PullRequest
0 голосов
/ 02 июля 2018

Начиная с Python, я столкнулся с проблемой, которая должна быть обычной, но не смог найти простого решения. У меня есть некоторые вымышленные данные анкеты, на которые я хотел бы получить содержательные описания. В частности, для каждого вопроса я хочу знать, сколько раз был дан конкретный ответ («Да» / «Может быть» / «Нет»).

Введите:

         Question1   Question2   Question3
Answer1  Maybe       Yes         Yes
Answer2  No          Maybe       Yes
Answer3  Maybe       Maybe       No
Answer4  No          Yes         Maybe

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

(предпочтительно) Выход:

           Yes     Maybe    No
Question1  0       2        2
Question2  2       2        0
Question3  2       1        1

Моя собственная идея заключалась в том, что решение должно быть в команде 'groupby'. До сих пор мне не удалось получить какой-либо значимый вывод, хотя:

df.groupby(['Question1']).sum()
      Question2 Question3
Question1                    
Maybe      YesMaybe     YesNo
No         MaybeYes  YesMaybe

Я сгенерировал фиктивные данные с помощью:

# Generate data
data = np.array([['','Question1','Question2','Question3'],['Answer1',"Maybe","Yes","Yes"],['Answer2',"No","Maybe","Yes"],['Answer3',"Maybe","Maybe","No"],['Answer4',"No","Yes","Maybe"]])          


# convert to pandas dataframe
df = pd.DataFrame(data=data[1:,1:],index=data[1:,0],columns=data[0,1:])

Я знаю, что это должен быть простой вызов, но любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 02 июля 2018

Просто

df.apply(pd.value_counts).fillna(0)


            Question1   Question2   Question3
Maybe       2.0         2.0         1.0
No          2.0         0.0         1.0
Yes         0.0         2.0         2.0

Если хочешь, можешь транспонировать df.apply(pd.value_counts).fillna(0).T

            Maybe   No    Yes
Question1   2.0     2.0   0.0
Question2   2.0     0.0   2.0
Question3   1.0     1.0   2.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...