팬더 데이터 프레임을 무작위로 샘플링하려면 pandas.DataFrame.sample을 사용할 수 있습니다.팬더에서 샘플링
임의로 80 %의 행을 샘플링한다고 가정합니다. 선택되지 않은 행의 다른 20 %를 자동으로 얻으려면 어떻게합니까?
팬더 데이터 프레임을 무작위로 샘플링하려면 pandas.DataFrame.sample을 사용할 수 있습니다.팬더에서 샘플링
임의로 80 %의 행을 샘플링한다고 가정합니다. 선택되지 않은 행의 다른 20 %를 자동으로 얻으려면 어떻게합니까?
Lagerbaer가 설명한 것처럼 데이터 프레임에 고유 인덱스가있는 열을 추가하거나 데이터 프레임 전체를 무작위로 섞을 수 있습니다. 후자 들어,
df.reindex(np.random.permutation(df.index))
작동합니다. (np는 numpy를 의미)
>>> import pandas as pd, numpy as np
>>> df = pd.DataFrame({'a': [1,2,3,4,5,6,7,8,9,10], 'b': [11,12,13,14,15,16,17,18,19,20]})
>>> df
a b
0 1 11
1 2 12
2 3 13
3 4 14
4 5 15
5 6 16
6 7 17
7 8 18
8 9 19
9 10 20
# randomly sample 5 rows
>>> sample = df.sample(5)
>>> sample
a b
7 8 18
2 3 13
4 5 15
0 1 11
3 4 14
# list comprehension to get indices not in sample's indices
>>> idxs_not_in_sample = [idx for idx in df.index if idx not in sample.index]
>>> idxs_not_in_sample
[1, 5, 6, 8, 9]
# locate the rows at the indices in the original dataframe that aren't in the sample
>>> not_sample = df.loc[idxs_not_in_sample]
>>> not_sample
a b
1 2 12
5 6 16
6 7 17
8 9 19
9 10 20
대체품으로 샘플링 하시겠습니까? 대체하지 않고 샘플링하는 경우 : 데이터 프레임에 고유 인덱스가있는 열을 추가하기 만하면됩니다. 그런 다음 80 %에서 어떤 색인 번호를 선택했는지보고 나머지 20 %를 가져옵니다. – Lagerbaer
또는 전체 데이터 프레임을 셔플 *하는 방법, 즉 모든 행을 무작위로 추출한 다음 행을 80:20으로 분할하는 방법을 찾을 수 있습니다. – Lagerbaer
교체하지 않음 – wwl