Échantillonnage et données aléatoires avec Pandas

Pandas offre une riche fonctionnalité d'échantillonnage aléatoire, vous permettant de sélectionner aléatoirement des échantillons dans un ensemble de données selon vos besoins, et prend également en charge la génération de données aléatoires.


Échantillonnage aléatoire

Méthode sample

Exemple

import pandas as pd
import numpy as np

# Créer un grand ensemble de données
df = pd.DataFrame({
    "ID": range(1, 1001),
    "Value": np.random.randn(1000)
})

# Échantillonner aléatoirement 5 lignes
print("Échantillon aléatoire de 5 lignes :")
print(df.sample(5))
print()

# Échantillonner 30% des données
print("Échantillon aléatoire de 30% :")
print(df.sample(frac=0.3))
print()

# Échantillonnage avec remise
print("Échantillon de 5 lignes avec remise :")
print(df.sample(5, replace=True))

Définition de la graine aléatoire

Exemple

import pandas as pd
import numpy as np

# Définir la graine aléatoire pour garantir des résultats reproductibles
np.random.seed(42)

df = pd.DataFrame({
    "ID": range(1, 11),
    "Value": np.random.randn(10)
})

print("Utilisation de la graine aléatoire 42:")
print(df.sample(3))

# Relancer avec la même graine pour obtenir les mêmes résultats
print("\nNouvelle exécution avec la même graine:")
np.random.seed(42)
print(df.sample(3))

Génération de données aléatoires

Exemple

import pandas as pd
import numpy as np

# Générer des entiers aléatoires
print("Entiers aléatoires [0, 10):")
print(pd.Series(np.random.randint(0, 10, 5)))
print()

# Générer des flottants aléatoires
print("Flottants aléatoires [0, 1):")
print(pd.Series(np.random.random(5)))
print()

# Générer des nombres aléatoires suivant une distribution normale
print("Distribution normale N(0, 1):")
print(pd.Series(np.random.randn(5)))
print()

# Spécifier la moyenne et l'écart-type
print("Distribution normale N(10, 2) :")
print(pd.Series(np.random.normal(10, 2, 5)))
print()

# Choix aléatoire
choices = ["A", "B", "C", "D"]
print("Choix aléatoire :")
print(pd.Series(np.random.choice(choices, 10)))

Division entraînement-test

Exemple

import pandas as pd
import numpy as np

# Simuler un jeu de données
df = pd.DataFrame({
    "Caractéristique1": np.random.randn(100),
    "Caractéristique2": np.random.randn(100),
    "Cible": np.random.choice([0, 1], 100)
})

# Diviser en ensembles d'entraînement et de test (80% / 20%)
train = df.sample(frac=0.8, random_state=42)
test = df.drop(train.index)

print(f"Jeu d'entraînement : {len(train)} lignes")
print(f"Jeu de test : {len(test)} lignes")
print()

# Échantillonnage stratifié (conserver la proportion de la variable cible)
print("Échantillonnage stratifié :")
from sklearn.model_selection import train_test_split
# Nécessite scikit-learn : pip install scikit-learn
# train, test = train_test_split(df, test_size=0.2, stratify=df["Target"])
Autres extensions