我喜欢显示series
的value_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,
)