כיצד להשתמש ב-dropna() של Python pandas כדי להוריד ערכים NA ממסגרת נתונים

הקדמה

במדריך זה, תלמד כיצד להשתמש בפונקציית DataFrame dropna() של pandas.

ערכים NA הם "לא זמינים". זה יכול להתייחס ל־Null, None, pandas.NaT, או numpy.nan. בשימוש ב־dropna() תימחק שורות ועמודות עם ערכים אלה. זה עשוי להיות מועיל כדי לספק לך רק נתונים תקינים בלבד.

בדרך כלל, פונקציה זו מחזירה DataFrame חדש והDataFrame המקורי נשאר ללא שינוי.

המדריך הזה אומת עם Python 3.10.9, pandas 1.5.2, ו־NumPy 1.24.1.

תחביר

dropna() מקבלת את הפרמטרים הבאים:

dropna(self, axis=0, how="any", thresh=None, subset=None, inplace=False)
  • axis: {0 (או 'index'), 1 (או 'columns')}, ברירת מחדל 0
  • אם 0, להוריד שורות עם ערכים חסרים.
  • אם 1, להוריד עמודות עם ערכים חסרים.
  • how: {'any', 'all'}, ברירת מחדל 'any'
  • אם 'any', להוריד את השורה או העמודה אם לפחות אחד מהערכים הוא NA.
  • אם 'all', להוריד את השורה או העמודה אם כל הערכים הם NA.
  • thresh: (אופציונלי) ערך של int כדי לציין את הסף לפעולת ההורדה.
  • subset: (אופציונלי) תווית עמודה או רצף של תוויות כדי לציין שורות או עמודות.
  • inplace: (אופציונלי) ערך של bool.
  • אם True, ה-DataFrame מקורי משתנה ומוחזר None.

בניית DataFrame דוגמה

בנה DataFrame דוגמה שמכיל ערכים חוקיים ולא חוקיים:

dropnaExample.py
import pandas as pd
import numpy as np

d1 = {
'Name': ['Shark', 'Whale', 'Jellyfish', 'Starfish'],
'ID': [1, 2, 3, 4],
'Population': [100, 200, np.nan, pd.NaT],
'Regions': [1, None, pd.NaT, pd.NaT]
}

df1 = pd.DataFrame(d1)
print(df1)

קוד זה ידפיס את ה-DataFrame:

Output
Name ID Population Regions 0 Shark 1 100 1 1 Whale 2 200 None 2 Jellyfish 3 NaN NaT 3 Starfish 4 NaT NaT

אז הוסף DataFrame שני עם שורות ועמודות נוספות עם ערכים של NA:

d2 = {
'Name': ['Shark', 'Whale', 'Jellyfish', 'Starfish', pd.NaT],
'ID': [1, 2, 3, 4, pd.NaT],
'Population': [100, 200, np.nan, pd.NaT, pd.NaT],
'Regions': [1, None, pd.NaT, pd.NaT, pd.NaT],
'Endangered': [pd.NaT, pd.NaT, pd.NaT, pd.NaT, pd.NaT]
}

df2 = pd.DataFrame(d2)
print(df2)

זה ידפיס DataFrame חדש:

Output
Name ID Population Regions Endangered 0 Shark 1 100 1 NaT 1 Whale 2 200 None NaT 2 Jellyfish 3 NaN NaT NaT 3 Starfish 4 NaT NaT NaT 4 NaT NaT NaT NaT NaT

תשתמש ב-DataFrames הקודמים בדוגמאות שיבואו.

מחיקת כל השורות עם ערכים חסרים

השתמש ב־dropna() כדי להסיר שורות עם ערכי None, NaN או NaT:

dropnaExample.py
dfresult = df1.dropna()
print(dfresult)

זה ידפיס:

Output
Name ID Population Regions 0 Shark 1 100 1

A new DataFrame with a single row that didn’t contain any NA values.

שחרור כל העמודות עם ערכים חסרים

השתמש ב־dropna() עם axis=1 כדי להסיר עמודות עם ערכים של None, NaN או NaT:

dfresult = df1.dropna(axis=1)
print(dfresult)

העמודות עם ערכים של None, NaN או NaT יוסרו:

Output
Name ID 0 Shark 1 1 Whale 2 2 Jellyfish 3 3 Starfish 4

A new DataFrame with a single column that contained non-NA values.

שחרור שורות או עמודות אם כל הערכים הם Null עם how

השתמש בקובץ הנתונים השני ו־how:

dropnaExample.py
dfresult = df2.dropna(how='all')
print(dfresult)

השורות עם ערכים שכולם שווים ל־NA יוסרו:

Output
Name ID Population Regions Endangered 0 Shark 1 100 1 NaT 1 Whale 2 200 None NaT 2 Jellyfish 3 NaN NaT NaT 3 Starfish 4 NaT NaT NaT

השורה החמישית נמחקה.

לבסוף, השתמש ב־how וציין את ה־axis:

dropnaExample.py
dfresult = df2.dropna(how='all', axis=1)
print(dfresult)

העמודות שערכיהן שכולם שווים ל־NA יוסרו:

Output
Name ID Population Regions 0 Shark 1 100 1 1 Whale 2 200 None 2 Jellyfish 3 NaN NaT 3 Starfish 4 NaT NaT 4 NaT NaT NaT NaT

העמודה החמישית נמחקה.

שים או עמודות אם חסם חוצה עם thresh

השתמש במסגרת השנייה עם thresh כדי לשים שורות שלא עומדות בסף של לפחות 3 ערכים לא-NA:

dropnaExample.py
dfresult = df2.dropna(thresh=3)
print(dfresult)

השורות שאין להן לפחות 3 ערכים לא-NA יישום:

Output
Name ID Population Regions Endangered 0 Shark 1 100 1 NaT 1 Whale 2 200 None NaT

השורות השלישית, הרביעית והחמישית נשלפו.

שים או עמודות עבור subsets מסוימים

השתמש במסגרת השנייה עם subset כדי לשים שורות עם ערכים NA בעמודת Population:

dropnaExample.py
dfresult = df2.dropna(subset=['Population'])
print(dfresult)

השורות שיש להם ערכים NA בעמודת Population יישום:

Output
Name ID Population Regions Endangered 0 Shark 1 100 1 NaT 1 Whale 2 200 None NaT

השורות השלישית, הרביעית והחמישית נשלפו.

אפשר גם לציין את ערכי ה-index ב-subset כאשר משים עמודות מהמסגרת:

dropnaExample.py
dfresult = df2.dropna(subset=[1, 2], axis=1)
print(dfresult)

העמודות שמכילות ערכים NA בתת השורות 1 ו-2:

Output
Name ID 0 Shark 1 1 Whale 2 2 Jellyfish 3 3 Starfish 4 4 NaT NaT

העמודות השלישית, הרביעית והחמישית נשלפו.

שינוי DataFrame המקורי לאחר הסרת שורות או עמודות עם inplace

ברירת המחדל, dropna() לא משנה את DataFrame המקורי. אך במקרים מסוימים, ייתכן שתרצה לשמור זיכרון בעת העבודה עם DataFrame מקורי גדול על ידי שימוש ב־inplace.

dropnaExample.py
df1.dropna(inplace=True)
print(df1)

קוד זה אינו משתמש במשתנה dfresult.

זה יפליט:

Output
Name ID Population Regions 0 Shark 1 100 1

DataFrame המקורי שונה.

מסקנה

במאמר זה, השתמשת בפונקצית dropna() כדי להסיר שורות ועמודות עם ערכים של NA.

המשך ללמוד עם מדריכים נוספים ב־Python ו־pandas – מדריך למודול pandas של Python, הסרת שורות כפולות ב־pandas.

מקורות

Source:
https://www.digitalocean.com/community/tutorials/pandas-dropna-drop-null-na-values-from-dataframe