我正在关注这篇使用熊猫的文章。
作者在其中指出:
大多数交通站点都是白人司机,这是意料之中的,因为佛蒙特州约有 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