如何将value_counts(normalize=True)和value_counts()应用于pandas系列?&l



我喜欢显示seriesvalue_counts(normalize=True),但我也想在另一列中显示未规范化的value_counts()

import pandas as pd
cars = {'Brand': ['Honda Civic','Toyota Corolla','','Audi A4'],
'Price': [32000,35000,37000,45000]
}
df = pd.DataFrame(cars, columns = ['Brand', 'Price'])
df.Brand.value_counts(normalize=True)

预期输出

perc   count
Toyota Corolla    0.25   1
Audi A4           0.25   1
Honda Civic       0.25   1
0.25   1
Name: Brand, dtype: float64

我如何将这两个信息附加到系列中?

如果要使用value_counts,则需要运行没有normalize=True的代码:

df = pd.concat([df.Brand.value_counts(normalize=True),
df.Brand.value_counts()], 
axis=1,
keys=('perc','count'))
print (df)
perc  count
0.25      1
Honda Civic     0.25      1
Toyota Corolla  0.25      1
Audi A4         0.25      1

另一个想法是在另一步创建perc列,DataFrame.insert用于设置新列的位置:

df = df.Brand.value_counts().to_frame('count')
df.insert(0, 'perc', df['count'].div(len(df)))

print (df)
perc  count
0.25      1
Honda Civic     0.25      1
Toyota Corolla  0.25      1
Audi A4         0.25      1

df = df.Brand.value_counts(normalize=True).to_frame('perc')
df['count'] = df['perc'].mul(len(df))

您也可以这样尝试:

pd.concat(
[
df.Brand.value_counts(),
df.Brand.value_counts(normalize=True)
],
keys=['counts', 'normalized_counts'],
axis=1,
)

最新更新