Я хотел бы знать, как я могу получить процент частот из кадра данных ниже, но только из столбца "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%
df[df.B == '1'].A.value_counts() / len(df)
?Что-то вроде
df.loc[df['B'] == '1', 'A'].value_counts(normalize=True).mul(100).round(1).astype(str).add('%')
?И откуда берутся эти проценты? Показанный DataFrame и количество, похоже, не соответствуют показанным процентам.