Come creare un DataFrame di numeri interi casuali con Pandas?


123

So che se uso randn,

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

mi dà quello che cerco, ma con elementi da una distribuzione normale. Ma cosa succede se volessi solo numeri interi casuali?

randintfunziona fornendo un intervallo, ma non un array come randnfa. Quindi come faccio a farlo con numeri interi casuali tra un certo intervallo?


E relativo a quando stiamo solo aggiungendo una colonna: Panda: crea una nuova colonna in df con numeri interi casuali
smci

Risposte:


183

numpy.random.randintaccetta un terzo argomento ( size), in cui è possibile specificare la dimensione dell'array di output. Puoi usarlo per creare il tuo DataFrame-

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

Qui - np.random.randint(0,100,size=(100, 4))- crea un array di output di dimensioni (100,4)con elementi interi casuali tra [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'))

che produce:

     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
..  ..  ..  ..  ..

1
Potresti creare un campione copiabile che includa le importazioni / non abbia i numeri di riga?
Martin Thoma

2
Aggiungendo alla soluzione eccellente. Se vuoi nominare le colonne in modo diverso da una lettera ciascuna in quell'ordine, dovresti fare df = pd.DataFrame (np.random.randint (0,100, size = (100, 4)), columns = list (['AA' , 'BB', 'C2', 'D2']))
mzakaria

2
@mzakaria [...]è già un elenco quindi non è necessariolist([...])
jtlz2

0

Il modo consigliato per creare numeri interi casuali con NumPy in questi giorni è usare numpy.random.Generator.integers. ( documentazione )

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.