Data Manipulation

Effizientes Mischen von Pandas DataFrames

Spread the love

Das zufällige Mischen von Zeilen in einem Pandas DataFrame ist eine häufige Operation in der Datenwissenschaft, die für Aufgaben wie das Erstellen von Trainings- und Testdatensätzen, die Zufallsstichprobenziehung oder einfach das Zufälligmachen von Daten für die Analyse entscheidend ist. Dieser Artikel untersucht drei effiziente Methoden, um dies zu erreichen, und hebt deren Stärken und Schwächen hervor.

Inhaltsverzeichnis

Pandas sample() Methode

Die Pandas sample() Methode bietet einen benutzerfreundlichen Ansatz zum Mischen von DataFrame-Zeilen. Durch Setzen des frac-Parameters auf 1 erhalten Sie eine vollständig randomisierte Reihenfolge des ursprünglichen DataFrames.


import pandas as pd

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

# Mischen mit sample()
shuffled_df = df.sample(frac=1, random_state=42)  # random_state für Reproduzierbarkeit

print("Original DataFrame:n", df)
print("nGemischter DataFrame:n", shuffled_df)

Das Argument random_state ist entscheidend für die Reproduzierbarkeit. Die Angabe einer Ganzzahl gewährleistet ein konsistentes Mischen über mehrere Durchläufe. Das Weglassen führt zu unterschiedlichen Mischungen bei jedem Durchlauf.

NumPy permutation() Funktion

Die NumPy permutation() Funktion generiert eine zufällige Permutation von Indizes. Dieser Ansatz ist im Allgemeinen schneller als sample(), insbesondere für große DataFrames, da er direkt auf NumPy-Arrays arbeitet, die effizienter sind.


import pandas as pd
import numpy as np

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

# Mischen mit numpy.random.permutation()
shuffled_indices = np.random.permutation(len(df))
shuffled_df = df.iloc[shuffled_indices]

print("Original DataFrame:n", df)
print("nGemischter DataFrame:n", shuffled_df)

Für reproduzierbare Ergebnisse verwenden Sie np.random.seed(42), bevor Sie np.random.permutation() aufrufen.

Scikit-learn shuffle() Funktion

Die Scikit-learn shuffle() Funktion ist besonders nützlich, wenn ein DataFrame zusammen mit einem verwandten Array (z. B. Labels in einer überwachten Lernumgebung) gemischt wird. Sie stellt sicher, dass der DataFrame und das Array nach dem Mischen synchron bleiben.


import pandas as pd
from sklearn.utils import shuffle

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

# Mischen von DataFrame und einem separaten Array (falls benötigt)
shuffled_df, _ = shuffle(df, random_state=42)  # Unterstrich ignoriert den zweiten Rückgabewert

print("Original DataFrame:n", df)
print("nGemischter DataFrame:n", shuffled_df)

Wie bei den vorherigen Methoden steuert random_state die Reproduzierbarkeit. Der Unterstrich _ verwirft den zweiten Rückgabewert (der ein gemischtes Array wäre, wenn eines bereitgestellt würde).

Fazit: Jede Methode mischt DataFrame-Zeilen effektiv. Pandas sample() ist die intuitivste, während NumPys permutation() oft eine bessere Leistung für größere Datensätze bietet. Scikit-learns shuffle() ist ideal für das gleichzeitige Mischen eines DataFrames und eines entsprechenden Arrays. Wählen Sie die Methode, die Ihren Bedürfnissen am besten entspricht, und verwenden Sie immer random_state für reproduzierbare Ergebnisse.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert