टीएल; डीआर : 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)
अजगरबेंच मार्किंग