7 τρόποι για να βελτιώσετε τις δεξιότητες καθαρισμού δεδομένων σας με την Python
Βελτιώστε τον καθαρισμό των δεδομένων Python διορθώνοντας μη έγκυρες καταχωρίσεις, μετατρέποντας τύπους, κωδικοποιώντας μεταβλητές, χειρισμό ακραίων τιμών, επιλέγοντας χαρακτηριστικά, κλιμακώνοντας και συμπληρώνοντας τιμές που λείπουν.
Εικόνα από συγγραφέα
Ο καθαρισμός των δεδομένων είναι ένα από τα πιο σημαντικά και χρονοβόρα μέρη οποιουδήποτε έργου επιστήμης δεδομένων.
Με τον καλύτερο αλγόριθμο, χρειάζεστε ακόμα καθαρά δεδομένα για να έχετε καλά αποτελέσματα.
Σε αυτό το άρθρο, θα σας δώσω επτά κόλπα για να βελτιώσετε το παιχνίδι καθαρισμού δεδομένων στην Python.
1. Χειρισμός μη έγκυρων καταχωρίσεων δεδομένων
Τα σύνολα δεδομένων της πραγματικής ζωής συχνά περιέχουν μη έγκυρες καταχωρίσεις δεδομένων. Για να αποφευχθεί η διαφθορά ή οι μη αναμενόμενες τιμές, αυτές θα πρέπει να διορθωθούν πριν από οποιαδήποτε ανάλυση.
Πρόβλεψη τιμής
Θα χρησιμοποιήσουμε αυτό το έργο με τους ακόλουθους πέντε τρόπους. Η Haensel AMS χρησιμοποίησε αυτό το έργο δεδομένων στη διαδικασία πρόσληψης για τη θέση του επιστήμονα δεδομένων. Εδώ είναι ο σύνδεσμος για αυτό το έργο.
Εφαρμογή
Στο σύνολο δεδομένων μας, το loc1 στήλη περιέχει μη αναμενόμενες τιμές συμβολοσειράς όπως 'S' και 'T', τα οποία δεν θα πρέπει να υπάρχουν εάν Το loc1 αναμένεται να είναι αριθμητικό.
# Check for invalid entries in 'loc1'
df["loc1"].value_counts()
Ακολουθεί η έξοδος.
Τώρα, ας καταργήσουμε τις σειρές που περιλαμβάνουν μη έγκυρες τιμές.
# Remove rows with invalid 'loc1' values
df = df[(df["loc1"].str.contains("S") == False) & (df["loc1"].str.contains("T") == False)]
df.shape
Ακολουθεί η έξοδος.
Ας αξιολογήσουμε την έξοδο.
- Πριν από τον καθαρισμό: Το value_counts() η έξοδος δείχνει ότι 'S' και 'T' εμφανίζονται μία φορά το καθένα σε στυλ loc1.
- Μετά τον καθαρισμό: Η κατάργηση αυτών των καταχωρήσεων μειώνει το μέγεθος δεδομένων από 10.000 σε 9.998 σειρές.
- Αντίκτυπος: Η εξάλειψη των μη έγκυρων καταχωρήσεων διασφαλίζει ότι τα λανθασμένα δεδομένα δεν παραμορφώνουν τις επόμενες αναλύσεις και μοντέλα.
2. Κατάλληλη μετατροπή τύπων δεδομένων
Οι τύποι δεδομένων που χρησιμοποιούνται πρέπει να είναι σωστοί, ώστε να μπορείτε στη συνέχεια να διεξάγετε συγκεκριμένες λειτουργίες. Η μετατροπή δεδομένων στον κατάλληλο τύπο παρέχει έναν τρόπο διασφάλισης σωστών υπολογισμών και αποτροπής σφαλμάτων.
Εφαρμογή
Το loc1 και loc2 είναι αρχικά τύπου αντικείμενο, πιθανόν λόγω μηδενικών ή μη αριθμητικών χαρακτήρων. Πρέπει να μετατραπούν σε αριθμητικούς τύπους για ανάλυση.
Εδώ είναι ο κωδικός.
df["loc2"] = pd.to_numeric(df["loc2"], errors='coerce')
df["loc1"] = pd.to_numeric(df["loc1"], errors='coerce')
df.dropna(inplace = True)
df.shape
Ακολουθεί η έξοδος.
Ας αξιολογήσουμε τι κάναμε εδώ.
- Μετά τη μετατροπή: Μετατρέπονται σε float64 ή int64 τύπους.
- Απώλεια δεδομένων: Το μέγεθος του συνόλου δεδομένων μειώνεται ελαφρώς (από 9.998 σε 9.993 σειρές) λόγω της απόρριψης σειρών με μη μετατρέψιμες τιμές.
- Impact: Η μετατροπή τύπων δεδομένων επιτρέπει αριθμητικές πράξεις και είναι απαραίτητη για τη μοντελοποίηση.
3. Κωδικοποίηση Κατηγορικών Μεταβλητών
Τα μοντέλα μηχανικής εκμάθησης μπορούν να καταναλώνουν μόνο αριθμητική είσοδο. Επομένως, οι κατηγορικές τιμές πρέπει να υποβληθούν στη διαδικασία κωδικοποίησης, μετατρέποντάς τες σε αριθμητική μορφή, η οποία θα διατηρήσει τις εγγενείς πληροφορίες τους.
Εφαρμογή
Η κάτω (ημέρα της εβδομάδα) η στήλη είναι κατηγορηματική με τιμές όπως 'Δευτ.', 'Tue', κ.λπ. Χρησιμοποιήσατε δύο μεθόδους για την κωδικοποίηση αυτών των δεδομένων :
- One-Hot Encoding: Δημιουργία δυαδικών στηλών για κάθε κατηγορία.
- Τακτική κωδικοποίηση: Αντιστοίχιση κατηγοριών σε αριθμητικές τιμές.
Ας δούμε παραδείγματα.
Κωδικοποίηση One-Hot
# Create dummy variables
dow_dummies = pd.get_dummies(df['dow'])
df = df.join(dow_dummies).drop('dow', axis=1)
df.head()
Ακολουθεί η έξοδος.
Τακτική κωδικοποίηση
# Map days of the week to numerical values
days_of_week = {'Mon': 1, 'Tue': 2, 'Wed': 3, 'Thu': 4, 'Fri': 5, 'Sat': 6, 'Sun': 7}
df['dow'] = df['dow'].map(days_of_week)
df.head()
Ακολουθεί η έξοδος.
Ας αξιολογήσουμε την έξοδο.
- One-Hot Encoding: Προσθέτει νέες στήλες (Δευτ., Τρί, κ.λπ.) με δυαδικούς δείκτες.
- Τακτική κωδικοποίηση: Αντικαθιστά τις τιμές dow με αριθμητικές παραστάσεις.
- Impact: Και οι δύο μέθοδοι μετατρέπουν κατηγορικά δεδομένα σε μορφή κατάλληλη για μοντελοποίηση. Η απλή κωδικοποίηση είναι προτιμότερη όταν δεν υπάρχει εγγενής σειρά, ενώ η τακτική κωδικοποίηση προϋποθέτει μια σειρά.
4. Χειρισμός ακραίων σημείων
Τα άκρα μπορεί να παραμορφώσουν τις στατιστικές σας αναλύσεις και να καταστρέψουν τα μοντέλα σας. Ο εντοπισμός και ο έλεγχος των ακραίων τιμών είναι ένας τρόπος για να αντισταθμίσετε αυτό και να αυξήσετε την ευρωστία των αποτελεσμάτων σας.
Εφαρμογή
Ας ελέγξουμε πρώτα τα ακραία στοιχεία. Εδώ είναι το c
ωδή.
from pandas.plotting import scatter_matrix
# Suppress the output of the scatter_matrix function
_ = scatter_matrix(result.iloc[:,0:7], figsize=(12, 8))
Ακολουθεί η έξοδος.
Ας δούμε τις τιμές του para1
result["para1"].value_counts()
Ακολουθεί η έξοδος.
Εντοπίσαμε ότι το para1 η στήλη έχει ακραίες τιμές (π.χ. 337), οι οποίες είναι ακραίες σε σύγκριση με τα υπόλοιπα δεδομένα. Ας φιλτράρουμε αυτήν τη στήλη.
# Analyze 'para1' value counts
print(result["para1"].value_counts())
# Remove outliers in 'para1'
result = result[result["para1"] < 10]
Ακολουθεί η αξιολόγηση του αποτελέσματος.
- Πριν από την αφαίρεση: para1 έχει τιμές έως 337, ενώ οι περισσότερες καταχωρήσεις είναι μεταξύ 0 και 7.
- Μετά την αφαίρεση: Καταχωρήσεις με para1 >= 10 καταργούνται, μειώνοντας το μέγεθος του συνόλου.
- Αντίκτυπος: Η κατάργηση των ακραίων σημείων τους εμποδίζει να παραμορφώσουν την ανάλυση και βελτιώνει την απόδοση του μοντέλου.
5. Επιλογή χαρακτηριστικών με βάση τη συσχέτιση
Επιλέγονται μόνο χαρακτηριστικά που συσχετίζονται σε μεγάλο βαθμό με τη μεταβλητή-στόχο, τα οποία μπορούν να αυξήσουν την ακρίβεια του μοντέλου και να μειώσουν την πολυπλοκότητα.
Εφαρμογή
Υπολογίσατε τη συσχέτιση μεταξύ των χαρακτηριστικών και της μεταβλητής στόχου τιμή, επιλέγοντας τα κορυφαία χαρακτηριστικά.
five_best = []
df_5 = pd.DataFrame(result.corr()["price"]).sort_values(by = "price", ascending = False)
df_5 = df_5.drop(df_5.index[0]).head(5)
for i in range(len(df_5)):
five_best.append(df_5.index[i])
five_best
Ακολουθεί η έξοδος.
Ακολουθεί η αξιολόγηση αυτού που κάναμε.
- Τα κορυφαία χαρακτηριστικά που εντοπίστηκαν: ['para2', 'para4', 'para3', 'para1', ' Παρ.]
- Αντίκτυπος: Χρήση λειτουργιών με υψηλότερη συσχέτιση με τιμή μπορεί να βελτιώσει την προγνωστική ισχύ των μοντέλων σας.
6. Χαρακτηριστικά κλιμάκωσης
Η κλιμάκωση διασφαλίζει ότι όλα τα χαρακτηριστικά συμβάλλουν εξίσου στη διαδικασία εκπαίδευσης του μοντέλου, η οποία είναι ιδιαίτερα σημαντική για αλγόριθμους ευαίσθητους σε κλίμακες χαρακτηριστικών.
Η κλιμάκωση κάθε δυνατότητας και η διασφάλιση ότι όλα τα χαρακτηριστικά συμβάλλουν το ίδιο στο μοντέλο είναι πολύ σημαντική στη μηχανική εκμάθηση, ειδικά για ορισμένους αλγόριθμους που είναι ευαίσθητοι σε διαφορετικές κλίμακες χαρακτηριστικών εισόδου.
Εφαρμογή
Εφαρμόσαμε διαφορετικές τεχνικές κλιμάκωσης:
- Ελάχιστη-Μέγιστη Κλιμάκωση
- Τυπική κλιμάκωση
- Στιβαρή κλιμάκωση
Λοιπόν, ας δούμε την εφαρμογή τους.
Παράδειγμα τυπικής κλιμάκωσης
from sklearn.preprocessing import StandardScaler
# Separate features and target
X = result.drop('price', axis=1)
y = result['price']
# Apply Standard Scaling
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
Ας αξιολογήσουμε τι κάναμε.
- Απόδοση μοντέλου: Η κλιμάκωση βελτίωσε τα σφάλματα εκπαίδευσης και δοκιμών του μοντέλου.
- Σύγκριση: Συγκρίνατε την απόδοση διαφορετικών μεθόδων κλιμάκωσης.
- Αντίκτυπος: Η σωστή κλιμάκωση μπορεί να οδηγήσει σε ταχύτερη σύγκλιση και καλύτερη ακρίβεια μοντέλου.
7. Χειρισμός αξιών που λείπουν
Τα μοντέλα μηχανικής εκμάθησης μπορεί να είναι περίεργα με τιμές που λείπουν. Γέμισμα σημαίνει να βεβαιωθείτε ότι το σετ για εκπαιδευτικούς σκοπούς έχει υλοποιηθεί πλήρως.
Δημιουργία μοντέλου σε συνθετικό σύνολο δεδομένων
Αυτό το έργο δεδομένων χρησιμοποιήθηκε κατά την πρόσληψη για τις θέσεις επιστήμης δεδομένων της Capital One. Εδώ είναι ο σύνδεσμος.
Εφαρμογή
Τα σύνολα δεδομένων σας περιέχουν τιμές που λείπουν σε πολλές λειτουργίες. Για να διατηρήσετε την ακεραιότητα των δεδομένων, επιλέξατε να συμπληρώσετε αυτές τις τιμές που λείπουν με τη διάμεσο κάθε χαρακτηριστικού.
Πρώτα, ας ελέγξουμε τις τιμές που λείπουν.
# Check missing values in train_data
missing_train = train_data.isna().sum()
print("Missing values in train_data:")
print(missing_train[missing_train > 0])
# Check missing values in test_data
missing_test = test_data.isna().sum()
print("\nMissing values in test_data:")
print(missing_test[missing_test > 0])
Ακολουθεί η έξοδος.
Τώρα, ας δούμε ποιον κωδικό θα χρησιμοποιήσουμε για να καθαρίσουμε.
# Filling missing values in train_data with median
for column in train_data.columns:
median_value = train_data[column].median()
train_data[column].fillna(median_value, inplace=True)
# Filling missing values in test_data with median
for column in test_data.columns:
median_value = test_data[column].median()
test_data[column].fillna(median_value, inplace=True)
Τώρα, ας ελέγξουμε άλλη μια φορά. Εδώ είναι ο κωδικός.
# Check missing values in train_data
missing_train = train_data.isna().sum()
print("Missing values in train_data:")
print(missing_train[missing_train > 0])
# Check missing values in test_data
missing_test = test_data.isna().sum()
print("\nMissing values in test_data:")
print(missing_test[missing_test > 0])
Ακολουθεί η έξοδος.
Ας αξιολογήσουμε τι κάναμε εδώ.
- Πριν από τον καταλογισμό: Σε πολλά χαρακτηριστικά λείπουν τιμές και στα δύο σύνολα δεδομένων.
- Μετά τον Καταλογισμό: Συμπληρώνονται όλες οι τιμές που λείπουν. Τα σύνολα δεδομένων έχουν ολοκληρωθεί.
- Impact: Βελτιώνει την απόδοση του μοντέλου παρέχοντας ένα πλήρες σύνολο δεδομένων για εκπαίδευση και αξιολόγηση.
Τελικές σκέψεις
Σε αυτό το άρθρο, ανακαλύψαμε επτά βασικές μεθόδους καθαρισμού δεδομένων που θα σας διδάξουν περισσότερα για την Python και θα σας βοηθήσουν να δημιουργήσετε καλύτερα μοντέλα. Επίσης, ρίξτε μια ματιά σε αυτές τις Βιβλιοθήκες Python για καθαρισμό δεδομένων.
Η χρήση αυτών των μεθόδων θα βελτιώσει σημαντικά την ανάλυση των δεδομένων σας, ειδικά σε έργα δεδομένων πραγματικής ζωής. Θα σας προετοιμάσει επίσης για τη διαδικασία πρόσληψης επιστημόνων δεδομένων.