我有一个大数据框,大约有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())]
代码当前需要花费很多时间才能运行。有什么更有效的方法来运行此程序?
答案 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