Обработка миллиардов строк за секунды…

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

Хотите прочитать юмор программистов?









Рекомендуемые статьи -