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

Hed*_*Hog 5 python dataframe pandas

我喜欢展示效果良好的value_counts(normalize=True)内容series,但我也想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)
Run Code Online (Sandbox Code Playgroud)

预期产出

                  perc   count
Toyota Corolla    0.25   1
Audi A4           0.25   1
Honda Civic       0.25   1
                  0.25   1
Name: Brand, dtype: float64
Run Code Online (Sandbox Code Playgroud)

问题

我怎样才能将这两个信息附加到该系列中?

jez*_*ael 8

如果想使用,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
Run Code Online (Sandbox Code Playgroud)

另一个想法是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
Run Code Online (Sandbox Code Playgroud)
df = df.Brand.value_counts(normalize=True).to_frame('perc')
df['count'] = df['perc'].mul(len(df))
Run Code Online (Sandbox Code Playgroud)