python - पंडों: श्रेणियों को संख्याओं में बदलें




pandas series (2)

यदि आप sklearn लाइब्रेरी का उपयोग कर रहे हैं तो आप sklearn का उपयोग कर सकते हैं। pd.Categorical तरह, इनपुट स्ट्रिंग्स को एन्कोडिंग से पहले वर्णानुक्रम में सॉर्ट किया जाता है।

from sklearn.preprocessing import LabelEncoder

LE = LabelEncoder()
df['code'] = LE.fit_transform(df['cc'])

print(df)

   cc  temp  code
0  US  37.0     2
1  CA  12.0     1
2  US  35.0     2
3  AU  20.0     0

मान लीजिए कि मेरा उन देशों के साथ डेटाफ़्रेम है जो इस प्रकार है:

cc | temp
US | 37.0
CA | 12.0
US | 35.0
AU | 20.0

मुझे पता है कि देशों को 'वन-हॉट एन्कोडिंग' में बदलने के लिए एक pd.get_dummies फ़ंक्शन है। हालाँकि, मैं उन्हें इंडेक्स में बदलने की इच्छा cc_index = [1,2,1,3] हूं ताकि मुझे इसके बजाय cc_index = [1,2,1,3] मिलेगा।

मैं मान रहा हूँ कि एक सुन्न के साथ get_dummies का उपयोग करने की तुलना में एक तेज़ तरीका है जहां क्लॉज को नीचे दिखाया गया है:

[np.where(x) for x in df.cc.get_dummies().values]

यह 'कारकों' का उपयोग करते हुए आर में करना कुछ आसान है, इसलिए मुझे उम्मीद है कि पांडा कुछ इसी तरह का होगा।


यदि आप केवल अपनी श्रृंखला को पूर्णांक पहचानकर्ताओं में बदलना चाहते हैं, तो आप pd.factorize उपयोग कर सकते हैं।

इस समाधान को नोट करें, pd.Categorical विपरीत, वर्णानुक्रम में सॉर्ट नहीं करेगा। इसलिए पहला देश 0 सौंपा जाएगा। यदि आप 1 से शुरू करना चाहते हैं, तो आप एक स्थिरांक जोड़ सकते हैं:

df['code'] = pd.factorize(df['cc'])[0] + 1

print(df)

   cc  temp  code
0  US  37.0     1
1  CA  12.0     2
2  US  35.0     1
3  AU  20.0     3

यदि आप वर्णानुक्रम में क्रमबद्ध करना चाहते हैं, तो छाँटें sort=True निर्दिष्ट करें:

df['code'] = pd.factorize(df['cc'], sort=True)[0] + 1 




categorical-data