Получить процентную частоту кадра данных

avatar
rafaelcb21
8 августа 2021 в 19:43
83
1
-3

Я хотел бы знать, как я могу получить процент частот из кадра данных ниже, но только из столбца "1" и не получая NaN?

import pandas as pd
df = pd.DataFrame({ 'A': ['foo', 'bar', 'g2g', 'g2g', 'g2g',
                                'bar', 'bar', 'foo', 'bar', bat],
                   'B': ['0', '0', '1', '1', '1', '0', '1', '0', '0'] })

dfg = df.groupby(['A','B'])
df2 = dfg.size().unstack()
df2
>>
B   0   1
A       
bar 4.0 1.0
foo 3.0 NaN
g2g NaN 3.0

Ожидаемый процент

bar 36.3% 9.0%
foo 27.7% NaN
g2g NaN  27.7%

вывод: желаемый результат

bar 9.0%
g2g 27.7%
Источник
Psidom
8 августа 2021 в 19:52
2

df[df.B == '1'].A.value_counts() / len(df) ?

Henry Ecker
8 августа 2021 в 19:54
1

Что-то вроде df.loc[df['B'] == '1', 'A'].value_counts(normalize=True).mul(100).round(1).astype(str).add('%')?

Henry Ecker
8 августа 2021 в 19:55
0

И откуда берутся эти проценты? Показанный DataFrame и количество, похоже, не соответствуют показанным процентам.

Ответы (1)

avatar
Albaraa Ahmed
8 августа 2021 в 19:48
0
df['NameOfColumn'].value_counts(normalize=True) * 100

Не беспокойтесь о том, что Nan или null будут учтены. dropna будет автоматически игнорировать нулевые значения или значения NaN, как указано здесь в документации

.