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
'programing' 카테고리의 다른 글
C# out 매개 변수에 해당하는 VB.NET이 있습니까? (0) | 2023.05.17 |
---|---|
jQuery로 텍스트 콘텐츠로 요소를 찾으려면 어떻게 해야 합니까? (0) | 2023.05.17 |
Azure VM 로드 밸런싱 대 Traffic Manager (0) | 2023.05.17 |
URLReferrer에서 쿼리 문자열 가져오기 (0) | 2023.05.17 |
대상...'Pods/Pods.xccconfig'에 정의된 'OTHER_LDFLAGS' 빌드 설정을 재정의합니다. (0) | 2023.05.17 |