2024-06-28 11:23:21 发布
网友
我有一个很长尾巴的数据集,希望只对90%的数据进行采样。在
city score bangkok 60 kl 20 sydney 10 melbourne 5 dhaka 5
应该是:
首先,对要过滤最高90%数据的值进行排序
df.sort_values('score', ascending=False, inplace=True)
然后,计算累计和并除以总数,以满足筛选条件(可以用自定义限制替换0.9)
0.9
现在df看起来像
df
city score bangkok 60 kl 20 sydney 10
我认为需要按sum的除法来计算分数,然后按^{}过滤,最后一个^{}来获得更好的过滤行性能:
sum
a = 0.9 df = df[df['score'].div(df['score'].sum()) >= 1 - a].sort_values('score', ascending=False)
或者:
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
首先,对要过滤最高90%数据的值进行排序
然后,计算累计和并除以总数,以满足筛选条件(可以用自定义限制替换
^{pr2}$0.9
)现在
df
看起来像我认为需要按} 过滤,最后一个^{} 来获得更好的过滤行性能:
sum
的除法来计算分数,然后按^{或者:
^{pr2}$细节:
相关问题 更多 >
编程相关推荐