Vue d'ensemble
PyArrow 3.0, publié le 28 janvier 2021, enrichit l'API Dataset pour la lecture de fichiers volumineux et ajoute de nouvelles fonctions de calcul vectorisé.
Fonctionnalités principales
API Dataset
L'API pyarrow.dataset permet de lire de manière paresseuse des jeux de données partitionnés en Parquet, CSV ou d'autres formats. Le filtrage par prédicat et la sélection de colonnes sont effectués au niveau du moteur de lecture pour des performances optimales.
python
import pyarrow.dataset as ds
# Lecture paresseuse d'un dataset partitionné
dataset = ds.dataset(
'donnees/ventes/',
format='parquet',
partitioning='hive', # année=2021/mois=01/
)
# Filtrage et sélection de colonnes (pushdown)
table = dataset.to_table(
filter=(ds.field('année') == 2021),
columns=['produit', 'montant'],
)
print(f'Lignes : {table.num_rows}')
print(table.to_pandas().head())
Fonctions de calcul
Le module pyarrow.compute s'enrichit de fonctions de calcul vectorisé : opérations sur les chaînes, arithmétique, agrégations et fonctions de tri. Ces fonctions opèrent directement sur les tableaux Arrow sans copie vers NumPy.
python
import pyarrow as pa
import pyarrow.compute as pc
# Calcul vectorisé sur tableaux Arrow
prix = pa.array([10.5, 23.0, 7.8, 45.2, 12.0])
quantites = pa.array([3, 1, 5, 2, 4])
# Multiplication élément par élément
totaux = pc.multiply(prix, quantites)
print(totaux) # [31.5, 23.0, 39.0, 90.4, 48.0]
# Agrégation
print(f'Total : {pc.sum(totaux).as_py():.2f}') # 231.90
# Fonctions sur chaînes
noms = pa.array(['alice', 'BOB', 'Charlie'])
print(pc.utf8_capitalize(noms)) # ['Alice', 'Bob', 'Charlie']
