Guide de migration Pandas 2.x vers 3.0

Pandas 3.0 supprime de nombreuses fonctionnalités dépréciées depuis la série 2.x. Voici les changements majeurs à anticiper et les étapes pour migrer votre code en douceur.

Fonctionnalités supprimées

Les principales suppressions concernent les méthodes et paramètres dépréciés dans Pandas 2.x. Si votre code affiche des FutureWarning avec Pandas 2.2, il cassera probablement avec 3.0.

python
import pandas as pd

# --- SUPPRIME dans Pandas 3.0 ---

# 1. DataFrame.append() -> utiliser pd.concat()
# AVANT :
# df = df.append({'a': 1}, ignore_index=True)  # supprimé
# APRES :
df = pd.DataFrame({'a': [1, 2]})
new_row = pd.DataFrame({'a': [3]})
df = pd.concat([df, new_row], ignore_index=True)

# 2. DataFrame.swaplevel() inplace -> retourner le résultat
# 3. Series.swaplevel() inplace -> idem

# 4. Le paramètre 'method' de fillna() est supprimé
# AVANT :
# df.fillna(method='ffill')  # supprimé
# APRES :
df = df.ffill()

# 5. datetime64[ns] n'est plus le dtype par défaut
#    -> datetime64[us] (microseconde) est le nouveau défaut

Étapes de migration

Procédez en trois temps : corrigez les warnings avec Pandas 2.2, testez avec le mode CoW activé, puis passez à Pandas 3.0.

python
# Étape 1 : Identifier les dépréciations avec Pandas 2.2
import warnings
warnings.filterwarnings('error', category=FutureWarning)
# Exécutez vos tests : chaque FutureWarning deviendra une erreur

# Étape 2 : Activer CoW en Pandas 2.2 pour anticiper
import pandas as pd
pd.set_option('mode.copy_on_write', True)
# Vérifiez que votre code fonctionne toujours

# Étape 3 : Mettre à jour les patterns courants

# Remplacement de inplace=True (recommandé) :
# AVANT : df.reset_index(inplace=True)
# APRES : df = df.reset_index()

# Remplacement des accès chaînés :
# AVANT : df['a'][0] = 99  # ne fonctionne plus avec CoW
# APRES : df.loc[0, 'a'] = 99

# Étape 4 : pip install pandas>=3.0 et relancer les tests

Sources