English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
مثال على عمليات البيانات التصنيفية في Pandas
عادةً ما تحتوي البيانات على نصوص مكررة في الوقت الحقيقي في العمود النصي. الأنواع مثل الجنس، والمدينة/المنطقة والكود وما إلى ذلك تكون دائمًا مكررة. هذه هي أمثلة للبيانات التصنيفية.
يمكن للمتغيرات التصنيفية أن تأخذ فقط قيم محددة ومعدة عادة. بالإضافة إلى الطول الثابت، يمكن أن يكون البيانات التصنيفية لها ترتيب، لكنها لا يمكن تنفيذ العمليات الرياضية. التصنيف هو نوع بيانات Pandas.
يكون نوع البيانات التصنيفي مفيدًا في الحالات التالية
متغير نصي يحتوي على قيم مختلفة قليلة. تحويل هذا النوع من المتغيرات النصية إلى متغيرات تصنيفية يمكن أن يوفر بعض الذاكرة. ترتيب الكلمات للمتغيرات المختلفة (مثل 'واحد، اثنان، ثلاثة') مختلف عن الترتيب المنطقي. من خلال تحويلها إلى فئات وتحديد الترتيب في الفئة، سيتم استخدام الترتيب المنطقي بدلاً من الترتيب اللغوي للترتيب والأصغر والأكبر. كمؤشر لغير البشر، يجب اعتبار هذا العمود متغير تصنيفي (مثل استخدام طرق إحصائية مناسبة أو أنواع الرسم البياني).
يمكن إنشاء كائن تصنيف بطرق متعددة. يُوضح أدناه طرق مختلفة:
بإعداد dtype كـ "category" عند إنشاء كائن Pandas.
import pandas as pd s = pd.Series(["a","b","c","a"], dtype="category") print(s)
النتائج التالية:
0 a 1 b 2 c 3 a dtype: category Categories (3، object): [a، b، c]
عدد العناصر المقدمة للسلسلة هي 4، ولكن الفئة هي 3. استطعنا ملاحظة نفس الشئ في مخرجات الفئة.
باستخدام بناء التصنيف القياسي في Pandas، يمكننا إنشاء كائن تصنيف.
pandas.Categorical(values، categories، ordered)
نرى مثالاً هنا-
import pandas as pd cat = pd.Categorical(['a', 'b', 'c', 'a', 'b', 'c']) print(cat)
النتائج التالية:
[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)
النتائج التالية:
[a، b، c، a، b، c، NaN] فئات (3، نوعية): [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)
النتائج التالية:
[a، b، c، a، b، c، NaN] فئات (3، نوعية): [c < b < a]
من الناحية المنطقية، هذا الترتيب يعني أن a أكبر من b وأن b أكبر من c.
استخدام الأمر .describe() لبيانات التصنيف، نحصل على مخرجات مشابهة إلى سلسلة أو مصفوفة بيانات النوعية.
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())
النتائج التالية:
cat s count 3 3 unique 2 2 top c c freq 2 2 count 3 unique 2 top c freq 2 الاسم: cat, dtype: object
استخدام الأمر obj.cat.categories للحصول على فئات العنصر.
import pandas as pd import numpy as np s = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"]) print(s.categories)
النتائج التالية:
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)
النتائج التالية:
False
يعود هذا الدالة إلى false لأننا لم نحدد أي ترتيب.
تم تغيير اسم الفئة من خلال تخصيص قيمة جديدة لخصائص series.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)
النتائج التالية:
Index([u'Group a', u'Group b', u'Group c'], dtype='object')
تم تحديث الفئات الاصلية [a،b،c] من خاصية s.cat.categories.
يمكن استخدام طريقة Categorical.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)
النتائج التالية:
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(("الجسم الأصلي:")) print(s) print(("بعد الإزالة:")) print(s.cat.remove_categories("a"))
النتائج التالية:
الجسم الأصلي: 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]
يمكن مقارنة بيانات التصنيف مع الأشياء الأخرى في ثلاثة حالات:
قارن المتساوي (==و!=) مع العناصر التي لها نفس طول التصنيفات مثل بيانات التصنيف (قائمة، سلسلة، مصفوفة،...) عندما يكون الترتيب== True وأن التصنيفات متطابقة، يقارن بيانات التصنيف بجميع التصنيفات في سلسلة أخرى (==،!=،>،> =،
<و<=)。< div>
انظر إلى المثال التالي: النتائج التالية: 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)
0 False
1 False
2 True
dtype: bool