Data Manipulation

Mélange efficace des DataFrames Pandas

Spread the love

Le mélange aléatoire des lignes dans un DataFrame Pandas est une opération fréquente en science des données, cruciale pour des tâches comme la création d’ensembles de données d’entraînement et de test, l’échantillonnage aléatoire, ou simplement la randomisation des données pour l’analyse. Cet article explore trois méthodes efficaces pour y parvenir, en soulignant leurs forces et leurs faiblesses.

Table des matières

Méthode Pandas sample()

La méthode Pandas sample() offre une approche conviviale pour mélanger les lignes d’un DataFrame. En définissant le paramètre frac à 1, vous obtenez un ordre complètement aléatoire du DataFrame original.


import pandas as pd

# DataFrame exemple
data = {'col1': [1, 2, 3, 4, 5], 'col2': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)

# Mélange avec sample()
shuffled_df = df.sample(frac=1, random_state=42)  # random_state pour la reproductibilité

print("DataFrame original:n", df)
print("nDataFrame mélangé:n", shuffled_df)

L’argument random_state est essentiel pour la reproductibilité. Spécifier un entier garantit un mélange cohérent sur plusieurs exécutions. L’omettre entraînera des mélanges différents à chaque fois.

Fonction NumPy permutation()

La fonction NumPy permutation() génère une permutation aléatoire d’indices. Cette approche est généralement plus rapide que sample(), surtout pour les grands DataFrames, car elle opère directement sur les tableaux NumPy qui sont plus efficaces.


import pandas as pd
import numpy as np

# DataFrame exemple
data = {'col1': [1, 2, 3, 4, 5], 'col2': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)

# Mélange avec numpy.random.permutation()
shuffled_indices = np.random.permutation(len(df))
shuffled_df = df.iloc[shuffled_indices]

print("DataFrame original:n", df)
print("nDataFrame mélangé:n", shuffled_df)

Pour des résultats reproductibles, utilisez np.random.seed(42) avant d’appeler np.random.permutation().

Fonction Scikit-learn shuffle()

La fonction Scikit-learn shuffle() est particulièrement bénéfique lorsqu’on mélange un DataFrame avec un tableau associé (par exemple, des étiquettes dans un cadre d’apprentissage supervisé). Elle garantit que le DataFrame et le tableau restent synchronisés après le mélange.


import pandas as pd
from sklearn.utils import shuffle

# DataFrame exemple
data = {'col1': [1, 2, 3, 4, 5], 'col2': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)

# Mélange du DataFrame et d'un tableau séparé (si nécessaire)
shuffled_df, _ = shuffle(df, random_state=42)  # le tiret bas ignore la deuxième valeur de retour

print("DataFrame original:n", df)
print("nDataFrame mélangé:n", shuffled_df)

Comme les méthodes précédentes, random_state contrôle la reproductibilité. Le tiret bas _ ignore la deuxième valeur de retour (qui serait un tableau mélangé si l’on en avait fourni un).

Conclusion : Chaque méthode mélange efficacement les lignes d’un DataFrame. Pandas sample() est la plus intuitive, tandis que permutation() de NumPy offre souvent des performances supérieures pour les grands ensembles de données. shuffle() de Scikit-learn est idéale pour le mélange simultané d’un DataFrame et d’un tableau correspondant. Choisissez la méthode la mieux adaptée à vos besoins et utilisez toujours random_state pour des résultats reproductibles.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *