15.4 التحليل الاستكشافي للبيانات
أهداف التعلم
في نهاية هذا القسم، ينبغي أن تكون قادرًا على:
- وصف التحليل الاستكشافي للبيانات.
- فحص إدخالات إطار البيانات من خلال الفهرسة المناسبة.
- استخدام التصفية والتقطيع للحصول على مجموعة فرعية من إطار البيانات.
- تحديد قيم
Nullفي إطار البيانات. - إزالة أو استبدال قيم
Nullفي إطار البيانات.
التحليل الاستكشافي للبيانات
التحليل الاستكشافي للبيانات (Exploratory Data Analysis) عملية تحليل البيانات لاكتساب رؤى، وتحديد الأنماط، وفهم البنية الأساسية للبيانات. خلال التحليل الاستكشافي للبيانات، يفحص علماء البيانات البيانات بصريًا وإحصائيًا للكشف عن العلاقات والشذوذات والاتجاهات، ولتوليد فرضيات لمزيد من التحليل. الهدف الرئيسي للتحليل الاستكشافي للبيانات هو التعرف على البيانات وتقييم جودتها. بمجرد فهم البيانات وتنظيفها، قد يُنشئ علماء البيانات السمات ويكوّنون الفرضيات. السِمة (feature) مُتغيِّر فردي أو سِمة تُحسب من البيانات الخام في مجموعة البيانات.
فهرسة البيانات يمكن استخدامها لتحديد صفوف وأعمدة معينة والوصول إليها. فهرسة البيانات ضرورية في فحص مجموعة البيانات. في Pandas، توجد طريقتان للفهرسة:
- الفهرسة المستندة إلى التسميات باستخدام
loc[]: loc[] تسمح لك بالوصول إلى البيانات في إطار البيانات باستخدام تسميات الصفوف/الأعمدة. مثال:df.loc[row_label, column_label]تُرجع بيانات محددة عند تقاطعrow_labelوcolumn_label. - الفهرسة المستندة إلى الأعداد الصحيحة باستخدام
iloc[]: iloc[] تسمح لك بالوصول إلى البيانات في إطار البيانات باستخدام فهارس مستندة إلى الأعداد الصحيحة. يمكن تمرير الفهارس الصحيحة لاسترداد بيانات محددة. مثال:df.iloc[row_index, column_index]تُرجع بيانات محددة عند الفهرسrow_indexوcolumn_index.
مفاهيم تطبيقية
فهرسة إطار البيانات
تأمل الشِفرة التالية، أجب عن الأسئلة أدناه.
import pandas as pd
# إنشاء بيانات نموذجية
data = {
"A": ["a", "b", "c", "d"],
"B": [12, 20, 5, -10],
"C": ["C", "C", "C", "C"]
}
df = pd.DataFrame(data)
تقطيع البيانات وتصفيتها
يتضمن تقطيع البيانات وتصفيتها تحديد مجموعات فرعية معينة من البيانات بناءً على شروط معينة أو نطاقات الفهرس/التسمية. تقطيع البيانات (Data slicing) يشير إلى تحديد مجموعة فرعية من الصفوف و/أو الأعمدة من إطار البيانات. يمكن إجراء التقطيع باستخدام النطاقات أو القوائم أو الشروط المنطقية.
- التقطيع باستخدام النطاقات: مثال:
df.loc[start_row:end_row, start_column:end_column]يحدد الصفوف والأعمدة ضمن النطاقات المحددة. - التقطيع باستخدام قائمة: مثال:
df.loc[[label1, label2, ...], :]يحدد الصفوف الموجودة في القائمة[label1, label2, ...]ويتضمن جميع الأعمدة نظرًا لأن جميع الأعمدة محددة بواسطة عامل النقطتين. - التقطيع بناءً على شرط:
df[condition]يحدد فقط الصفوف التي تستوفيconditionالمعطى.
تصفية البيانات (Data filtering) يتضمن تحديد الصفوف أو الأعمدة بناءً على شروط معينة. مثال: في التعبير df[df['column_name'] > threshold]، تُصفَّى إطار البيانات df باستخدام عامل التحديد ([]) والشرط (df['column_name'] > threshold) المُمرَّر. تُرجَع جميع الإدخالات في إطار البيانات df حيث تكون القيمة المقابلة في إطار البيانات هي True.
مفاهيم تطبيقية
تقطيع وتصفية إطار البيانات
تأمل الشِفرة التالية، أجب عن الأسئلة.
import pandas as pd
# إنشاء بيانات نموذجية
data = {
"A": [1, 2, 3, 4],
"B": [5, 6, 7, 8],
"C": [9, 10, 11, 12]
}
df = pd.DataFrame(data)
معالجة البيانات المفقودة
يمكن أن تحدث القيم المفقودة في مجموعة البيانات عندما لا تكون البيانات متاحة أو لم يتم تسجيلها بشكل صحيح. يُعد تحديد القيم المفقودة وإزالتها خطوة مهمة في تنظيف البيانات ومعالجتها المسبقة. يجب على عالم البيانات مراعاة الاعتبارات الأخلاقية طوال عملية التحليل الاستكشافي للبيانات، خاصة عند معالجة البيانات المفقودة. قد يفكرون في الإجابة على أسئلة مثل "لماذا البيانات مفقودة؟"، "بيانات مَن المفقودة؟"، و"بالنظر إلى البيانات المفقودة، هل لا تزال مجموعة البيانات عينة ممثلة للمجتمع قيد الدراسة؟". الدوال التالية مفيدة في فهم وتحليل البيانات المفقودة.
isnull(): يمكن استخدام دالّةisnull()لتحديد الإدخالاتNullفي إطار البيانات. القيمة المُرجَعة للدالّة هي إطار بيانات منطقي، بنفس أبعاد إطار البيانات الأصلي مع قيمTrueحيث توجد قيم مفقودة.dropna(): يمكن استخدام دالّةdropna()لإسقاط الصفوف التي تحتوي على قيمNull.fillna(): يمكن استخدام دالّةfillna()لاستبدال قيمNullبقيمة بديلة مقدمة. مثال:df.fillna(df.mean())يستبدل جميع قيمNullبمتوسط قيمة العمود المحدد.
لتعريف قيمة Null في إطار البيانات، يمكنك استخدام القيمة np.nan من مكتبة NumPy. الدوال التي تساعد في تحديد وإزالة الإدخالات الفارغة موصوفة في الجدول أسفل الشِفرة التالية.
import pandas as pd
import numpy as np
# إنشاء بيانات نموذجية
data = {
"Column 1": ["A", "B", "C", "D", "E"],
"Column 2": [np.NAN, 200, 500, 0, -10],
"Column 3": [True, True, False, np.NaN, np.NaN]
}
df = pd.DataFrame(data)
| العمود 1 | العمود 2 | العمود 3 | |
|---|---|---|---|
| 0 | A | NaN | True |
| 1 | B | 200.0 | True |
| 2 | C | 500.0 | False |
| 3 | D | 0.0 | NaN |
| 4 | E | -10.0 | NaN |
| الدالّة | مثال | الناتج | الشرح | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
isnull() |
df.isnull() |
|
دالّة |
||||||||||||||||||||||||
fillna() |
df["Column 2"] =\
df["Column 2"].fillna(df["Column 2"]
.mean()) |
|
تُستبدل قيم |
||||||||||||||||||||||||
dropna() |
# يُطبَّق بعد تنفيذ
# الصف السابق
df = df.dropna() |
|
تُحذف جميع الصفوف التي تحتوي على قيمة |
مفاهيم تطبيقية
معالجة القيم المفقودة
ممارسة البرمجة مع غوغل
استخدم مستند بيئة غوغل كولاب أدناه لممارسة التحليل الاستكشافي للبيانات على مجموعة بيانات معينة.