Как стать автором
Обновить

Комментарии 8

Для чтения больших файлов — да, то когда процент пустых значений повышается, скорость может упасть

Отличный пост! Спасибо большое!

лучше сделать так: if boolheader: ...

Это в какой из четырех?

Хороший пост, спасибо!
Есть для паркетника возможность такое же сделать? Будет для него это работать?

Отличная статья. Жду ещё. Всегда инетересно, как люди решают конкретные задачи по анализу.

Неплохая иллюстрация того, почему статьи из этих ваших интеренетов следует воспринимать критически

Раньше - подтверждаю, через datatable было быстрее, но с тех пор, как прикрутили и допилили чтение через pyarrow, читать следует через него (по возможности)

Только что проверил на знаменитом датасете CSSEGISandData/COVID-19. Запускал несколько раз, так что данные закешировались, и скорость чтения с диска не участвует

Исходный файл 14 мегабайт, 3342 rows × 974 columns

Видно, что datatable с конверсией в pandas работает медленнее, чем родное чтение через pyarrow в 2 с лишним раза.

До кучи видно, что по дефолту оно (в этой версии pandas) читает как engine='c', а engine='python' работает чудовищно медленно. Раньше, помнится, по дефолту было именно python

csv_file = f"{path}/csse_covid_19_time_series/time_series_covid19_confirmed_US.csv"

import pandas as pd; print(pd.version)
import datatable as dt; print(dt.version)
import pyarrow; print(pyarrow.version)

%timeit dt.fread(csv_file, header=True)
%timeit dt.fread(csv_file, header=True).to_pandas()
%timeit pd.read_csv(csv_file, index_col=None, header=0)
%timeit pd.read_csv(csv_file, index_col=None, header=0, engine='python')
%timeit pd.read_csv(csv_file, index_col=None, header=0, engine='c')
%timeit pd.read_csv(csv_file, index_col=None, header=0, engine='pyarrow')

1.4.1
1.0.0
4.0.1
92.2 ms ± 1.04 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
137 ms ± 1.68 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
294 ms ± 8.06 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
2.43 s ± 19.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
291 ms ± 1.95 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
56.3 ms ± 485 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории