Count_values ​​с условием где считать значения одного столбца относительно другого - PullRequest
0 голосов
/ 15 сентября 2018

Я делаю некоторые EDA для моих данных, которые представляют собой фреймы данных панд, и я застрял в этой точке. Я не знаю, как считать ценности детей, где партия == республиканец или демократ. Я хочу применить value_counts ко всем столбцам, где arty == республиканец или демократ.

   party infants water budget physician salvador religious satellite 
republican  n     y      n         y        y         y         n   
republican  n     y      n         y        y         y         n   
democrat    ?     y      y         ?        y         y         n   
democrat    n     y      y         n        ?         y         n   
democrat    y     y      y         n        y         y         n 

Ответ должен быть как

party           infants 
democrat.    y=1, n=1, ?=1
republican   y=0, n=2, ?=0

так для всех столбцов. Я пробовал что-то подобное.

infants_count = data["infants"].value_counts().where(data['party']=="democrat")
infants_count.loc['y']

Помощь будет высоко ценится

1 Ответ

0 голосов
/ 15 сентября 2018

Давайте попробуем:

df_out = df.groupby('party')['infants'].value_counts().unstack(0).fillna(0)

df_out.apply(lambda x: ','.join(x.index +'='+x.astype(int).astype(str)))\
      .rename('infant')\
      .reset_index()

Выход:

        party       infant
0    democrat  ?=1,n=1,y=1
1  republican  ?=0,n=2,y=0

Обновление, чтобы ответить на комментарий ниже:

df_out = df.groupby('party')['infants'].value_counts().unstack(-1).fillna(0)

df_out

Выход:

infants       ?    n    y
party                    
democrat    1.0  1.0  1.0
republican  0.0  2.0  0

Заговор

df_out = df.groupby('party')['infants'].value_counts().unstack(-1).fillna(0)
ax = df_out.plot.bar(stacked=True)

Выход:

enter image description here

Выберите одно значение:

df_out.loc['democrat','y']

Выход:

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