パンダでランダムな整数のデータフレームを作成するにはどうすればよいですか?


123

私が使用する場合randn

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

私が探しているものを私に与えますが、正規分布の要素があります。しかし、ランダムな整数が必要な場合はどうなりますか?

randint範囲を提供することで機能しますが、配列のような配列ではrandn機能しません。それで、ある範囲の間のランダムな整数でこれをどのように行うのですか?


回答:


183

numpy.random.randint3番目の引数(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
インポートを含む/行番号のないコピー/貼り付け可能なサンプルを作成していただけませんか?
Martin Thoma

2
優れたソリューションに追加します。列にそれぞれ文字以外の名前を付けたい場合は、df = pd.DataFrame(np.random.randint(0,100、size =(100、4))、columns = list(['AA' 、 'BB'、 'C​​2'、 'D2']))
mzakaria

2
@mzakaria [...]はすでにリストなので、必要ありませんlist([...])
jtlz2

0

最近の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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.