Jak stworzyć DataFrame z losowych liczb całkowitych za pomocą Pandas?


124

Wiem, że jeśli używam randn,

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

daje mi to, czego szukam, ale z elementami z normalnej dystrybucji. Ale co, jeśli chcę tylko losowych liczb całkowitych?

randintdziała poprzez podanie zakresu, ale nie tablicy, jak randnrobi. Jak więc to zrobić z losowymi liczbami całkowitymi z jakiegoś zakresu?


I związane z
sytuacją,

Odpowiedzi:


184

numpy.random.randintakceptuje trzeci argument ( size), w którym można określić rozmiar tablicy wyjściowej. Możesz użyć tego do stworzenia swojego DataFrame-

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

Tutaj - np.random.randint(0,100,size=(100, 4))- tworzy wyjściową tablicę o rozmiarze (100,4)z losowymi elementami całkowitymi pomiędzy [0,100).


Próbny -

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

który produkuje:

     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
Czy mógłbyś wykonać próbkę do skopiowania, która zawiera import / nie ma numerów linii?
Martin Thoma

2
Dodając do doskonałego rozwiązania. Jeśli chcesz nazwać kolumny inaczej niż literą w tej kolejności, powinieneś zrobić df = pd.DataFrame (np.random.randint (0,100, size = (100, 4)), columns = list (['AA' , 'BB', 'C2', 'D2']))
mzakaria

2
@mzakaria [...]jest już listą, więc nie potrzebujeszlist([...])
jtlz2

1

Zalecanym sposobem tworzenia losowych liczb całkowitych za pomocą NumPy w dzisiejszych czasach jest użycie numpy.random.Generator.integers. ( dokumentacja )

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.