繁体   English   中英

基于百分位数筛选大型数据框的最有效方法

[英]Most efficient way to filter a large dataframe based on percentiles

我有一个大的数据框,大约有500万行和200列。 我正在运行以下代码以根据百分位数和数据类型进行过滤

下面的代码

col_percentile_filter = 0.98
modeldata_revised_2 = modeldata.loc[:, (modeldata.dtypes!='object') & (modeldata.quantile(col_percentile_filter) >= 1) & (modeldata.min() != modeldata.max())]

该代码当前需要大量时间才能运行。 什么是更有效的方式来运行此?

跑步时

modeldata_revised_2 = modeldata.loc[:, (modeldata.dtypes!='object') & (modeldata.quantile(col_percentile_filter) >= 1) & (modeldata.min() != modeldata.max())]

您要计算3个不同的数据帧,然后找到它们之间的交集。 df.query()对于这种事情要好得多,就像这样:

model_min = modeldata.min()
model_max = modeldata.max()
modeldata_revised_2 = modeldata.query("dtypes!='object' & quantile(col_percentile_filter) >= 1 & @model_min != @model_max")

我发现的更全面的解释是在: https : //jakevdp.github.io/PythonDataScienceHandbook/03.12-performance-eval-and-query.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM