Комментарии 8
Apache Arrow
Отличный пост! Спасибо большое!
лучше сделать так: 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)
Четыре функции для быстрой работы с Big Data