Aprimore o Pandas com PyArrow

Beginner

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

Introdução

Este laboratório irá guiá-lo através do processo de utilização do PyArrow no pandas para estender a funcionalidade e melhorar o desempenho de várias APIs. O PyArrow aprimora o pandas com tipos de dados mais extensos, suporte a dados ausentes para todos os tipos de dados, integração de leitores de IO (Input/Output) e interoperabilidade com outras bibliotecas de data frame.

Dicas para a VM (Máquina Virtual)

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido às limitações do Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Instalando o PyArrow

Antes de começar, certifique-se de ter instalado a versão mínima suportada do PyArrow. Você pode fazer isso executando o seguinte comando no seu ambiente Python:

## This is a comment
## Use pip to install PyArrow
## add ! to the beginning of the line to run the command in the Jupyter notebook
## !pip install pyarrow
pip install pyarrow

Integração da Estrutura de Dados

O PyArrow permite que as estruturas de dados do pandas sejam diretamente suportadas por um PyArrow ChunkedArray, semelhante a um array NumPy. Veja como fazer isso:

## Import pandas
import pandas as pd

## Create a pandas Series, Index and DataFrame with PyArrow data type
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]")

Usando Tipos PyArrow com Parâmetros

Para tipos PyArrow que aceitam parâmetros, você pode passar um tipo PyArrow com esses parâmetros para ArrowDtype para usar no parâmetro dtype.

## Import PyArrow
import pyarrow as pa

## Create a pandas Series with PyArrow list type
list_str_type = pa.list_(pa.string())
ser = pd.Series([["hello"], ["there"]], dtype=pd.ArrowDtype(list_str_type))

Convertendo um Array PyArrow para Estruturas de Dados pandas

Se você tiver um PyArrow Array ou ChunkedArray, pode convertê-lo em estruturas de dados pandas como Series, Index ou DataFrame.

## Create a PyArrow array
pa_array = pa.array([{"1": "2"}, {"10": "20"}, None], type=pa.map_(pa.string(), pa.string()))

## Convert the PyArrow array to a pandas Series
ser = pd.Series(pd.arrays.ArrowExtensionArray(pa_array))

Operações PyArrow

A integração da estrutura de dados PyArrow é implementada através da interface ExtensionArray do pandas. A funcionalidade suportada existe onde esta interface está integrada na API do pandas.

## Create a pandas Series with PyArrow data type
ser = pd.Series([-1.545, 0.2, None], dtype="float32[pyarrow]")

## Perform various operations
ser.mean()
ser + ser
ser > (ser + 1)
ser.dropna()
ser.isna()
ser.fillna(0)

Lendo Dados com PyArrow

PyArrow fornece funcionalidade de leitura de IO que foi integrada em vários leitores de IO do pandas.

## Import IO module
import io

## Create a StringIO object
data = io.StringIO("""a,b,c\n1,2.5,True\n3,4.5,False""")

## Read the data into a pandas DataFrame using PyArrow as the engine
df = pd.read_csv(data, engine="pyarrow")

Resumo

Neste laboratório, exploramos como o PyArrow pode ser usado com o pandas para estender sua funcionalidade e melhorar o desempenho. Aprendemos como converter estruturas de dados do pandas em tipos de dados PyArrow e realizar várias operações. Também vimos como ler dados usando a funcionalidade de leitura de IO do PyArrow.