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.
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.
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.
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
