Самый эффективный способ отфильтровать большой массив данных на основе процентилей - PullRequest
0 голосов
/ 22 февраля 2019

У меня большой фрейм данных, около 5 миллионов строк и 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 голосов
/ 22 февраля 2019

Когда вы работаете

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...