موقع د. عزيز الجعيد
  • الرئـيـسـية

  • الأقسام

    • علم البيانات والذكاء الإصطناعي

    • ذكاء الأعمال

    • لغة البرمجة بايثون

    • مقالات متنوعـة

    • لغة البرمجة آر R

    • الإحــــــصــــــاء

    • البيانات المفتوحة

  • عـنــي

  • تواصل معي

علم البيانات والذكاء الاصطناعي

  • الرئـيـسـية

  • الأقسام

    • علم البيانات والذكاء الإصطناعي

    • ذكاء الأعمال

    • لغة البرمجة بايثون

    • مقالات متنوعـة

    • لغة البرمجة آر R

    • الإحــــــصــــــاء

    • البيانات المفتوحة

  • عـنــي

  • تواصل معي

استخراج خصائص البيانات باستخدام مكتبة Pandas في بايثون

17/04/2021 | لغة البرمجة بايثون | شارك بتعليقك

سوف نستعرض في هذا المقال بعض دوال مكتبة pandas التي يمكن استخدامها لاستخراج خصائص البيانات (feature engineering). لتوضيح ذلك سوف نستخدم البيانات  بيانات الأزمة الاقتصادية والمصرفية لأفريقيا [1]. في البداية سوف نقوم باستيراد البيانات كما يلي:

In:
import pandas as pd
african_crises = pd.read_csv("african_crises.csv")

بعد ذلك نستعرض عدد من النقاط  ذات العلاقة بالاستخراج خصائص البيانات ونوضح طريقة التعامل معها وهي كما يلي:

أولاُ: تحويل المتغيرات الأسمية (Nominal variables) الى متغيرات عددية (numeric variables)

لتحويل المتغيرات الأسمية الى متغيرات عددية يمكن استخدام الدالة:
df.replace(to_replace=None, value=None, inplace=False, ...)
والتي تقوم باستبدال القيم الحالية في إطار البيانات (df) بقيمة اخرى من خلال إنشاء متغير جديد عندما يكون inplace=False او استبدال القيمة في نفس موقعها عندما يكون inplace=True، وذلك كما في المثال التالي:

In:
african_crises['encoded_banking_crisis']  = african_crises['banking_crisis'].replace({'crisis':1,'no_crisis':0})
african_crises[['encoded_banking_crisis','banking_crisis']].head()
Out:
   encoded_banking_crisis banking_crisis
0                       1         crisis
1                       0      no_crisis
2                       0      no_crisis
3                       0      no_crisis
4                       0      no_crisis

ثانياً: تحويل المتغيرات الفئوية (categorical variables) إلى وهمية (dummy variables)

لتحويل المتغيرات الفئوية الى وهمية يمكن استخدام  الدالة:
pd.get_dummies(data, ...)
وذلك كما في الكود التالي:

In:
Dumm_banking_crisis = pd.get_dummies(african_crises['banking_crisis'])
Dumm_banking_crisis=pd.concat([african_crises['banking_crisis'], Dumm_banking_crisis], axis=1)
Dumm_banking_crisis.head()
Out:
  banking_crisis  crisis  no_crisis
0         crisis       1          0
1      no_crisis       0          1
2      no_crisis       0          1
3      no_crisis       0          1
4      no_crisis       0          1

ثالثاً: حساب عدد القيم الفريدة (unique values) لمتغير.

لحساب عدد القيم الفريدة يمكن استخدام الدالة:
Series.value_counts(normalize=False,ascending=False, dropna=True, ...)
والتي تعطي عدد القيم الفريدة في سلسلة (Series) بترتيب تنازلي بحيث يكون العنصر الأول هو العنصر الأكثر تكرارا، كذلك يتم استبعاد القيم المفقودة (NA) بشكل افتراضي. إذا كان normalize=True فإن مخرجات الدالة هي التكرارات النسبية للقيم الفريدة. ويمكن استخدام هذه الدالة كما يلي:

In:
country_freq = african_crises['country'].value_counts()
country_freq
Out:
Egypt                       155
South Africa                114
Zimbabwe                     90
Algeria                      85
Angola                       77
Tunisia                      75
Morocco                      75
Zambia                       72
Mauritius                    68
Kenya                        67
Ivory Coast                  63
Nigeria                      60
Central African Republic     58

رابعاً: تقسيم متغير الى فئات (Quantile-based discretization)

لتقسيم متغير الى فئات يمكن استخدام الدالة:
pd.qcut(x, q, labels=None, ...)
والتي تقوم بتقسيم المتغير x إلى فئات متساوية الحجم عددها q  ومسمياتها labels بناء على الرتبة أو بناء على تقسيمات العينة (sample quantiles) وذلك كما في المثال التالي:

In:
level = ['Very Low', 'Low', 'Med', 'High', 'Very High']
african_crises['inflation_annual_cpi_level'] = pd.qcut(african_crises['inflation_annual_cpi'], q=5, labels=level)
african_crises[['inflation_annual_cpi', 'inflation_annual_cpi_level']].head()
Out:
   inflation_annual_cpi inflation_annual_cpi_level
0              3.441456                        Low
1             14.149140                  Very High
2             -3.718593                   Very Low
3             11.203897                       High
4             -3.848561                   Very Low

كذلك يمكن استخدام الدالة:
pd.cut(x, bins, labels=None, ...)
والي تقوم بتقسيم متغير x الى فئات حدودها bins ومسمياتها labels كما في الكود التالي:

In:
level = ['Very Low', 'Low', 'Med', 'High', 'Very High']
bins = [-18, -1, 3 ,10 , 15, 30]
african_crises['inflation_annual_cpi_level'] = pd.cut(african_crises['inflation_annual_cpi'], bins=bins, labels=level)
african_crises[['inflation_annual_cpi', 'inflation_annual_cpi_level']].head()
Out:
  inflation_annual_cpi inflation_annual_cpi_level
0              3.441456                        Med
1             14.149140                       High
2             -3.718593                   Very Low
3             11.203897                       High
4             -3.848561                   Very Low

خامساً: تجميع البيانات (grouping data)

لتجميع البيانات يمكن استخدام الدالة:
df.groupby(by=None, ...)
والتي تقوم بتجميع البيانات (df) حسب متغير او مجموعة متغيرات، حيث يمكن اجراء العمليات الحسابية أو الإحصائية على هذه المجموعات. فمثلاً، لحساب المتوسط الحسابي لسعر الصرف مقابل الدولار الأمريكي في كل دولة يمكن استخدام الكود:

In:
african_crises.groupby(['country'])['exch_usd'].mean()
Out:
country
Algeria                      20.177565
Angola                       15.099671
Central African Republic    367.686066
Egypt                         1.006045
Ivory Coast                 153.320635
Kenya                        30.713180
Mauritius                    13.759661
Morocco                       5.865309
Nigeria                      38.951022
South Africa                  1.719339
Tunisia                      50.692807
Zambia                        1.116342
Zimbabwe                     20.207800

سادساً: العمليات الإحصائية (Statistical operations)

لاجراء عدد من العمليات الإحصائية على متغير او أكثر في إطار البيانات يمكن استخدام الدوال التالية:

الوصف الدالة
عدد القيم count
مجموع القيم sum
حاصل ضرب القيم prod
أصغر قيمة min
اكبر قيمة max
الانحراف المعياري std
المتوسط الحسابي mean
الوسيط الحسابي mediam

وذلك كما في المثال التالي:

In:
print("The max of exch_usd is: ",african_crises.exch_usd.max())
print("The min of exch_usd is: ",african_crises.exch_usd.min())
print("The count of exch_usd is: ",african_crises.exch_usd.count())
print("The sum of exch_usd is: ",african_crises.exch_usd.sum())
print("The mean of exch_usd is: ",african_crises.exch_usd.mean())
print("The median of exch_usd is: ",african_crises.exch_usd.median ())
Out:
The max of exch_usd is:  744.3061387
The min of exch_usd is:  0.0
The count of exch_usd is:  1059
The sum of exch_usd is:  45686.1396807569
The mean of exch_usd is:  43.14083067115856
The median of exch_usd is:  0.8684

[1] مصدر البيانات:  kaggle

جميع الحقوق الفكرية لهذا المقال محفوظة © موقع د. عزيز، يمنع إعادة نشره في موقع آخر

مقالات ذات صلة:

  • مقدمة في البايثون Python

    بايثون هي لغة برمجة متعددة الأغراض، تعمل على عدد من المنصات مثل ويندوز (Windows) و ماك (Mac OS X) و لينوكس (Linux).... مقدمة في البايثون Python
    اقرأ المزيد
  • قراءة ملفات البيانات في بايثون Python

    في هذا المقال سوف نستعرض كيف يمكن قراءة ملفات البيانات بأنواعها المختلفة باستخدام لغة البرمجة بايثون. في البداية نحتاج... قراءة ملفات البيانات في بايثون Python
    اقرأ المزيد
  • دوال القائمة (list) في بايثون Python

    تعتبر القائمة (list) احد انواع هياكل البيانات شائعة الاستخدام في في لغة البرمجة بايثون والتي يمكن أن تحوي انواع مختلفة... دوال القائمة (list) في بايثون Python
    اقرأ المزيد

شارك بتعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *


The reCAPTCHA verification period has expired. Please reload the page.

د. عزيز عوض الله الجعيد
دكتوراه في الإحصاء، عالم بيانات، مبرمج، مهتم في التحليل المتقدم، والبيانات الضخمة والذكاء الاصطناعي، لمزيد من المعلومات أضغط هنا

  • YouTube
جميع الحقوق محفوظة © موقع د. عزيز