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



我正在关注这篇使用熊猫的文章。

作者在其中指出:

大多数交通站点都是白人司机,这是意料之中的,因为佛蒙特州约有 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

我如何使用熊猫获得这个?

这很简单。计算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

最新更新