Pandas에서 DataFrame 행을 무작위로 섞는 방법

  1. Pandas에서 DataFrame 행을 섞는pandas.DataFrame.sample()방법
  2. Pandas DataFrame 행을 섞는numpy.random.permutation()
  3. sklearn.utils.shuffle()은 Pandas DataFrame 행을 섞습니다

Pandas Dataframe 객체의sample()메소드,NumPy 모듈의permutation()함수 및sklearn 패키지의shuffle()함수를 사용하여 Pandas의DataFrame 행을 무작위로 섞을 수 있습니다.

Pandas에서 DataFrame 행을 섞는pandas.DataFrame.sample()방법

pandas.DataFrame.sample()을 사용하여 임의의 항목 샘플을 반환 할 수 있습니다. DataFrame 객체의 축에서 axis 매개 변수의 기본값 인 행 단위로 요소를 샘플링해야하므로axis 매개 변수를 0으로 설정합니다.

frac 매개 변수는 반환해야하는 전체 인스턴스의 비율을 결정합니다. 셔플을하려면frac의 값을 1로 설정하십시오.

import pandas as pd

dates=['April-10', 'April-11', 'April-12', 'April-13']
fruits=['Apple', 'Papaya', 'Banana', 'Mango']
prices=[3, 1, 2, 4]

df = pd.DataFrame({'Date':dates ,
                   'Fruit':fruits ,
                   'Price': prices})
print(df)

df_shuffled=df.sample(frac=1).reset_index(drop=True)
print(df_shuffled)

산출:

       Date   Fruit  Price
0  April-10   Apple      3
1  April-11  Papaya      1
2  April-12  Banana      2
3  April-13   Mango      4
       Date   Fruit  Price
3  April-13   Mango      4
2  April-12  Banana      2
0  April-10   Apple      3
1  April-11  Papaya      1

Dataframe.shuttle 메소드는 위에 표시된 것처럼 Pandas DataFrame의 행을 섞습니다. DataFrame 행의 인덱스는 초기 인덱스와 동일하게 유지됩니다.

reset_index() 메소드를 추가하여 데이터 프레임 인덱스를 재설정 할 수 있습니다.

import pandas as pd

dates=['April-10', 'April-11', 'April-12', 'April-13']
fruits=['Apple', 'Papaya', 'Banana', 'Mango']
prices=[3, 1, 2, 4]

df = pd.DataFrame({'Date':dates ,
                   'Fruit':fruits ,
                   'Price': prices})
print(df)

df_shuffled=df.sample(frac=1).reset_index(drop=True)
print(df_shuffled)

산출:

       Date   Fruit  Price
0  April-10   Apple      3
1  April-11  Papaya      1
2  April-12  Banana      2
3  April-13   Mango      4
       Date   Fruit  Price
0  April-11  Papaya      1
1  April-13   Mango      4
2  April-10   Apple      3
3  April-12  Banana      2

여기서drop=True 옵션은index 열이 새 열로 추가되지 않도록합니다.

Pandas DataFrame 행을 섞는numpy.random.permutation()

numpy.random.permutation()을 사용하여 DataFrame의 인덱스를 섞을 수 있습니다. 셔플 된 인덱스가iloc()메소드를 사용하여 행을 선택하기 위해 사용될 때, 무작위로 셔플 된 행을 얻습니다.

import pandas as pd
import numpy as np

dates=['April-10', 'April-11', 'April-12', 'April-13']
fruits=['Apple', 'Papaya', 'Banana', 'Mango']
prices=[3, 1, 2, 4]

df = pd.DataFrame({'Date':dates ,
                   'Fruit':fruits ,
                   'Price': prices})

df_shuffled=df.iloc[np.random.permutation(df.index)].reset_index(drop=True)
print(df_shuffled

산출:

       Date   Fruit  Price
0  April-13   Mango      4
1  April-12  Banana      2
2  April-10   Apple      3
3  April-11  Papaya      1

동일한 코드를 실행하는 동안 다른 결과를 얻을 수 있습니다. np.random.permutation()함수는 매번 다른 수의 순열을 생성하기 때문입니다.

sklearn.utils.shuffle()은 Pandas DataFrame 행을 섞습니다

또한 sklearn.utils.shuffle()을 사용하여 Pandas DataFrame의 행을 섞을 수도 있습니다.

import pandas as pd
import numpy as np
import sklearn

dates=['April-10', 'April-11', 'April-12', 'April-13']
fruits=['Apple', 'Papaya', 'Banana', 'Mango']
prices=[3, 1, 2, 4]

df = pd.DataFrame({'Date':dates ,
                   'Fruit':fruits ,
                   'Price': prices})

df_shuffled=sklearn.utils.shuffle(df)
print(df_shuffled)

산출:

       Date   Fruit  Price
3  April-13   Mango      4
0  April-10   Apple      3
1  April-11  Papaya      1
2  April-12  Banana      2

sklearn 패키지가 설치되어 있지 않다면 스크립트를 사용하여 간단히 설치할 수 있습니다:

pip install -U scikit-learn

관련 문장 - Pandas Row

  • Pandas DataFrame의 행 수를 얻는 방법
  • Pandas의 열 값을 기반으로 데이터 프레임 행을 필터링하는 방법