TL; DR : np.random.shuffle(ndarray)
có thể thực hiện công việc.
Vì vậy, trong trường hợp của bạn
np.random.shuffle(DataFrame.values)
DataFrame
, dưới mui xe, sử dụng NumPy ndarray làm chủ dữ liệu. (Bạn có thể kiểm tra từ mã nguồn DataFrame )
Vì vậy, nếu bạn sử dụng np.random.shuffle()
, nó sẽ xáo trộn mảng dọc theo trục đầu tiên của mảng đa chiều. Nhưng chỉ số củaDataFrame
vẫn còn xáo trộn.
Mặc dù, có một số điểm để xem xét.
- Hàm trả về không. Trong trường hợp bạn muốn giữ một bản sao của đối tượng ban đầu, bạn phải làm như vậy trước khi bạn chuyển đến hàm.
sklearn.utils.shuffle()
, như người dùng tj89 đề xuất, có thể chỉ định random_state
cùng với một tùy chọn khác để kiểm soát đầu ra. Bạn có thể muốn điều đó cho mục đích dev.
sklearn.utils.shuffle()
nhanh hơn. Nhưng S SH CHIA SẺ thông tin trục (chỉ mục, cột) DataFrame
cùng với thông tin trục ndarray
chứa.
Kết quả điểm chuẩn
giữa sklearn.utils.shuffle()
vànp.random.shuffle()
.
ndarray
nd = sklearn.utils.shuffle(nd)
0.10793248389381915 giây. Nhanh hơn gấp 8 lần
np.random.shuffle(nd)
0.8897626010002568 giây
Khung dữ liệu
df = sklearn.utils.shuffle(df)
0,3183923360193148 giây. Nhanh hơn gấp 3 lần
np.random.shuffle(df.values)
0,9357550159329548 giây
Kết luận: Nếu thông tin trục (chỉ mục, cột) được xáo trộn cùng với ndarray, hãy sử dụng sklearn.utils.shuffle()
. Nếu không, sử dụngnp.random.shuffle()
mã đã sử dụng
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)
trănđiểm chuẩn