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))
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))
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)))
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"])
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"])