TL; DR : np.random.shuffle(ndarray)
작업을 수행 할 수 있습니다.
따라서 귀하의 경우
np.random.shuffle(DataFrame.values)
DataFrame
후드 아래에서 NumPy ndarray를 데이터 홀더로 사용합니다. ( DataFrame 소스 코드 에서 확인할 수 있습니다 )
따라서를 사용하면 np.random.shuffle()
다차원 배열의 첫 번째 축을 따라 배열을 섞습니다. 그러나 DataFrame
유골의 색인 은 뒤섞이지 않았다.
그러나 고려해야 할 몇 가지 사항이 있습니다.
- 함수는 none을 반환합니다. 원래 객체의 사본을 유지하려면 함수에 전달하기 전에 수행해야합니다.
sklearn.utils.shuffle()
tj89 사용자가 제안한대로 random_state
출력을 제어하는 다른 옵션과 함께 지정할 수 있습니다 . 당신은 그것을 개발 목적으로 원할 수 있습니다.
sklearn.utils.shuffle()
가 더 빠르다. 그러나의 축 정보 (인덱스, 열) SHUFFLE 것 DataFrame
와 함께 ndarray
이 포함되어 있습니다.
벤치 마크 결과
사이 sklearn.utils.shuffle()
와 np.random.shuffle()
.
ndarray
nd = sklearn.utils.shuffle(nd)
0.10793248389381915 초 8 배 더 빠름
np.random.shuffle(nd)
0.8897626010002568 초
DataFrame
df = sklearn.utils.shuffle(df)
0.3183923360193148 초 3 배 더 빠름
np.random.shuffle(df.values)
0.9357550159329548 초
결론 : ndarray와 함께 섞여 축 정보 (색인, 열)에 괜찮다면을 사용하십시오 sklearn.utils.shuffle()
. 그렇지 않으면np.random.shuffle()
사용 된 코드
import timeit
setup = '''
import numpy as np
import pandas as pd
import sklearn
nd = np.random.random((1000, 100))
df = pd.DataFrame(nd)
'''
timeit.timeit('nd = sklearn.utils.shuffle(nd)', setup=setup, number=1000)
timeit.timeit('np.random.shuffle(nd)', setup=setup, number=1000)
timeit.timeit('df = sklearn.utils.shuffle(df)', setup=setup, number=1000)
timeit.timeit('np.random.shuffle(df.values)', setup=setup, number=1000)
파이썬벤치마킹