Обработка миллиардов строк за секунды…
Vaex - это высокопроизводительная библиотека Python с открытым исходным кодом для ленивых фреймов данных вне ядра, которая позволяет выполнять визуализацию, исследование, анализ, машинное обучение для табличных наборов данных, используя такие методы, как эффективные алгоритмы вне ядра, отображение памяти и ленивые оценки. . Можно просмотреть более миллиарда строк и выполнять различные статистические функции, агрегировать и строить впечатляющие графики за несколько секунд.
Vaex не считывает какие-либо данные, когда вы открываете файл с отображением памяти, вместо этого он считывает только метаданные файла, такие как количество строк, количество столбцов, имена столбцов, типы данных, структуру файла, расположение данных на диске, файл описание и т. д. Он проходит через весь набор данных только тогда, когда это требуется, всего за несколько проходов по набору данных.
Зачем использовать Vaex:
- Эффективное использование памяти: не создает копии памяти во время операций фильтрации / выбора.
- Ленивые / виртуальные столбцы. Vaex вычисляет "на лету", не тратя лишнего ОЗУ.
- Производительность: Vaex используется для обработки огромных табличных данных, т.е. обрабатывает ›¹⁰⁹ строк в секунду.
- Визуализация: с помощью Vaex визуализацию данных можно выполнить с помощью всего одной строки кода.
Теперь мы увидим Vaex в действии.
1. Если вы не установили Vaex, используйте команду ниже, чтобы установить его.
pip install vaex
2. После этого перезапустите ядро. Затем импортируйте все необходимые библиотеки -
import vaex import pandas as pd
3. Загрузите данные с помощью Vaex.
Мы будем использовать набор данных - Chicago Taxi Trips
df=vaex.open('/your_file_path/chicago_taxi_trips_2016_01.csv')
Вывод - данные загружаются за всего 5,79 с.
4. Просмотрите загруженные данные и статистику.
%%time df
Вывод -
CPU times: user 3 µs, sys: 0 ns, total: 3 µs Wall time: 7.63 µs
type(df)
Вывод -
vaex.dataframe.DataFrameLocal # Get a high level overview of the DataFrame %%time df.describe()
Это делается за один проход по данным.
Вывод -
CPU times: user 1.83 s, sys: 37.8 ms, total: 1.87 s Wall time: 970 ms
%%time df.info()
Выход -
CPU times: user 15 ms, sys: 4.9 ms, total: 19.9 ms Wall time: 18.2 ms
%%time df['payment_type'].value_counts()
Выход -
CPU times: user 264 ms, sys: 8.24 ms, total: 272 ms Wall time: 163 ms Cash 912334 Credit Card 781271 No Charge 7555 Unknown 3139 Dispute 845 Pcard 437 Prcard 224 dtype: int64
Одна из лучших статей, которые я прочитал на тему Vaex: DataFrame с суперстроками от Маартена Бредделса
5. Агрегация, фильтрация, оценка выражения и выборка.
Vaex выполняет параллельные высокопроизводительные групповые операции
%%time df_group=df.groupby(df.payment_type,agg='count') df_group
Вывод -
total: 542 ms Wall time: 330 ms
В Vaex фильтрация, оценка выражений и выбор не тратят память на создание копий.
%%timeit df[df.fare>100]
Вывод -
1.47 ms ± 70.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
Часть 2: скоро будет
Спасибо за чтение. Продолжайте учиться и писать код :)
Ссылки: vaex.io