TL; DR : np.random.shuffle(ndarray)
işi yapabilir.
Yani, senin durumunda
np.random.shuffle(DataFrame.values)
DataFrame
, kaputun altında, veri tutucu olarak NumPy ndarray kullanır. ( DataFrame kaynak kodundan kontrol edebilirsiniz )
Yani, kullanırsanız np.random.shuffle()
, diziyi çok boyutlu bir dizinin ilk ekseni boyunca karıştırır. Ancak DataFrame
kalıntıların endeksi karışık.
Yine de dikkate alınması gereken bazı noktalar vardır.
- işlevi hiçbiri döndürmez. Orijinal nesnenin bir kopyasını saklamak istediğinizde, işleve geçmeden önce bunu yapmanız gerekir.
sklearn.utils.shuffle()
, kullanıcı tj89'un önerdiği gibi, random_state
çıkışı kontrol etmek için başka bir seçenekle birlikte atayabilir . Bunu geliştirme amacıyla isteyebilirsiniz.
sklearn.utils.shuffle()
daha hızlı. Ancak içerdiği eksen bilgisini (indeks, sütun) DataFrame
birlikte ndarray
ÇIKARACAKTIR.
Karşılaştırma sonucu
arasında sklearn.utils.shuffle()
ve np.random.shuffle()
.
ndarray
nd = sklearn.utils.shuffle(nd)
0.10793248389381915 sn. 8 kat daha hızlı
np.random.shuffle(nd)
0.8897626010002568 saniye
Veri çerçevesi
df = sklearn.utils.shuffle(df)
0.3183923360193148 sn. 3 kat daha hızlı
np.random.shuffle(df.values)
0.9357550159329548 saniye
Sonuç: ndarray ile karıştırılması gereken eksen bilgisinin (indeks, sütun) uygun olması durumunda, kullanın sklearn.utils.shuffle()
. Aksi takdirde,np.random.shuffle()
kullanılan kod
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)
pitonkıyaslama