จะสร้าง 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
คุณช่วยสร้างตัวอย่างที่คัดลอกวางได้ซึ่งรวมถึงการนำเข้า / ไม่มีหมายเลขบรรทัด
Martin Thoma

2
การเพิ่มโซลูชันที่ยอดเยี่ยม หากคุณต้องการตั้งชื่อคอลัมน์เป็นอย่างใดอย่างหนึ่งยกเว้นแต่ละตัวอักษรตามลำดับนั้นคุณควรทำ df = pd.DataFrame (np.random.randint (0,100, size = (100, 4)), column = list (['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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.