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_statecù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) DataFramecùng với thông tin trục ndarraychứ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