Расширьте pandas с помощью PyArrow

Beginner

This tutorial is from open-source community. Access the source code

Введение

В этом практическом занятии вы научитесь использовать PyArrow в pandas для расширения функциональности и повышения производительности различных API. PyArrow расширяет pandas более широким набором типов данных, поддержкой пропущенных значений для всех типов данных, интеграцией читателей ввода-вывода и совместимостью с другими библиотеками данных.

Советы по работе с виртуальной машиной

После запуска виртуальной машины кликните в левом верхнем углу, чтобы переключиться на вкладку Ноутбук и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Установка PyArrow

Прежде чем начать, убедитесь, что вы установили минимальную поддерживаемую версию PyArrow. Вы можете сделать это, выполнив следующую команду в своей среде Python:

## Это комментарий
## Используйте pip для установки PyArrow
pip install pyarrow

Интеграция структур данных

PyArrow позволяет использовать структуры данных pandas, которые непосредственно основаны на PyArrow ChunkedArray, аналогично массиву NumPy. Вот, как это сделать:

## Импортировать pandas
import pandas as pd

## Создать pandas Series, Index и DataFrame с типом данных PyArrow
ser = pd.Series([-1.5, 0.2, None], dtype="float32[pyarrow]")
idx = pd.Index([True, None], dtype="bool[pyarrow]")
df = pd.DataFrame([[1, 2], [3, 4]], dtype="uint64[pyarrow]")

Использование типов PyArrow с параметрами

Для типов PyArrow, которые принимают параметры, вы можете передать в ArrowDtype PyArrow-тип с этими параметрами для использования в параметре dtype.

## Импортировать PyArrow
import pyarrow as pa

## Создать pandas Series с типом списка PyArrow
list_str_type = pa.list_(pa.string())
ser = pd.Series([["hello"], ["there"]], dtype=pd.ArrowDtype(list_str_type))

Преобразование массива PyArrow в структуры данных pandas

Если у вас есть массив PyArrow или ChunkedArray, вы можете преобразовать его в структуры данных pandas, такие как Series, Index или DataFrame.

## Создать массив PyArrow
pa_array = pa.array([{"1": "2"}, {"10": "20"}, None], type=pa.map_(pa.string(), pa.string()))

## Преобразовать массив PyArrow в pandas Series
ser = pd.Series(pd.arrays.ArrowExtensionArray(pa_array))

Операции с PyArrow

Интеграция структуры данных PyArrow реализуется через интерфейс ExtensionArray pandas. Поддерживаемая функциональность существует там, где этот интерфейс интегрирован в API pandas.

## Создать pandas Series с типом данных PyArrow
ser = pd.Series([-1.545, 0.2, None], dtype="float32[pyarrow]")

## Выполнить различные операции
ser.mean()
ser + ser
ser > (ser + 1)
ser.dropna()
ser.isna()
ser.fillna(0)

Чтение данных с использованием PyArrow

PyArrow предоставляет функциональность для чтения ввода-вывода (IO), которая интегрирована в несколько читателей ввода-вывода pandas.

## Импортировать модуль IO
import io

## Создать объект StringIO
data = io.StringIO("""a,b,c\n1,2.5,True\n3,4.5,False""")

## Прочитать данные в pandas DataFrame, используя PyArrow в качестве движка
df = pd.read_csv(data, engine="pyarrow")

Резюме

В этом практическом занятии мы изучили, как можно использовать PyArrow совместно с pandas для расширения его функциональности и повышения производительности. Мы узнали, как преобразовать структуры данных pandas в типы данных PyArrow и выполнять различные операции. Мы также увидели, как читать данные с использованием функциональности чтения ввода-вывода (IO) PyArrow.