Comment créer un DataFrame d'entiers aléatoires avec Pandas?

123

Je sais que si j'utilise randn,

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

me donne ce que je recherche, mais avec des éléments d'une distribution normale. Mais que faire si je voulais juste des entiers aléatoires?

randintfonctionne en fournissant une plage, mais pas un tableau comme le randnfait. Alors, comment puis-je faire cela avec des entiers aléatoires entre une certaine plage?

TheRealFakeNews
la source
Et lié pour quand nous ajoutons simplement une colonne: Pandas: créer une nouvelle colonne dans df avec des entiers aléatoires
smci

Réponses:

183

numpy.random.randintaccepte un troisième argument ( size), dans lequel vous pouvez spécifier la taille du tableau de sortie. Vous pouvez l'utiliser pour créer votre DataFrame-

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

Ici - np.random.randint(0,100,size=(100, 4))- crée un tableau de sortie de taille (100,4)avec des éléments entiers aléatoires entre [0,100).


Démo -

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

qui produit:

     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
la source
1
Pourriez-vous s'il vous plaît créer un échantillon copiable qui inclut les importations / n'a pas les numéros de ligne?
Martin Thoma
2
Ajout à l'excellente solution. Si vous voulez nommer les colonnes autrement qu'une lettre dans cet ordre, vous devez faire df = pd.DataFrame (np.random.randint (0,100, size = (100, 4)), columns = list (['AA' , 'BB', 'C2', 'D2']))
mzakaria
2
@mzakaria [...]est déjà une liste donc vous n'avez pas besoinlist([...])
jtlz2
0

La méthode recommandée pour créer des entiers aléatoires avec NumPy ces jours-ci est d'utiliser numpy.random.Generator.integers. ( documentation )

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
la source