Gibt es eine Möglichkeit, zufällige Zeilen aus einem DataFrame in Pandas auszuwählen?
In R gibt es unter Verwendung des Fahrzeugpakets eine nützliche Funktion, some(x, n)
die dem Kopf ähnlich ist, in diesem Beispiel jedoch 10 zufällige Zeilen aus x auswählt.
Ich habe mir auch die Schnittdokumentation angesehen und es scheint nichts Äquivalentes zu geben.
Aktualisieren
Jetzt mit Version 20. Es gibt eine Beispielmethode.
df.sample(n)
df.sample(N, replace=True)
. Weitere Details hier .Antworten:
Etwas wie das?
Hinweis: Ab Pandas v0.20.0,
ix
ist veraltet zugunsten vonloc
für den Etikettenbasierte Indexierung.quelle
df.ix[np.random.random_integers(0, len(df), 10)]
das auch funktionieren würde.df.ix[np.random.choice(df.index, 10)]
.np.random.choice
das doppelt so schnell ist wierandom.sample
Ab der Pandas-Version
0.16.1
ist jetzt eineDataFrame.sample
Methode integriert :Für beide oben genannten Ansätze können Sie den Rest der Zeilen abrufen, indem Sie Folgendes tun:
quelle
df_0.7
ist kein gültiger Name. Außerdem schlage ich vor , Ersatzdf_rest = df.loc[~df.index.isin(df_0_7.index)]
mitdf_rest = df.loc[df.index.difference(df_0_7.index)]
.difference()
?df_percent.index.get_indexer(df.index) == -1
ist weitaus effizienter (aber auch hässlicher) ...sample
Ab Version 0.20.0 können Sie Folgendes
pd.DataFrame.sample
verwenden, um eine zufällige Stichprobe von Zeilen mit fester Anzahl oder einen Prozentsatz von Zeilen zurückzugeben:Aus Gründen der Reproduzierbarkeit können Sie eine Ganzzahl angeben
random_state
, die der Verwendung entsprichtnp.ramdom.seed
. Anstatt beispielsweise zu setzen,np.random.seed = 0
können Sie:quelle
Der beste Weg, dies zu tun, ist mit der Beispielfunktion aus dem Zufallsmodul.
quelle
Tatsächlich erhalten Sie dadurch wiederholte Indizes, bei
np.random.random_integers(0, len(df), N)
denenN
es sich um eine große Zahl handelt.quelle
Unter der Zeile werden zufällig n Zeilen aus der Gesamtzahl der vorhandenen Zeilennummern aus dem Datenrahmen df ohne Ersatz ausgewählt.
df=df.take(np.random.permutation(len(df))[:n])
quelle