Améliorer pandas avec PyArrow

Beginner

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

Introduction

Ce laboratoire vous guidera tout au long du processus d'utilisation de PyArrow dans pandas pour étendre les fonctionnalités et améliorer les performances de diverses API. PyArrow enrichit pandas avec des types de données plus extensifs, une prise en charge des données manquantes pour tous les types de données, une intégration des lecteurs d'entrée/sortie et une interopérabilité avec d'autres bibliothèques de tableaux de données.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour passer à l'onglet Carnet d'adresses pour accéder au carnet Jupyter pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.

Installation de PyArrow

Avant de commencer, assurez-vous d'avoir installé la version minimale prise en charge de PyArrow. Vous pouvez le faire en exécutant la commande suivante dans votre environnement Python :

## Ceci est un commentaire
## Utilisez pip pour installer PyArrow
pip install pyarrow

Intégration des structures de données

PyArrow permet aux structures de données de pandas d'être directement prises en charge par un PyArrow ChunkedArray, similaire à un tableau NumPy. Voici comment faire :

## Importez pandas
import pandas as pd

## Créez une série pandas, un index et un DataFrame avec un type de données 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]")

Utilisation de types PyArrow avec des paramètres

Pour les types PyArrow qui acceptent des paramètres, vous pouvez passer un type PyArrow avec ces paramètres à ArrowDtype pour l'utiliser dans le paramètre dtype.

## Importez PyArrow
import pyarrow as pa

## Créez une série pandas avec un type de liste PyArrow
list_str_type = pa.list_(pa.string())
ser = pd.Series([["hello"], ["there"]], dtype=pd.ArrowDtype(list_str_type))

Conversion d'un tableau PyArrow en structures de données pandas

Si vous avez un tableau PyArrow ou un ChunkedArray, vous pouvez le convertir en structures de données pandas telles que Series, Index ou DataFrame.

## Créez un tableau PyArrow
pa_array = pa.array([{"1": "2"}, {"10": "20"}, None], type=pa.map_(pa.string(), pa.string()))

## Convertissez le tableau PyArrow en une série pandas
ser = pd.Series(pd.arrays.ArrowExtensionArray(pa_array))

Opérations avec PyArrow

L'intégration des structures de données PyArrow est implémentée via l'interface ExtensionArray de pandas. La fonctionnalité prise en charge existe là où cette interface est intégrée dans l'API pandas.

## Créez une série pandas avec un type de données PyArrow
ser = pd.Series([-1.545, 0.2, None], dtype="float32[pyarrow]")

## Effectuez diverses opérations
ser.mean()
ser + ser
ser > (ser + 1)
ser.dropna()
ser.isna()
ser.fillna(0)

Lecture de données avec PyArrow

PyArrow fournit des fonctionnalités de lecture d'entrée/sortie (IO) qui ont été intégrées dans plusieurs lecteurs d'IO de pandas.

## Importez le module IO
import io

## Créez un objet StringIO
data = io.StringIO("""a,b,c\n1,2.5,True\n3,4.5,False""")

## Lisez les données dans un DataFrame pandas en utilisant PyArrow comme moteur
df = pd.read_csv(data, engine="pyarrow")

Sommaire

Dans ce laboratoire, nous avons exploré la manière dont PyArrow peut être utilisé avec pandas pour étendre ses fonctionnalités et améliorer les performances. Nous avons appris à convertir les structures de données pandas en types de données PyArrow et à effectuer diverses opérations. Nous avons également vu comment lire des données à l'aide des fonctionnalités de lecture d'entrée/sortie (IO) de PyArrow.