Wie erstelle ich mit Pandas einen DataFrame aus zufälligen Ganzzahlen?

122

Ich weiß das, wenn ich benutze randn,

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(100, 4), columns=list('ABCD'))

gibt mir was ich suche, aber mit Elementen aus einer Normalverteilung. Aber was ist, wenn ich nur zufällige ganze Zahlen wollte?

randintfunktioniert durch Bereitstellen eines Bereichs, jedoch nicht eines Arrays wie dies der randnFall ist. Wie mache ich das mit zufälligen ganzen Zahlen zwischen bestimmten Bereichen?

TheRealFakeNews
quelle
Und im Zusammenhang mit dem Hinzufügen einer Spalte: Pandas: Erstellen Sie eine neue Spalte in df mit zufälligen Ganzzahlen
smci

Antworten:

182

numpy.random.randintakzeptiert ein drittes Argument ( size), in dem Sie die Größe des Ausgabearrays angeben können. Sie können dies verwenden, um Ihre DataFrame-

df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))

Hier - np.random.randint(0,100,size=(100, 4))- erstellt ein Ausgabearray der Größe (100,4)mit zufälligen ganzzahligen Elementen dazwischen [0,100).


Demo -

import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))

welches produziert:

     A   B   C   D
0   45  88  44  92
1   62  34   2  86
2   85  65  11  31
3   74  43  42  56
4   90  38  34  93
5    0  94  45  10
6   58  23  23  60
..  ..  ..  ..  ..
Anand S Kumar
quelle
1
Könnten Sie bitte ein kopierfähiges Beispiel erstellen, das die Importe enthält / nicht die Zeilennummern enthält?
Martin Thoma
2
Hinzufügen zu der ausgezeichneten Lösung. Wenn Sie den Spalten einen anderen Namen als einen Buchstaben in dieser Reihenfolge geben möchten, sollten Sie df = pd.DataFrame (np.random.randint (0,100, size = (100, 4)), column = list (['AA') ausführen. , 'BB', 'C2', 'D2']))
mzakaria
2
@mzakaria [...]ist bereits eine Liste, die Sie nicht benötigenlist([...])
jtlz2
0

Die empfohlene Methode zum Erstellen zufälliger Ganzzahlen mit NumPy ist heutzutage die Verwendung numpy.random.Generator.integers. ( Dokumentation )

import numpy as np
import pandas as pd

rng = np.random.default_rng()
df = pd.DataFrame(rng.integers(0, 100, size=(100, 4)), columns=list('ABCD'))
df
----------------------
      A    B    C    D
 0   58   96   82   24
 1   21    3   35   36
 2   67   79   22   78
 3   81   65   77   94
 4   73    6   70   96
... ...  ...  ...  ...
95   76   32   28   51
96   33   68   54   77
97   76   43   57   43
98   34   64   12   57
99   81   77   32   50
100 rows × 4 columns
Webucator
quelle