如何获取Pandas数据框中的列百分比?

时间:2017-11-01 13:54:08

标签: python pandas

我正在关注使用Pandas的this article

在那里,作者说:

  

大多数交通站都是白人司机,这是预料之中的,因为佛蒙特州的白人约为94%(使其成为全国第二低的多元化州,仅次于缅因州)。由于白色驱动程序占交通站点的大约94%,因此没有明显的偏见来拉动非白色驱动程序与白色驱动程序。然而,使用相同的方法,我们还可以看到,虽然黑人司机约占所有交通站点的2%,但只有1.3%的佛蒙特州人口是黑人。

但他没有说明如何使用熊猫来解决这个问题。

以下是数据的示例

In[165: df_vt['driver_race'].value_counts()
Out[15]:
White       261339
Black         5571
Asian         3446
Hispanic      2562
Other          263
Name: driver_race, dtype: int64

我发现我能做到:

df_vt.groupby(('driver_race')).size() / len(df_vt)

哪会给我:

driver_race
Asian       0.012614
Black       0.020393
Hispanic    0.009378
Other       0.000963
White       0.956651
dtype: float64

这几乎是我想要的(它确实给了我2%),但我很想看到像

这样的东西
 White     261339     0.956651
 Black       5571     0.020393
 .
 .
 .
 Other        263     0.000963

如何使用Pandas获得此功能?

1 个答案:

答案 0 :(得分:1)

这很简单。计算value_counts并将其转换为数据框。然后,只计算百分比列。

vc = df_vt['driver_race'].value_counts().to_frame('counts')
vc['%'] = vc['counts'] / vc['counts'].sum()

vc

          counts         %
White     261339  0.956651
Black       5571  0.020393
Asian       3446  0.012614
Hispanic    2562  0.009378
Other        263  0.000963