Как я могу получить процент каждого уникального значения из столбца, сгруппированного по другому столбцу? - PullRequest
0 голосов
/ 19 апреля 2020

У меня проблема с тем, что у меня есть столбец, заполненный годом события (2007, 2008, ..., 2019) и другой столбец с типом события (event_A, event_B, event_ C). Я хочу знать каждый год, каков процент событий B, которые произошли.

По сути, у меня есть это:

Year    Event_Type
2007    Event_A
2007    Event_A
2007    Event_B
2007    Event_B
2008    Event_B
2008    Event_B

И я хочу добиться этого:

2007    Event_B    50%
2008    Event_B    100%

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

Самым близким, что я получил, было:

df.groupby(['Year', 'Event_Type']).size()

1 Ответ

1 голос
/ 19 апреля 2020

Метод 1:

Использование crosstab/pivot для подсчета количества случаев в год с последующим разделением столбца Event_B и делением его на сумму df по axis=1

c = pd.crosstab(df['Year'],df['Event_Type'])
c.loc[:,'Event_B'].div(c.sum(1),axis=0).mul(100).astype(str).add('%')

Метод 2:

Вы можете использовать счет №. Event_B встречается в группе, деленной на размер группы:

(df['Event_Type'].eq('Event_B').groupby(df['Year']).sum()
.div(df.groupby('Year').size(),axis=0).mul(100).astype(str).add('%'))

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