Zufälliges Mischen von DataFrame-Zeilen in Pandas

  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

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

Verwandter Artikel - Pandas DataFrame Row

  • Pandas lassen Zeilen mit NaN fallen
  • Wie erhält man einen Index aller Reihen, deren bestimmte Spalte den gegebenen Zustand in Pandas befriedigt