TL; DR : np.random.shuffle(ndarray)
dapat melakukan pekerjaan itu.
Jadi, dalam kasus Anda
np.random.shuffle(DataFrame.values)
DataFrame
, di bawah tenda, menggunakan NumPy ndarray sebagai pemegang data. (Anda dapat memeriksa dari kode sumber DataFrame )
Jadi, jika Anda menggunakan np.random.shuffle()
, itu akan mengocok array sepanjang sumbu pertama dari array multi-dimensi. Namun indeks DataFrame
tetap tidak tergoyahkan.
Padahal, ada beberapa hal yang perlu dipertimbangkan.
- fungsi tidak mengembalikan apa pun. Jika Anda ingin menyimpan salinan objek asli, Anda harus melakukannya sebelum berpindah ke fungsi.
sklearn.utils.shuffle()
, seperti yang disarankan pengguna, dapat menunjuk random_state
bersama dengan opsi lain untuk mengontrol keluaran. Anda mungkin ingin itu untuk tujuan dev.
sklearn.utils.shuffle()
lebih cepat. Tapi AKAN SHUFFLE info sumbu (indeks, kolom) DataFrame
beserta ndarray
isinya.
Hasil benchmark
antara sklearn.utils.shuffle()
dan np.random.shuffle()
.
ndarray
nd = sklearn.utils.shuffle(nd)
0,10793248389381915 dtk. 8x lebih cepat
np.random.shuffle(nd)
0,8897626010002568 detik
DataFrame
df = sklearn.utils.shuffle(df)
0,3183923360193148 dtk. 3x lebih cepat
np.random.shuffle(df.values)
0,9357550159329548 dtk
Kesimpulan: Jika tidak apa-apa untuk info sumbu (indeks, kolom) untuk dikocok bersama dengan ndarray, gunakan sklearn.utils.shuffle()
. Kalau tidak, gunakannp.random.shuffle()
kode yang digunakan
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)
ular sancabenchmarking