Data Wrangling

استبدال قيم NaN بصفر بكفاءة في جداول بيانات Pandas

Spread the love

تُعَدُّ البيانات المفقودة، التي غالباً ما تُمثَّل بقيم NaN (ليس رقمًا)، مشكلةً شائعةً في تحليل البيانات. توفر مكتبة Pandas، وهي مكتبة Python قوية لمعالجة البيانات، طرقًا فعالةً للتعامل مع هذه القيم المفقودة. تُوضِّح هذه المقالة كيفية استبدال جميع قيم NaN داخل عمود محدد أو إطار بيانات Pandas بأكمله بأصفار، مع التركيز على أكثر الأساليب فعالية.

جدول المحتويات

طريقة fillna() لاستبدال NaN المحدد

تُعدُّ طريقة fillna() النهج المُوصى به لاستبدال قيم NaN بأصفار في أعمدة محددة. إنها فعالة وتُعالج البيانات المفقودة مباشرةً.

لنتوضّح ذلك باستخدام إطار بيانات نموذجي:


import pandas as pd
import numpy as np

data = {'A': [1, 2, np.nan, 4, 5], 
        'B': [6, np.nan, 8, 9, 10],
        'C': [11, 12, 13, 14, 15]}
df = pd.DataFrame(data)
print("إطار البيانات الأصلي:n", df)

ينتج هذا:


إطار البيانات الأصلي:
     A     B   C
0  1.0   6.0  11
1  2.0   NaN  12
2  NaN   8.0  13
3  4.0   9.0  14
4  5.0  10.0  15

لاستبدال قيم NaN في العمود ‘A’ بأصفار:


df['A'] = df['A'].fillna(0)
print("nإطار البيانات بعد تعبئة NaN في العمود 'A' بصفر:n", df)

مما ينتج عنه:


إطار البيانات بعد تعبئة NaN في العمود 'A' بصفر:
     A     B   C
0  1.0   6.0  11
1  2.0   NaN  12
2  0.0   8.0  13
3  4.0   9.0  14
4  5.0  10.0  15

يُعدُّ استبدال قيم NaN في أعمدة متعددة أمرًا بسيطًا بنفس القدر:


df[['A', 'B']] = df[['A', 'B']].fillna(0)
print("nإطار البيانات بعد تعبئة NaN في العمودين 'A' و 'B' بصفر:n", df)

طريقة replace() لاستبدال القيم العامة

توفر طريقة replace() نهجًا أكثر عمومية، وهو مناسب لاستبدال قيم متنوعة، بما في ذلك NaN. ومع ذلك، لاستبدال NaN بأصفار فقط، تُفضَّل طريقة fillna() بشكل عام لكفاءتها ووضوحها.

لاستبدال جميع قيم NaN في إطار البيانات بصفر باستخدام replace():


df = df.replace(np.nan, 0)
print("nإطار البيانات بعد استبدال جميع NaN بصفر باستخدام replace():n", df)

يُستبدل هذا جميع قيم NaN في إطار البيانات. تُبرز طريقة replace() عند التعامل مع سيناريوهات أكثر تعقيدًا، مثل استبدال قيم متعددة في وقت واحد:


df = df.replace({np.nan: 0, -999: 0})  # مثال؛ على افتراض وجود -999 في إطار البيانات
print("nإطار البيانات بعد استبدال NaN و -999 بصفر:n", df)

باختصار، بينما تحقق كلتا الطريقتين الهدف، إلا أن طريقة fillna() أكثر كفاءة وقابلية للقراءة لاستبدال NaN المحدد داخل أعمدة محددة، بينما توفر طريقة replace() مرونة أكبر لاستبدال قيم أوسع نطاقًا. اختر الطريقة الأنسب لمهمة معالجة البيانات الخاصة بك.

اترك تعليقاً

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