يُعد التعامل مع البيانات المفقودة، الممثلة بقيم NaN (ليس رقمًا)، خطوةً بالغة الأهمية في أي تدفق عمل لتحليل البيانات. توفر مكتبة Pandas، وهي مكتبة Python قوية لمعالجة البيانات، طرقًا فعالة لاكتشاف ومعالجة قيم NaN ضمن DataFrames. ستستعرض هذه المقالة نهجين رئيسيين: isnull()
و isna()
، مع توضيح استخدامهما بأمثلة عملية.
جدول المحتويات
- طريقة
pandas.DataFrame.isnull()
- طريقة
pandas.DataFrame.isna()
- الكشف عن قيم NaN في أعمدة محددة
- معالجة قيم NaN
طريقة pandas.DataFrame.isnull()
تُعد طريقة isnull()
أداة أساسية لتحديد قيم NaN. تعمل على Pandas DataFrame، مُعيدًا DataFrame من نوع Boolean بنفس الشكل. تشير قيمة True
إلى وجود قيمة NaN، بينما تشير False
إلى قيمة صالحة.
import pandas as pd
import numpy as np
# DataFrame نموذجي
data = {'A': [1, 2, np.nan, 4],
'B': [5, np.nan, 7, 8],
'C': [9, 10, 11, 12]}
df = pd.DataFrame(data)
# الكشف عن قيم NaN
isnull_df = df.isnull()
print(isnull_df)
سوف يُخرج هذا DataFrame من نوع Boolean يبرز مواقع قيم NaN.
للتحقق من وجود أي قيمة NaN ضمن DataFrame بأكمله، اجمع isnull()
مع طريقة any()
:
has_nan = df.isnull().any().any()
print(f"هل يحتوي DataFrame على أي قيم NaN؟ {has_nan}")
طريقة pandas.DataFrame.isna()
طريقة isna()
متطابقة وظيفيًا مع isnull()
. تخدم نفس الغرض – تحديد قيم NaN وإرجاع DataFrame من نوع Boolean. يعتمد الاختيار بين الاثنين إلى حد كبير على التفضيل الشخصي؛ يجد الكثيرون أن isna()
أكثر قابلية للقراءة.
isna_df = df.isna()
print(isna_df)
الكشف عن قيم NaN في أعمدة محددة
في كثير من الأحيان، ستحتاج إلى التحقق من قيم NaN فقط ضمن أعمدة معينة. يمكن تحقيق ذلك بتطبيق طريقة isnull()
أو isna()
على عمود محدد:
has_nan_in_column_A = df['A'].isna().any()
print(f"هل يحتوي العمود 'A' على أي قيم NaN؟ {has_nan_in_column_A}")
معالجة قيم NaN
بمجرد الكشف عن قيم NaN، يمكن استخدام استراتيجيات متنوعة للتعامل معها. تشمل النهج الشائعة:
- الإزالة: حذف الصفوف أو الأعمدة التي تحتوي على قيم NaN باستخدام
dropna()
. - الاستبدال: استبدال قيم NaN بقيم مُقدرة (مثل المتوسط أو الوسيط أو ثابت) باستخدام
fillna()
.
يعتمد أفضل نهج على طبيعة بياناتك وأهداف التحليل.
باختصار، كل من isnull()
و isna()
أداتان قيّمتان لاكتشاف وإدارة البيانات المفقودة بشكل فعال في Pandas DataFrames. يضمن الجمع بين هاتين الطريقتين مع تقنيات تنظيف البيانات جودة البيانات ودقتها في تحليلاتك.