Pandas-Stichproben und Zufallsdaten

Pandas bietet umfangreiche Funktionen für die zufällige Stichprobenentnahme, mit denen Sie nach Bedarf zufällig Stichproben aus einem Datensatz auswählen können, und unterstützt auch die Generierung von Zufallsdaten.


Zufällige Stichprobenentnahme

sample-Methode

Beispiel

import pandas as pd
import numpy as np

# Erstellen eines großen Datensatzes
df = pd.DataFrame({
    "ID": range(1, 1001),
    "Value": np.random.randn(1000)
})

# 5 Zeilen zufällig auswählen
print("5 Zeilen zufällig auswählen:")
print(df.sample(5))
print()

# 30 % der Daten als Stichprobe entnehmen
print("30 % zufällig auswählen:")
print(df.sample(frac=0.3))
print()

# Stichprobenentnahme mit Zurücklegen
print("5 Zeilen mit Zurücklegen auswählen:")
print(df.sample(5, replace=True))

Zufälligen Startwert festlegen

Beispiel

import pandas as pd
import numpy as np

# Zufälligen Startwert festlegen, um reproduzierbare Ergebnisse zu erzielen
np.random.seed(42)

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

print("Zufalls-Seed 42 wird verwendet:")
print(df.sample(3))

# Erneut mit demselben Seed ausführen, um dieselben Ergebnisse zu erhalten
print("\nErneutes Ausführen mit demselben Seed:")
np.random.seed(42)
print(df.sample(3))

Zufallsdatengenerierung

Beispiel

import pandas as pd
import numpy as np

# Zufällige Ganzzahlen generieren
print("Zufällige Ganzzahlen [0, 10):")
print(pd.Series(np.random.randint(0, 10, 5)))
print()

# Zufällige Gleitkommazahlen generieren
print("Zufällige Gleitkommazahlen [0, 1):")
print(pd.Series(np.random.random(5)))
print()

# Normalverteilte Zufallszahlen generieren
print("Normalverteilung N(0, 1):")
print(pd.Series(np.random.randn(5)))
print()

# Mittelwert und Standardabweichung angeben
print("Normalverteilung N(10, 2):")
print(pd.Series(np.random.normal(10, 2, 5)))
print()

# Zufällige Auswahl
choices = ["A", "B", "C", "D"]
print("Zufällige Auswahl:")
print(pd.Series(np.random.choice(choices, 10)))

Train-Test-Aufteilung

Beispiel

import pandas as pd
import numpy as np

# Einen Datensatz simulieren
df = pd.DataFrame({
    "Feature1": np.random.randn(100),
    "Feature2": np.random.randn(100),
    "Target": np.random.choice([0, 1], 100)
})

# Aufteilen in Trainings- und Testsets (80% / 20%)
train = df.sample(frac=0.8, random_state=42)
test = df.drop(train.index)

print(f"Trainingsset: {len(train)} Zeilen")
print(f"Testset: {len(test)} Zeilen")
print()

# Stratifizierte Stichprobenentnahme (Anteil der Zielvariable beibehalten)
print("Stratifizierte Stichprobenentnahme:")
from sklearn.model_selection import train_test_split
# Erfordert scikit-learn: pip install scikit-learn
# train, test = train_test_split(df, test_size=0.2, stratify=df["Target"])
Andere Erweiterungen