Zufälliges Mischen von DataFrame-Zeilen in Pandas

Suraj Joshi 30 Januar 2023
  1. pandas.DataFrame.sample()-Methode zum Mischen von DataFramezeilen in Pandas
  2. numpy.random.permutation() zum Mischen von Pandas DataFrame-Zeilen
  3. sklearn.utils.shuffle() zum Mischen von Pandas DataFrame-Zeilen
Zufälliges Mischen von DataFrame-Zeilen in Pandas

Wir könnten die Methode sample() der Pandas DataFrame-Objekte, die Funktion permutation() aus dem Modul NumPy und die Funktion shuffle() aus dem Paket sklearn verwenden, um DataFrame-Zeilen in Pandas zufällig zu mischen.

pandas.DataFrame.sample()-Methode zum Mischen von DataFramezeilen in Pandas

pandas.DataFrame.sample() kann verwendet werden, um eine Zufallsstichprobe von Elementen von einer Achse des DataFrame-Objekts zurückzugeben. Wir setzen den Parameter axis auf 0, da wir die Elemente zeilenweise stichprobenartig entnehmen müssen, was der Standardwert für den Parameter axis ist.

Der Parameter frac bestimmt, welcher Anteil der Gesamtinstanzen zurückgegeben werden muss. Wenn wir mischen wollen, setzen wir den Wert von frac auf 1.

import pandas as pd

dates = ["April-10", "April-11", "April-12", "April-13"]
fruits = ["Apple", "Papaya", "Banana", "Mango"]
prices = [3, 1, 2, 4]

df = pd.DataFrame({"Date": dates, "Fruit": fruits, "Price": prices})
print(df)

df_shuffled = df.sample(frac=1).reset_index(drop=True)
print(df_shuffled)

Ausgabe:

       Date   Fruit  Price
0  April-10   Apple      3
1  April-11  Papaya      1
2  April-12  Banana      2
3  April-13   Mango      4
       Date   Fruit  Price
3  April-13   Mango      4
2  April-12  Banana      2
0  April-10   Apple      3
1  April-11  Papaya      1

Die Methode Dataframe.shuttle mischt Reihen von Pandas DataFrame, wie oben gezeigt. Die Indizes der DataFrame-Reihen bleiben die gleichen wie die anfänglichen Indizes.

Wir könnten die Methode reset_index() hinzufügen, um den DataFrame-Index zurückzusetzen.

import pandas as pd

dates = ["April-10", "April-11", "April-12", "April-13"]
fruits = ["Apple", "Papaya", "Banana", "Mango"]
prices = [3, 1, 2, 4]

df = pd.DataFrame({"Date": dates, "Fruit": fruits, "Price": prices})
print(df)

df_shuffled = df.sample(frac=1).reset_index(drop=True)
print(df_shuffled)

Ausgabe:

       Date   Fruit  Price
0  April-10   Apple      3
1  April-11  Papaya      1
2  April-12  Banana      2
3  April-13   Mango      4
       Date   Fruit  Price
0  April-11  Papaya      1
1  April-13   Mango      4
2  April-10   Apple      3
3  April-12  Banana      2

Hier verhindert die Option drop=True, dass die Spalte index als neue Spalte hinzugefügt wird.

numpy.random.permutation() zum Mischen von Pandas DataFrame-Zeilen

Wir können numpy.random.permutation() verwenden, um die Indizes von DataFrame zu mischen. Wenn die gemischten Indizes verwendet werden, um Zeilen mit der iloc() Methode auszuwählen, erhalten wir zufällig gemischte Zeilen.

import pandas as pd
import numpy as np

dates = ["April-10", "April-11", "April-12", "April-13"]
fruits = ["Apple", "Papaya", "Banana", "Mango"]
prices = [3, 1, 2, 4]

df = pd.DataFrame({"Date": dates, "Fruit": fruits, "Price": prices})

df_shuffled = df.iloc[np.random.permutation(df.index)].reset_index(drop=True)
print(df_shuffled)

Ausgabe:

       Date   Fruit  Price
0  April-13   Mango      4
1  April-12  Banana      2
2  April-10   Apple      3
3  April-11  Papaya      1

Sie erhalten möglicherweise ein anderes Ergebnis, wenn Sie den gleichen Code ausführen. Das liegt daran, dass die Funktion np.random.permutation() jedes Mal unterschiedliche Permutationen von Zahlen erzeugt.

sklearn.utils.shuffle() zum Mischen von Pandas DataFrame-Zeilen

Wir können auch sklearn.utils.shuffle() verwenden, um Reihen von Pandas DataFrame zu mischen.

import pandas as pd
import numpy as np
import sklearn

dates = ["April-10", "April-11", "April-12", "April-13"]
fruits = ["Apple", "Papaya", "Banana", "Mango"]
prices = [3, 1, 2, 4]

df = pd.DataFrame({"Date": dates, "Fruit": fruits, "Price": prices})

df_shuffled = sklearn.utils.shuffle(df)
print(df_shuffled)

Ausgabe:

       Date   Fruit  Price
3  April-13   Mango      4
0  April-10   Apple      3
1  April-11  Papaya      1
2  April-12  Banana      2

Wenn Sie das Paket sklearn nicht installiert haben, können Sie es einfach mit Hilfe des Skripts installieren:

pip install -U scikit-learn
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Verwandter Artikel - Pandas DataFrame Row