数据帧的丢弃百分比[Pandas]

2024-06-28 11:23:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很长尾巴的数据集,希望只对90%的数据进行采样。在

city          score
bangkok       60
kl            20
sydney        10
melbourne     5
dhaka         5

应该是:

^{pr2}$

Tags: 数据cityscoresydneyklpr2melbournedhaka
2条回答

首先,对要过滤最高90%数据的值进行排序

df.sort_values('score', ascending=False, inplace=True)

然后,计算累计和并除以总数,以满足筛选条件(可以用自定义限制替换0.9

^{pr2}$

现在df看起来像

city          score
bangkok       60
kl            20
sydney        10

我认为需要按sum的除法来计算分数,然后按^{}过滤,最后一个^{}来获得更好的过滤行性能:

a = 0.9
df = df[df['score'].div(df['score'].sum()) >= 1 - a].sort_values('score', ascending=False) 

或者:

^{pr2}$
print (df)
      city  score
0  bangkok     60
1       kl     20
2   sydney     10

细节

print (df['score'].div(df['score'].sum()))
0    0.60
1    0.20
2    0.10
3    0.05
4    0.05
Name: score, dtype: float64

相关问题 更多 >