Pandalar ile rastgele tam sayılardan oluşan bir DataFrame nasıl oluşturulur?


124

Ben kullanırsanız bunu biliyorum randn,

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

bana aradığımı verir, ancak normal dağılımdan öğelerle. Ama ya sadece rastgele tamsayılar istersem?

randintbir aralık sağlayarak çalışır, ancak randnyaptığı gibi bir dizi sağlamaz. Peki bunu bir aralık arasında rastgele tamsayılarla nasıl yaparım?


Ve biz sadece bir sütun eklerken için related: Pandalar: rasgele tamsayılar ile df yeni sütun oluşturun
SMCI

Yanıtlar:


185

numpy.random.randintsizeçıktı dizisinin boyutunu belirtebileceğiniz üçüncü bir argümanı ( ) kabul eder . Bunu oluşturmak için kullanabilirsiniz DataFrame-

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

Burada - np.random.randint(0,100,size=(100, 4))- (100,4)arasında rastgele tamsayı öğeleri olan bir çıktı dizisi oluşturur [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'))

hangi üretir:

     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
Lütfen ithalatı içeren / satır numaralarını içermeyen kopyalanabilir bir örnek oluşturabilir misiniz?
Martin Thoma

2
Mükemmel çözüme ekleniyor. Sütunları bir harf dışında herhangi bir sırayla adlandırmak isterseniz, df = pd.DataFrame (np.random.randint (0,100, size = (100, 4)), column = list (['AA' , 'BB', 'C2', 'D2']))
mzakaria

2
@mzakaria [...]zaten bir liste, yani ihtiyacınız yoklist([...])
jtlz2

1

Bugünlerde NumPy ile rastgele tamsayılar oluşturmanın önerilen yolu kullanmaktır numpy.random.Generator.integers. ( belgeler )

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.