programing

Panda를 사용하여 임의 정수의 데이터 프레임을 만드는 방법은 무엇입니까?

instargram 2023. 5. 17. 22:26
반응형

Panda를 사용하여 임의 정수의 데이터 프레임을 만드는 방법은 무엇입니까?

사용하면 다음 코드가 제가 원하는 것을 제공하지만 정규 분포의 요소를 포함한다는 것을 알고 있습니다.하지만 만약 제가 단지 무작위 정수를 원한다면요?

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

randint범위를 제공함으로써 작동하지만 같은 배열은 아닙니다.randn그렇다면 어떤 범위 사이에 임의의 정수를 두고 어떻게 해야 할까요?

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
..  ..  ..  ..  ..

요즘 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

를 사용할 수도 있습니다.

df = pd.DataFrame(np.random.default_rng().choice(100, size=(100, 4)), columns=['A','B','C','D'])

이 방법의 장점은integers원하는 목록/어레이에서 선택할 수 있습니다.예를 들어, 랜덤 표본을 생성하려는 경우[2, 5, 10],그리고나서

df = pd.DataFrame(np.random.default_rng().choice([2,5,10], size=(100, 4)), columns=['A','B','C','D'])

확률 분포를 표본 항목에 연결할 수도 있습니다.예를 들어, p=0.8인 경우 2를 선택하고 p=0.2인 경우 5를 선택하려면 다음과 같이 전달할 수 있습니다.p=논쟁.

df = pd.DataFrame(np.random.default_rng().choice([2,5], p=[.8,.2], size=(100, 4)), columns=['A','B','C','D'])

또한, 그와 함께.Generator,choice만큼 빠름integers그리고 보다 더 빠릅니다.randint.

%timeit pd.DataFrame(np.random.default_rng().choice(100, size=(100_000,4)), columns=[*'ABCD'])
# 3.34 ms ± 308 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit pd.DataFrame(np.random.default_rng().integers(0, 100, size=(100_000,4)), columns=[*'ABCD'])
# 3.81 ms ± 708 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit pd.DataFrame(np.random.randint(100, size=(100_000,4)), columns=[*'ABCD'])
# 6.78 ms ± 776 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

언급URL : https://stackoverflow.com/questions/32752292/how-to-create-a-dataframe-of-random-integers-with-pandas

반응형