Як створити DataFrame з випадкових цілих чисел за допомогою Pandas?


124

Я знаю, що якщо я буду використовувати randn,

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

дає мені те, що я шукаю, але з елементами звичайного розподілу. Але що робити, якщо я просто хотів випадкових цілих чисел?

randintпрацює, надаючи діапазон, але не масив, як randnце є. Тож як це зробити з випадковими цілими числами між деяким діапазоном?


І пов’язано з тим, коли ми просто додаємо стовпець: Pandas: створити новий стовпець у df із випадковими цілими числами
smci

Відповіді:


185

numpy.random.randintприймає третій аргумент ( size), в якому можна вказати розмір вихідного масиву. Ви можете використовувати це для створення свого DataFrame-

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

Тут - np.random.randint(0,100,size=(100, 4))- створює вихідний масив розміру (100,4)з випадковими цілими елементами між [0,100).


Демо -

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

яка виробляє:

     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
Чи можете ви, будь ласка, зробити зразок для копіювання, який можна вставити, який включає імпорт / відсутні номери рядків?
Мартін Тома

2
Додавання до відмінного рішення. Якщо ви хочете назвати стовпці будь-чим, крім букви, у кожному порядку, вам слід зробити df = pd.DataFrame (np.random.randint (0,100, size = (100, 4)), столбцы = список (['AA' , 'BB', 'C2', 'D2']))
mzakaria

2
@mzakaria [...]- це вже список, тому вам не потрібноlist([...])
jtlz2

1

Рекомендованим способом створення випадкових цілих чисел за допомогою NumPy в наші дні є використання numpy.random.Generator.integers. ( документація )

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.