पायथन पंडों - श्रेणीबद्ध डेटा
अक्सर वास्तविक समय में, डेटा में पाठ कॉलम शामिल होते हैं, जो दोहराए जाते हैं। लिंग, देश और कोड जैसी विशेषताएं हमेशा दोहराई जाती हैं। ये श्रेणीबद्ध डेटा के लिए उदाहरण हैं।
श्रेणीबद्ध चर केवल सीमित और संभावित मूल्यों की निश्चित संख्या पर ले सकते हैं। निश्चित लंबाई के अलावा, श्रेणीबद्ध डेटा में एक आदेश हो सकता है लेकिन संख्यात्मक ऑपरेशन नहीं कर सकता है। श्रेणीबद्ध एक पंडों के डेटा प्रकार हैं।
निम्न मामलों में श्रेणीबद्ध डेटा प्रकार उपयोगी है -
एक स्ट्रिंग चर जिसमें केवल कुछ अलग मूल्य होते हैं। ऐसे स्ट्रिंग चर को एक श्रेणीगत चर में बदलने से कुछ मेमोरी बच जाएगी।
एक चर का शाब्दिक क्रम तार्किक क्रम ("एक", "दो", "तीन") के समान नहीं है। श्रेणियों में एक क्रमिक और एक आदेश में परिवर्तित करके, छँटाई और न्यूनतम / अधिकतम शाब्दिक क्रम के बजाय तार्किक क्रम का उपयोग करेंगे।
अन्य अजगर पुस्तकालयों के लिए एक संकेत के रूप में कि इस कॉलम को एक श्रेणीबद्ध चर के रूप में माना जाना चाहिए (जैसे उपयुक्त सांख्यिकीय विधियों या प्लॉट प्रकारों का उपयोग करने के लिए)।
वस्तु निर्माण
श्रेणीबद्ध वस्तु को कई तरीकों से बनाया जा सकता है। नीचे विभिन्न तरीकों का वर्णन किया गया है -
वर्ग
पंडों वस्तु निर्माण में dtype को "श्रेणी" के रूप में निर्दिष्ट करके।
import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")
print s
आईटी इस output इस प्रकार है -
0 a
1 b
2 c
3 a
dtype: category
Categories (3, object): [a, b, c]
श्रृंखला ऑब्जेक्ट में पारित तत्वों की संख्या चार है, लेकिन श्रेणियां केवल तीन हैं। आउटपुट श्रेणियों में समान देखें।
pd.Categorical
मानक पांडा श्रेणीबद्ध कंस्ट्रक्टर का उपयोग करके, हम एक श्रेणी ऑब्जेक्ट बना सकते हैं।
pandas.Categorical(values, categories, ordered)
आइए एक उदाहरण लेते हैं -
import pandas as pd
cat = pd.Categorical(['a', 'b', 'c', 'a', 'b', 'c'])
print cat
आईटी इस output इस प्रकार है -
[a, b, c, a, b, c]
Categories (3, object): [a, b, c]
चलो एक और उदाहरण है -
import pandas as pd
cat = cat=pd.Categorical(['a','b','c','a','b','c','d'], ['c', 'b', 'a'])
print cat
आईटी इस output इस प्रकार है -
[a, b, c, a, b, c, NaN]
Categories (3, object): [c, b, a]
यहाँ, दूसरा तर्क श्रेणियों को दर्शाता है। इस प्रकार, कोई भी मूल्य जो श्रेणियों में मौजूद नहीं है उन्हें माना जाएगाNaN।
अब, निम्नलिखित उदाहरण पर एक नज़र डालें -
import pandas as pd
cat = cat=pd.Categorical(['a','b','c','a','b','c','d'], ['c', 'b', 'a'],ordered=True)
print cat
आईटी इस output इस प्रकार है -
[a, b, c, a, b, c, NaN]
Categories (3, object): [c < b < a]
तार्किक रूप से, आदेश का मतलब है कि, a से अधिक है b तथा b से अधिक है c।
विवरण
का उपयोग करते हुए .describe() श्रेणीबद्ध डेटा पर कमांड, हमें समान आउटपुट मिलता है a Series या DataFrame का type स्ट्रिंग।
import pandas as pd
import numpy as np
cat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
df = pd.DataFrame({"cat":cat, "s":["a", "c", "c", np.nan]})
print df.describe()
print df["cat"].describe()
आईटी इस output इस प्रकार है -
cat s
count 3 3
unique 2 2
top c c
freq 2 2
count 3
unique 2
top c
freq 2
Name: cat, dtype: object
श्रेणी के गुण प्राप्त करें
obj.cat.categories कमांड का उपयोग करने के लिए किया जाता है categories of the object।
import pandas as pd
import numpy as np
s = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
print s.categories
आईटी इस output इस प्रकार है -
Index([u'b', u'a', u'c'], dtype='object')
obj.ordered वस्तु का क्रम प्राप्त करने के लिए कमांड का उपयोग किया जाता है।
import pandas as pd
import numpy as np
cat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
print cat.ordered
आईटी इस output इस प्रकार है -
False
समारोह लौट आया false क्योंकि हमने कोई आदेश निर्दिष्ट नहीं किया है।
श्रेणियों का नाम बदल रहा है
के लिए नए मान निर्दिष्ट करके श्रेणियों का नाम बदला जा रहा है series.cat.categoriesSeries.cat.categories संपत्ति।
import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")
s.cat.categories = ["Group %s" % g for g in s.cat.categories]
print s.cat.categories
आईटी इस output इस प्रकार है -
Index([u'Group a', u'Group b', u'Group c'], dtype='object')
प्रारंभिक श्रेणियां [a,b,c] द्वारा अद्यतन किया जाता है s.cat.categories वस्तु की संपत्ति।
नई श्रेणियाँ लागू करना
Gradorical.add.categories () पद्धति का उपयोग करके, नई श्रेणियों को जोड़ा जा सकता है।
import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")
s = s.cat.add_categories([4])
print s.cat.categories
आईटी इस output इस प्रकार है -
Index([u'a', u'b', u'c', 4], dtype='object')
श्रेणियाँ हटाना
का उपयोग करते हुए Categorical.remove_categories() विधि, अवांछित श्रेणियों को हटाया जा सकता है।
import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")
print ("Original object:")
print s
print ("After removal:")
print s.cat.remove_categories("a")
आईटी इस output इस प्रकार है -
Original object:
0 a
1 b
2 c
3 a
dtype: category
Categories (3, object): [a, b, c]
After removal:
0 NaN
1 b
2 c
3 NaN
dtype: category
Categories (2, object): [b, c]
श्रेणीबद्ध डेटा की तुलना
अन्य मामलों के साथ स्पष्ट डेटा की तुलना तीन मामलों में संभव है -
श्रेणीबद्ध डेटा के समान लंबाई की समान सूची (ऑब्जेक्ट, सूची, श्रृंखला, सरणी, ...) की समानता (== और! =) की तुलना करना।
किसी अन्य श्रेणीबद्ध श्रृंखला के लिए श्रेणीबद्ध डेटा के सभी तुलना (==; =!,>,> =, <, और <=), जब == सही है और श्रेणियां समान हैं।
एक स्केलर को एक श्रेणीबद्ध डेटा के सभी तुलना।
निम्नलिखित उदाहरण पर एक नज़र डालें -
import pandas as pd
cat = pd.Series([1,2,3]).astype("category", categories=[1,2,3], ordered=True)
cat1 = pd.Series([2,2,2]).astype("category", categories=[1,2,3], ordered=True)
print cat>cat1
आईटी इस output इस प्रकार है -
0 False
1 False
2 True
dtype: bool