Улучшена фильтрация производительности по столбцу объекта с датами - PullRequest
0 голосов
/ 29 апреля 2018

Работа над набором данных по ДТП в Нью-Йорке. Текущий CSV имеет данные за 2012 год, и я хотел извлечь значения 2017 года. Дело в том, что DATE является объектом dtype, и попытка чего-то подобного заняла слишком много времени

data = data[(pd.to_datetime((data['DATE'])).dt.year == 2017)]

Вот как выглядит образец данных

Head of the dataset

Кто-нибудь знает, возможно, более быстрый или более эффективный способ? Спасибо.

1 Ответ

0 голосов
/ 29 апреля 2018

Узкое место почти наверняка в datetime преобразовании.

Для повышения производительности вы можете использовать аргумент infer_datetime_format, равный pd.to_datetime. Согласно документам :

infer_datetime_format : логическое значение, по умолчанию False

Если задано значение True, а формат не задан, попытайтесь определить формат Строки datetime, и если это можно сделать вывод, переключитесь на более быстрый метод разбора их. В некоторых случаях это может увеличить скорость анализа на ~ 5-10 раз.

Например:

data['DATE'] = pd.to_datetime(data['DATE'], infer_datetime_format=True)
data = data[data['DATE'].dt.year == 2017)]

В качестве альтернативы вы можете указать точный формат :

data['DATE'] = pd.to_datetime(data['DATE'], format='%m/%d/%Y')
data = data[data['DATE'].dt.year == 2017)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...