Πώς να καθαρίσετε δεδομένα σε pandas με τη συνάρτηση dropna()
Η συνάρτηση Python pandas DataFrame.dropna() χρησιμοποιείται για την αφαίρεση όλων των σειρών ή στηλών που περιέχουν ελλείπουσες τιμές (NaN) από ένα DataFrame. Αυτό την καθιστά ιδιαίτερα σημαντική για την προετοιμασία και τον καθαρισμό των δεδομένων.
Ποια είναι η σύνταξη για το pandas dropna();
Η συνάρτηση dropna() δέχεται έως και πέντε παραμέτρους. Ακολουθεί η σύνταξή της:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False, ignore_index=False)pythonΣημαντικές παράμετροι για dropna()
Μπορείτε να χρησιμοποιήσετε παραμέτρους για να επηρεάσετε τη συμπεριφορά της συνάρτησης pandas DataFrame.dropna(). Ακολουθεί μια επισκόπηση των πιο σημαντικών παραμέτρων:
| Παράμετρος | Περιγραφή | Προεπιλεγμένη τιμή |
|---|---|---|
axis
|
Καθορίζει αν θα αφαιρεθούν σειρές (0 ή index) ή στήλες (1 ή columns)
|
0 |
how
|
Καθορίζει αν όλες (all) ή μόνο μερικές (any) τιμές πρέπει να είναι NaN.
|
any
|
thresh
|
Καθορίζει τον ελάχιστο αριθμό τιμών που δεν είναι NaN που πρέπει να έχει μια σειρά ή στήλη για να μην αφαιρεθεί. Δεν μπορεί να συνδυαστεί με how.
|
προαιρετικό |
subset
|
Καθορίζει ποιες σειρές ή στήλες πρέπει να θεωρούνται | προαιρετικές |
inplace
|
Καθορίζει εάν η λειτουργία εκτελείται στο αρχικό DataFrame | False
|
ignore_index
|
Εάν True, ο υπόλοιπος άξονας επισημαίνεται από 0 έως n-1
|
False
|
Πώς να χρησιμοποιήσετε pandas DataFrame.dropna()
Το Pandas dropna() χρησιμοποιείται για τον καθαρισμό των δεδομένων πριν από την ανάλυσή τους. Η αφαίρεση σειρών ή στηλών με ελλείπουσες τιμές βοηθά στην αποφυγή μεροληψιών στις στατιστικές αξιολογήσεις. Δεδομένου ότι οι ελλείπουσες τιμές μπορούν επίσης να οδηγήσουν σε προβλήματα με την οπτικοποίηση των δεδομένων, η χρήση της λειτουργίας είναι επίσης επωφελής κατά τη δημιουργία γραφημάτων και αναφορών.
Αφαίρεση σειρών με ελλείπουσες τιμές
Στο παρακάτω παράδειγμα, θα εξετάσουμε ένα DataFrame που περιέχει τιμές NaN:
import pandas as pd
import numpy as np
# Creating a DataFrame with sample data
data = {
'A': [1, 2, np.nan, 4],
'B': [5, np.nan, np.nan, 8],
'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)
print(df)pythonΤο DataFrame έχει την εξής μορφή:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
2 NaN NaN 11
3 4.0 8.0 12Στη συνέχεια, θα εφαρμόσουμε τη συνάρτηση pandas dropna():
## Remove all rows that contain at least one NaN value
df_cleaned = df.dropna()
print(df_cleaned)pythonΗ εκτέλεση του παραπάνω κώδικα παράγει το ακόλουθο αποτέλεσμα:
A B C
0 1.0 5.0 9
3 4.0 8.0 12Δεδομένου ότι όλες οι άλλες σειρές περιέχουν τιμές NaN, παραμένουν μόνο η μηδενική και η τρίτη σειρά.
Αφαίρεση στηλών με ελλείπουσες τιμές
Ομοίως, μπορείτε να αφαιρέσετε στήλες με ελλείπουσες τιμές ρυθμίζοντας την παράμετρο axis σε 1:
## Remove all columns that contain at least one NaN value
df_cleaned_columns = df.dropna(axis=1)
print(df_cleaned_columns)pythonΗ στήλη C είναι η μόνη στήλη που παραμένει, καθώς είναι η μόνη που δεν περιέχει τιμές NaN:
C
0 9
1 10
2 11
3 12Χρήση thresh
Εάν θέλετε να καταργήσετε σειρές που περιέχουν λιγότερες από δύο τιμές που δεν είναι NaN, μπορείτε να χρησιμοποιήσετε την παράμετρο thresh:
## Only keeps rows that have 2 or more non-NaN values
df_thresh = df.dropna(thresh=2)
print(df_thresh)pythonΗ εκτέλεση του κώδικα παράγει το ακόλουθο αποτέλεσμα:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
3 4.0 8.0 12Η σειρά 1 δεν αφαιρείται από την έξοδο επειδή περιέχει 2 τιμές που δεν είναι NaN (2,0 και 10).
Χρήση subset
Η παράμετρος subset σας επιτρέπει να καθορίσετε τις στήλες στις οποίες το πρόγραμμα θα αναζητήσει τις ελλείπουσες τιμές. Μόνο οι σειρές που περιέχουν ελλείπουσες τιμές στις στήλες που έχουν καθοριστεί θα αφαιρεθούν.
## Removes all rows where column A contains a NaN value
df_subset = df.dropna(subset=['A'])
print(df_subset)pythonΕδώ, αφαιρείται μόνο η δεύτερη σειρά. Η τιμή NaN στην πρώτη σειρά αγνοείται λόγω της παραμέτρου υποσύνολου, η οποία λαμβάνει υπόψη μόνο τη στήλη Α:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
3 4.0 8.0 12