टीएल; डीआर : np.random.shuffle(ndarray)काम कर सकते हैं।
तो, आपके मामले में
np.random.shuffle(DataFrame.values)
DataFrame, हुड के तहत, डेटा धारक के रूप में NumPy ndarray का उपयोग करता है। (आप DataFrame स्रोत कोड से जांच कर सकते हैं )
इसलिए यदि आप उपयोग करते हैं np.random.shuffle(), तो यह एक बहुआयामी सरणी के पहले अक्ष के साथ सरणी को बदल देगा। लेकिन DataFrameअवशेषों के सूचकांक में कोई कमी नहीं है।
हालांकि, विचार करने के लिए कुछ बिंदु हैं।
- फ़ंक्शन कोई भी नहीं देता है। मामले में आप मूल वस्तु की एक प्रति रखना चाहते हैं, तो आपको ऐसा करना होगा ताकि आप फ़ंक्शन को पास कर सकें।
sklearn.utils.shuffle(), जैसा कि उपयोगकर्ता tj89 ने सुझाव दिया है, random_stateआउटपुट को नियंत्रित करने के लिए एक अन्य विकल्प के साथ नामित कर सकता है । आप चाहते हैं कि देव उद्देश्य के लिए।
sklearn.utils.shuffle()ज्यादा तेज़ है। लेकिन की धुरी की जानकारी (सूचकांक, स्तंभ) फेरबदल होगा DataFrameके साथ-साथ ndarrayयह होता है।
बेंचमार्क परिणाम
के बीच sklearn.utils.shuffle()और np.random.shuffle()।
ndarray
nd = sklearn.utils.shuffle(nd)
0.10793248389381915 सेकंड। 8 गुना तेज
np.random.shuffle(nd)
0.8897626010002568 सेकंड
डेटा ढांचा
df = sklearn.utils.shuffle(df)
0.3183923360193148 सेकेंड। 3x तेज
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)
अजगरबेंच मार्किंग