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

时间:2019-02-21 21:49:57

标签: python dataframe

我有一个大数据框,大约有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())]

代码当前需要花费很多时间才能运行。有什么更有效的方法来运行此程序?

1 个答案:

答案 0 :(得分:1)

跑步时

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

相关问题