Vue d'ensemble

Pandas 2.0, publié le 4 avril 2023, est une version majeure qui introduit le backend PyArrow, le mode Copy-on-Write et les types nullable par défaut. Ces changements améliorent drastiquement les performances et la gestion mémoire.

Fonctionnalités principales

Backend PyArrow

Le nouveau backend pyarrow permet de stocker les données dans des colonnes Arrow au lieu de NumPy, offrant des performances supérieures pour les opérations sur les chaînes, les dates et les types catégoriels.

python
import pandas as pd

# Lecture avec backend PyArrow
df = pd.read_csv(
    'donnees.csv',
    dtype_backend='pyarrow',
    engine='pyarrow',
)
print(df.dtypes)
# nom       string[pyarrow]
# age       int64[pyarrow]
# score     double[pyarrow]

# Opérations sur les chaînes beaucoup plus rapides
df['nom_maj'] = df['nom'].str.upper()

Copy-on-Write

Le mode Copy-on-Write (CoW) évite les copies inutiles de données. Les modifications ne déclenchent une copie que lorsque c'est nécessaire, réduisant considérablement l'utilisation mémoire.

python
import pandas as pd

pd.set_option('mode.copy_on_write', True)

df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})

# Pas de copie ici, juste une vue
df2 = df[['a']]

# La copie ne se fait que si on modifie df2
df2.iloc[0] = 100  # copie déclenchée ici
print(df['a'][0])   # 1 (inchangé)
print(df2['a'][0])  # 100

Types nullable par défaut

Les types nullable (Int64, Float64, boolean) utilisent pd.NA au lieu de NaN, unifiant la gestion des valeurs manquantes pour tous les types de données.

python
import pandas as pd

# Types nullable explicites
s = pd.Series([1, None, 3], dtype='Int64')
print(s)
# 0       1
# 1    <NA>
# 2       3
# dtype: Int64

# Les opérations propagent NA correctement
print(s.sum())   # 4
print(s.mean())  # 2.0
print(s[1] is pd.NA)  # True

Sources