Làm cách nào để tạo DataFrame gồm các số nguyên ngẫu nhiên với gấu trúc?


123

Tôi biết rằng nếu tôi sử dụng randn,

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

cung cấp cho tôi những gì tôi đang tìm kiếm, nhưng với các phần tử từ phân phối chuẩn. Nhưng nếu tôi chỉ muốn số nguyên ngẫu nhiên thì sao?

randinthoạt động bằng cách cung cấp một phạm vi, nhưng không phải một mảng như randnvậy. Vậy làm cách nào để thực hiện việc này với các số nguyên ngẫu nhiên giữa một số phạm vi?


Và có liên quan khi chúng tôi chỉ thêm một cột: Pandas: tạo cột mới trong df với các số nguyên ngẫu nhiên
smci

Câu trả lời:


183

numpy.random.randintchấp nhận đối số thứ ba ( size), trong đó bạn có thể chỉ định kích thước của mảng đầu ra. Bạn có thể sử dụng cái này để tạo DataFrame-

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

Ở đây - np.random.randint(0,100,size=(100, 4))- tạo một mảng đầu ra có kích thước (100,4)với các phần tử nguyên ngẫu nhiên ở giữa [0,100).


Bản giới thiệu -

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

sản xuất:

     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
Bạn có thể vui lòng tạo một mẫu có thể sao chép bao gồm các nhập / không có số dòng không?
Martin Thoma

2
Thêm vào giải pháp tuyệt vời. Nếu bạn muốn đặt tên cho các cột bất kỳ thứ gì ngoại trừ mỗi một chữ cái theo thứ tự đó, bạn nên thực hiện df = pd.DataFrame (np.random.randint (0,100, size = (100, 4)), column = list (['AA' , 'BB', 'C2', 'D2']))
mzakaria

2
@mzakaria [...]đã là một danh sách nên bạn không cầnlist([...])
jtlz2

0

Cách được khuyến nghị để tạo số nguyên ngẫu nhiên với NumPy những ngày này là sử dụng numpy.random.Generator.integers. ( tài liệu )

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.