Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python - KDnuggets

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python – KDnuggets

Κόμβος πηγής: 2939047

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python
Εικόνα από συγγραφέα
 

Data cleaning is a critical part of any data analysis process. It’s the step where you remove errors, handle missing data, and make sure that your data is in a format that you can work with. Without a well-cleaned dataset, any subsequent analyses can be skewed or incorrect.

Αυτό το άρθρο σας εισάγει σε πολλές βασικές τεχνικές για τον καθαρισμό δεδομένων στην Python, χρησιμοποιώντας ισχυρές βιβλιοθήκες όπως panda, numpy, seaborn και matplotlib.

Before diving into the mechanics of data cleaning, let’s understand its importance. Real-world data is often messy. It can contain duplicate entries, incorrect or inconsistent data types, missing values, irrelevant features, and outliers. All these factors can lead to misleading conclusions when analyzing data. This makes data cleaning an indispensable part of the data science lifecycle.

Θα καλύψουμε τις ακόλουθες εργασίες καθαρισμού δεδομένων.
 

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python
Εικόνα από συγγραφέα

Before getting started, let’s import the necessary libraries. We’ll be using pandas for data manipulation, and seaborn and matplotlib for visualizations.

Θα εισαγάγουμε επίσης το module Python datetime για τον χειρισμό των ημερομηνιών.

import pandas as pd
import seaborn as sns
import datetime as dt
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

First, we’ll need to load our data. In this example, we’re going to load a CSV file using pandas. We also add the delimiter argument.

df = pd.read_csv('F:KDNuggetsKDN Mastering the Art of Data Cleaning in Pythonproperty.csv', delimiter= ';')

Next, it’s important to inspect the data to understand its structure, what kind of variables we’re working with, and whether there are any missing values. Since the data we imported is not huge, let’s have a look at the whole dataset.

# Look at all the rows of the dataframe
display(df)

Δείτε πώς φαίνεται το σύνολο δεδομένων.

 

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python
 

Μπορείτε να δείτε αμέσως ότι λείπουν κάποιες τιμές. Επίσης, οι μορφές ημερομηνίας είναι ασυνεπείς.

Τώρα, ας ρίξουμε μια ματιά στη σύνοψη DataFrame χρησιμοποιώντας τη μέθοδο info().

# Get a concise summary of the dataframe
print(df.info())

Εδώ είναι η έξοδος κώδικα.

 

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python
 

Μπορούμε να δούμε ότι μόνο η στήλη square_feet δεν έχει NULL τιμές, οπότε θα πρέπει με κάποιο τρόπο να το χειριστούμε αυτό. Επίσης, οι στήλες advertisement_date και sale_date είναι ο τύπος δεδομένων του αντικειμένου, παρόλο που θα πρέπει να είναι ημερομηνία.

Η θέση της στήλης είναι εντελώς άδεια. Το χρειαζόμαστε;

Θα σας δείξουμε πώς να χειριστείτε αυτά τα ζητήματα. Θα ξεκινήσουμε μαθαίνοντας πώς να διαγράφετε περιττές στήλες.

Υπάρχουν δύο στήλες στο σύνολο δεδομένων που δεν χρειαζόμαστε στην ανάλυση των δεδομένων μας, επομένως θα τις καταργήσουμε.

Η πρώτη στήλη είναι αγοραστής. Δεν το χρειαζόμαστε, καθώς το όνομα του αγοραστή δεν επηρεάζει την ανάλυση.

Χρησιμοποιούμε τη μέθοδο drop() με το καθορισμένο όνομα στήλης. Ορίζουμε τον άξονα σε 1 για να καθορίσουμε ότι θέλουμε να διαγράψουμε μια στήλη. Επίσης, το όρισμα inplace ορίζεται σε True ώστε να τροποποιήσουμε το υπάρχον DataFrame και να μην δημιουργήσουμε ένα νέο DataFrame χωρίς τη στήλη που έχει αφαιρεθεί.

df.drop('buyer', axis = 1, inplace = True)

Η δεύτερη στήλη που θέλουμε να αφαιρέσουμε είναι η τοποθεσία. Αν και μπορεί να είναι χρήσιμο να έχουμε αυτές τις πληροφορίες, αυτή είναι μια εντελώς άδεια στήλη, επομένως ας την καταργήσουμε.

Ακολουθούμε την ίδια προσέγγιση όπως στην πρώτη στήλη.

df.drop('location', axis = 1, inplace = True)

Φυσικά, μπορείτε να αφαιρέσετε αυτές τις δύο στήλες ταυτόχρονα.

df = df.drop(['buyer', 'location'], axis=1)

Και οι δύο προσεγγίσεις επιστρέφουν το ακόλουθο πλαίσιο δεδομένων.

 

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python

Διπλότυπα δεδομένα μπορεί να προκύψουν στο σύνολο δεδομένων σας για διάφορους λόγους και μπορεί να παραμορφώσουν την ανάλυσή σας.

Ας εντοπίσουμε τα διπλότυπα στο σύνολο δεδομένων μας. Δείτε πώς να το κάνετε.

Ο παρακάτω κώδικας χρησιμοποιεί τη μέθοδο διπλό () να ληφθούν υπόψη διπλότυπα σε ολόκληρο το σύνολο δεδομένων. Η προεπιλεγμένη ρύθμισή του είναι να θεωρεί την πρώτη εμφάνιση μιας τιμής ως μοναδική και τις επόμενες εμφανίσεις ως διπλότυπα. Μπορείτε να τροποποιήσετε αυτήν τη συμπεριφορά χρησιμοποιώντας το διατήρηση παράμετρος. Για παράδειγμα, το df.duplicated(keep=False) θα επισήμανε όλα τα διπλότυπα ως True, συμπεριλαμβανομένης της πρώτης εμφάνισης.

# Detecting duplicates
duplicates = df[df.duplicated()]
duplicates

Εδώ είναι η έξοδος.

 

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python
 

Η σειρά με το ευρετήριο 3 έχει επισημανθεί ως διπλή επειδή η σειρά 2 με τις ίδιες τιμές είναι η πρώτη της εμφάνιση.

Τώρα πρέπει να αφαιρέσουμε τα διπλότυπα, κάτι που κάνουμε με τον παρακάτω κώδικα.

# Detecting duplicates
duplicates = df[df.duplicated()]
duplicates

Η drop_duplicates() function considers all columns while identifying duplicates. If you want to consider only certain columns, you can pass them as a list to this function like this: df.drop_duplicates(subset=[‘column1’, ‘column2’]).

 

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python
 

Όπως μπορείτε να δείτε, η διπλή σειρά έχει απορριφθεί. Ωστόσο, η ευρετηρίαση παρέμεινε η ίδια, με τον δείκτη 3 να λείπει. Θα το διορθώσουμε με επαναφορά των δεικτών.

df = df.reset_index(drop=True)

Αυτή η εργασία εκτελείται χρησιμοποιώντας το reset_index() λειτουργία. Το όρισμα drop=True χρησιμοποιείται για την απόρριψη του αρχικού ευρετηρίου. Εάν δεν συμπεριλάβετε αυτό το όρισμα, το παλιό ευρετήριο θα προστεθεί ως νέα στήλη στο DataFrame σας. Ορίζοντας drop=True, λέτε στα πάντα να ξεχάσουν το παλιό ευρετήριο και να το επαναφέρουν στον προεπιλεγμένο ακέραιο ευρετήριο.

Για εξάσκηση, προσπαθήστε αφαιρέστε τα διπλότυπα από αυτό το σύνολο δεδομένων της Microsoft.

Μερικές φορές, οι τύποι δεδομένων ενδέχεται να έχουν οριστεί εσφαλμένα. Για παράδειγμα, μια στήλη ημερομηνίας μπορεί να ερμηνευτεί ως συμβολοσειρές. Πρέπει να τα μετατρέψετε στους κατάλληλους τύπους τους.

Στο σύνολο δεδομένων μας, θα το κάνουμε αυτό για τις στήλες advertisement_date και sale_date, καθώς εμφανίζονται ως τύπος δεδομένων αντικειμένου. Επίσης, οι ημερομηνίες ημερομηνίας μορφοποιούνται διαφορετικά στις σειρές. Πρέπει να το κάνουμε συνεπές, μαζί με τη μετατροπή του σε ημερομηνία.

Ο ευκολότερος τρόπος είναι να χρησιμοποιήσετε το to_datetime() μέθοδος. Και πάλι, μπορείτε να κάνετε αυτό στήλη προς στήλη, όπως φαίνεται παρακάτω.

Όταν το κάνουμε αυτό, ορίζουμε το όρισμα dayfirst σε True επειδή ορισμένες ημερομηνίες ξεκινούν με την ημέρα πρώτα.

# Converting advertisement_date column to datetime
df['advertisement_date'] = pd.to_datetime(df['advertisement_date'], dayfirst = True) # Converting sale_date column to datetime
df['sale_date'] = pd.to_datetime(df['sale_date'], dayfirst = True)

Μπορείτε επίσης να μετατρέψετε και τις δύο στήλες ταυτόχρονα χρησιμοποιώντας το ισχύουν() μέθοδος με to_datetime().

# Converting advertisement_date and sale_date columns to datetime
df[['advertisement_date', 'sale_date']] = df[['advertisement_date', 'sale_date']].apply(pd.to_datetime, dayfirst = True)

Και οι δύο προσεγγίσεις σας δίνουν το ίδιο αποτέλεσμα.

 

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python
 

Τώρα οι ημερομηνίες είναι σε συνεπή μορφή. Βλέπουμε ότι δεν έχουν μετατραπεί όλα τα δεδομένα. Υπάρχει μία τιμή NaT στο advertisement_date και δύο στην sale_date. Αυτό σημαίνει ότι λείπει η ημερομηνία.

Ας ελέγξουμε αν οι στήλες μετατρέπονται σε ημερομηνίες χρησιμοποιώντας το πληροφορίες () μέθοδος.

# Get a concise summary of the dataframe
print(df.info())

 

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python
 

Όπως μπορείτε να δείτε, και οι δύο στήλες δεν είναι σε μορφή datetime64[ns].

Τώρα, προσπαθήστε να μετατρέψετε τα δεδομένα από TEXT σε NUMERIC σε αυτό Δεδομένα Airbnb.

Τα σύνολα δεδομένων του πραγματικού κόσμου συχνά έχουν τιμές που λείπουν. Ο χειρισμός των δεδομένων που λείπουν είναι ζωτικής σημασίας, καθώς ορισμένοι αλγόριθμοι δεν μπορούν να χειριστούν τέτοιες τιμές.

Το παράδειγμά μας έχει επίσης κάποιες τιμές που λείπουν, οπότε ας ρίξουμε μια ματιά στις δύο πιο συνηθισμένες προσεγγίσεις για τον χειρισμό δεδομένων που λείπουν.

Διαγραφή σειρών με τιμές που λείπουν

Εάν ο αριθμός των σειρών με δεδομένα που λείπουν είναι ασήμαντος σε σύγκριση με τον συνολικό αριθμό των παρατηρήσεων, μπορείτε να σκεφτείτε να διαγράψετε αυτές τις σειρές.

Στο παράδειγμά μας, η τελευταία σειρά δεν έχει τιμές εκτός από τα τετραγωνικά πόδια και την ημερομηνία διαφήμισης. Δεν μπορούμε να χρησιμοποιήσουμε τέτοια δεδομένα, επομένως ας καταργήσουμε αυτήν τη σειρά.

Εδώ είναι ο κωδικός όπου υποδεικνύουμε το ευρετήριο της σειράς.

df = df.drop(8)

Το DataFrame τώρα μοιάζει με αυτό.

 

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python
 

Η τελευταία σειρά έχει διαγραφεί και το DataFrame μας φαίνεται τώρα καλύτερο. Ωστόσο, εξακολουθούν να λείπουν ορισμένα δεδομένα τα οποία θα χειριστούμε χρησιμοποιώντας άλλη προσέγγιση.

Καταλογισμός τιμών που λείπουν

Εάν λείπουν σημαντικά δεδομένα, μια καλύτερη στρατηγική από τη διαγραφή θα μπορούσε να είναι ο καταλογισμός. Αυτή η διαδικασία περιλαμβάνει τη συμπλήρωση τιμών που λείπουν με βάση άλλα δεδομένα. Για τα αριθμητικά δεδομένα, οι συνήθεις μέθοδοι καταλογισμού περιλαμβάνουν τη χρήση ενός μέτρου κεντρικής τάσης (μέσος όρος, διάμεσος, τρόπος λειτουργίας).

Στο ήδη αλλαγμένο DataFrame, έχουμε τιμές NaT (Not a Time) στις στήλες advertisement_date και sale_date. Θα υπολογίσουμε αυτές τις τιμές που λείπουν χρησιμοποιώντας το σημαίνω() μέθοδος.

Ο κώδικας χρησιμοποιεί το fillna() μέθοδο για να βρείτε και να γεμίσετε τις μηδενικές τιμές με τη μέση τιμή.

# Imputing values for numerical columns
df['advertisement_date'] = df['advertisement_date'].fillna(df['advertisement_date'].mean())
df['sale_date'] = df['sale_date'].fillna(df['sale_date'].mean())

Μπορείτε επίσης να κάνετε το ίδιο πράγμα σε μία γραμμή κώδικα. Χρησιμοποιούμε το ισχύουν() για να εφαρμόσετε τη συνάρτηση που ορίζεται χρησιμοποιώντας λάμδα. Όπως και παραπάνω, αυτή η λειτουργία χρησιμοποιεί το fillna() και σημαίνω() μεθόδους συμπλήρωσης των τιμών που λείπουν.

# Imputing values for multiple numerical columns
df[['advertisement_date', 'sale_date']] = df[['advertisement_date', 'sale_date']].apply(lambda x: x.fillna(x.mean()))

Η έξοδος και στις δύο περιπτώσεις μοιάζει με αυτό.

 

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python
 

Η στήλη sale_date έχει πλέον χρόνους που δεν χρειαζόμαστε. Ας τα αφαιρέσουμε.

Θα χρησιμοποιήσουμε το strftime() μέθοδο, η οποία μετατρέπει τις ημερομηνίες στην αναπαράσταση συμβολοσειράς τους και σε μια συγκεκριμένη μορφή.

df['sale_date'] = df['sale_date'].dt.strftime('%Y-%m-%d')

 

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python
 

Τα ραντεβού τώρα φαίνονται όλα τακτοποιημένα.

Εάν πρέπει να χρησιμοποιήσετε strftime() σε πολλές στήλες, μπορείτε να χρησιμοποιήσετε ξανά λάμδα τον ακόλουθο τρόπο.

df[['date1_formatted', 'date2_formatted']] = df[['date1', 'date2']].apply(lambda x: x.dt.strftime('%Y-%m-%d'))

Τώρα, ας δούμε πώς μπορούμε να καταλογίσουμε κατηγορίες που λείπουν.

Categorical data is a type of data that is used to group information with similar characteristics. Each of these groups is a category. Categorical data can take on numerical values (such as “1” indicating “male” and “2” indicating “female”), but those numbers do not have mathematical meaning. You can’t add them together, for instance.

Τα κατηγορικά δεδομένα χωρίζονται συνήθως σε δύο κατηγορίες:

  1. Ονομαστικά δεδομένα: Αυτό συμβαίνει όταν οι κατηγορίες φέρουν μόνο ετικέτες και δεν μπορούν να ταξινομηθούν με κάποια συγκεκριμένη σειρά. Παραδείγματα περιλαμβάνουν το φύλο (αρσενικό, θηλυκό), την ομάδα αίματος (A, B, AB, O) ή το χρώμα (κόκκινο, πράσινο, μπλε).
  1. Τακτικά δεδομένα: Αυτό είναι όταν οι κατηγορίες μπορούν να ταξινομηθούν ή να ταξινομηθούν. Ενώ τα διαστήματα μεταξύ των κατηγοριών δεν απέχουν ίσα, η σειρά των κατηγοριών έχει νόημα. Τα παραδείγματα περιλαμβάνουν κλίμακες αξιολόγησης (βαθμολόγηση από 1 έως 5 ταινίας), επίπεδο εκπαίδευσης (λύκειο, προπτυχιακό, μεταπτυχιακό) ή στάδια καρκίνου (Στάδιο Ι, Στάδιο ΙΙ, Στάδιο ΙΙΙ).

Για τον καταλογισμό κατηγορικών δεδομένων που λείπουν, συνήθως χρησιμοποιείται η λειτουργία. Στο παράδειγμά μας, η στήλη ιδιοκτησία_κατηγορία είναι κατηγορικά (ονομαστικά) δεδομένα και λείπουν δεδομένα σε δύο σειρές.

Ας αντικαταστήσουμε τις τιμές που λείπουν με τη λειτουργία.

# For categorical columns
df['property_category'] = df['property_category'].fillna(df['property_category'].mode()[0])

Αυτός ο κώδικας χρησιμοποιεί το fillna() συνάρτηση για την αντικατάσταση όλων των τιμών NaN στη στήλη property_category. Το αντικαθιστά με mode.

Additionally, the [0] part is used to extract the first value from this Series. If there are multiple modes, this will select the first one. If there’s only one mode, it still works fine.

Εδώ είναι η έξοδος.

 

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python
 

Τα δεδομένα τώρα φαίνονται αρκετά καλά. Το μόνο που απομένει είναι να δούμε αν υπάρχουν ακραίες τιμές.

Μπορείτε να εξασκηθείτε στην αντιμετώπιση των null σε αυτό Ερώτηση μετα συνέντευξης, όπου θα πρέπει να αντικαταστήσετε τα NULL με μηδενικά.

Outliers are data points in a dataset that are distinctly different from the other observations. They may lie exceptionally far from the other values in the data set, residing outside an overall pattern. They’re considered unusual due to their values either being significantly higher or lower compared to the rest of the data.

Οι ακραίες τιμές μπορεί να προκύψουν για διάφορους λόγους όπως:

  • Σφάλματα μέτρησης ή εισαγωγής
  • Αλλοίωση δεδομένων
  • Αληθινές στατιστικές ανωμαλίες

Οι ακραίες τιμές μπορούν να επηρεάσουν σημαντικά τα αποτελέσματα της ανάλυσης δεδομένων και της στατιστικής μοντελοποίησης. Μπορούν να οδηγήσουν σε λοξή κατανομή, μεροληψία ή να ακυρώσουν τις υποκείμενες στατιστικές υποθέσεις, να παραμορφώσουν την εκτιμώμενη προσαρμογή του μοντέλου, να μειώσουν την προγνωστική ακρίβεια των προγνωστικών μοντέλων και να οδηγήσουν σε εσφαλμένα συμπεράσματα.

Ορισμένες κοινά χρησιμοποιούμενες μέθοδοι για την ανίχνευση ακραίων τιμών είναι το Z-score, το IQR (Interquartile Range), οι γραφικές παραστάσεις πλαισίου, οι γραφικές παραστάσεις διασποράς και οι τεχνικές οπτικοποίησης δεδομένων. Σε ορισμένες προχωρημένες περιπτώσεις, χρησιμοποιούνται επίσης μέθοδοι μηχανικής εκμάθησης.

Visualizing data can help identify outliers. Seaborn’s boxplot is handy for this.

plt.figure(figsize=(10, 6))
sns.boxplot(data=df[['advertised_price', 'sale_price']])

Χρησιμοποιούμε την plt.figure() για να ορίσουμε το πλάτος και το ύψος του σχήματος σε ίντσες.

Στη συνέχεια, δημιουργούμε το πλαίσιο για τις στήλες advertised_price και sale_price, το οποίο μοιάζει με αυτό.

 

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python
 

Το οικόπεδο μπορεί να βελτιωθεί για ευκολότερη χρήση προσθέτοντας αυτό στον παραπάνω κώδικα.

plt.xlabel('Prices')
plt.ylabel('USD')
plt.ticklabel_format(style='plain', axis='y')
formatter = ticker.FuncFormatter(lambda x, p: format(x, ',.2f'))
plt.gca().yaxis.set_major_formatter(formatter)

Χρησιμοποιούμε τον παραπάνω κώδικα για να ορίσουμε τις ετικέτες και για τους δύο άξονες. Παρατηρούμε επίσης ότι οι τιμές στον άξονα y βρίσκονται στον επιστημονικό συμβολισμό και δεν μπορούμε να το χρησιμοποιήσουμε για τις τιμές τιμής. Έτσι το αλλάζουμε σε απλό στυλ χρησιμοποιώντας τη συνάρτηση plt.ticklabel_format().

Στη συνέχεια δημιουργούμε τον μορφοποιητή που θα δείχνει τις τιμές στον άξονα y με κόμματα ως χίλια διαχωριστικά και δεκαδικές τελείες. Η τελευταία γραμμή κώδικα το εφαρμόζει στον άξονα.

Η έξοδος τώρα μοιάζει με αυτό.

 

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python
 

Τώρα, πώς αναγνωρίζουμε και αφαιρούμε το ακραίο;

Ένας από τους τρόπους είναι να χρησιμοποιήσετε τη μέθοδο IQR.

Το IQR, ή το Διατεταρτημόριο, είναι μια στατιστική μέθοδος που χρησιμοποιείται για τη μέτρηση της μεταβλητότητας διαιρώντας ένα σύνολο δεδομένων σε τεταρτημόρια. Τα τεταρτημόρια διαιρούν ένα σύνολο δεδομένων με σειρά κατάταξης σε τέσσερα ίσα μέρη και οι τιμές εντός του εύρους του πρώτου τεταρτημορίου (25ο εκατοστημόριο) και του τρίτου τεταρτημορίου (75ο εκατοστημόριο) συνθέτουν το διατεταρτημόριο.

The interquartile range is used to identify outliers in the data. Here’s how it works:

  1. First, calculate the first quartile (Q1), the third quartile (Q3), and then determine the IQR. The IQR is computed as Q3 – Q1.
  2. Any value below Q1 – 1.5IQR or above Q3 + 1.5IQR is considered an outlier.

On our boxplot, the box actually represents the IQR. The line inside the box is the median (or second quartile). The ‘whiskers’ of the boxplot represent the range within 1.5*IQR from Q1 and Q3.

Οποιαδήποτε σημεία δεδομένων έξω από αυτά τα μουστάκια μπορούν να θεωρηθούν ακραία. Στην περίπτωσή μας, είναι η αξία των 12,000,000 $. Αν κοιτάξετε το πλαίσιο, θα δείτε πόσο καθαρά αναπαρίσταται, γεγονός που δείχνει γιατί η οπτικοποίηση δεδομένων είναι σημαντική για τον εντοπισμό ακραίων τιμών.

Τώρα, ας αφαιρέσουμε τα ακραία σημεία χρησιμοποιώντας τη μέθοδο IQR στον κώδικα Python. Αρχικά, θα καταργήσουμε τις διαφημιζόμενες ακραίες τιμές.

Q1 = df['advertised_price'].quantile(0.25)
Q3 = df['advertised_price'].quantile(0.75)
IQR = Q3 - Q1
df = df[~((df['advertised_price'] (Q1 - 1.5 * IQR)) |(df['advertised_price'] > (Q3 + 1.5 * IQR)))]

Υπολογίζουμε πρώτα το πρώτο τεταρτημόριο (ή το 25ο εκατοστημόριο) χρησιμοποιώντας το quantile() λειτουργία. Κάνουμε το ίδιο για το τρίτο τεταρτημόριο ή το 75ο εκατοστημόριο.

Δείχνουν τις τιμές κάτω από τις οποίες πέφτει το 25% και το 75% των δεδομένων, αντίστοιχα.

Στη συνέχεια υπολογίζουμε τη διαφορά μεταξύ των τεταρτημορίων. Όλα μέχρι στιγμής είναι απλώς η μετάφραση των βημάτων IQR σε κώδικα Python.

As a final step, we remove the outliers. In other words, all data less than Q1 – 1.5 * IQR or more than Q3 + 1.5 * IQR.

The ‘~’ operator negates the condition, so we are left with only the data that are not outliers.

Τότε μπορούμε να κάνουμε το ίδιο με την τιμή πώλησης.

Q1 = df['sale_price'].quantile(0.25)
Q3 = df['sale_price'].quantile(0.75)
IQR = Q3 - Q1
df = df[~((df['sale_price'] (Q1 - 1.5 * IQR)) |(df['sale_price'] > (Q3 + 1.5 * IQR)))]

Φυσικά, μπορείτε να το κάνετε με πιο συνοπτικό τρόπο χρησιμοποιώντας το για βρόχο.

for column in ['advertised_price', 'sale_price']: Q1 = df[column].quantile(0.25) Q3 = df[column].quantile(0.75) IQR = Q3 - Q1 df = df[~((df[column] (Q1 - 1.5 * IQR)) |(df[column] > (Q3 + 1.5 * IQR)))]

Ο βρόχος επαναλαμβάνεται των δύο στηλών. Για κάθε στήλη, υπολογίζει το IQR και στη συνέχεια αφαιρεί τις σειρές στο DataFrame.

Λάβετε υπόψη ότι αυτή η λειτουργία γίνεται διαδοχικά, πρώτα για διαφημιζόμενη_τιμή και μετά για τιμή πώλησης. Ως αποτέλεσμα, το DataFrame τροποποιείται επιτόπου για κάθε στήλη και οι σειρές μπορούν να αφαιρεθούν επειδή είναι ακραίες τιμές σε κάθε στήλη. Επομένως, αυτή η λειτουργία μπορεί να έχει ως αποτέλεσμα λιγότερες σειρές από ό,τι εάν οι ακραίες τιμές για advertised_price και sale_price αφαιρούνταν ανεξάρτητα και τα αποτελέσματα συνδυάζονταν στη συνέχεια.

Στο παράδειγμά μας, η έξοδος θα είναι η ίδια και στις δύο περιπτώσεις. Για να δούμε πώς άλλαξε η γραφική παράσταση του πλαισίου, πρέπει να το σχεδιάσουμε ξανά χρησιμοποιώντας τον ίδιο κωδικό όπως προηγουμένως.

plt.figure(figsize=(10, 6))
sns.boxplot(data=df[['advertised_price', 'sale_price']])
plt.xlabel('Prices')
plt.ylabel('USD')
plt.ticklabel_format(style='plain', axis='y')
formatter = ticker.FuncFormatter(lambda x, p: format(x, ',.2f'))
plt.gca().yaxis.set_major_formatter(formatter)

Εδώ είναι η έξοδος.

 

Κατακτήστε την τέχνη του καθαρισμού δεδομένων στην Python
 

Μπορείτε να εξασκηθείτε στον υπολογισμό εκατοστημόνων στην Python λύνοντας το Ερώτηση συνέντευξης στη Γενική Συνέλευση.

Data cleaning is a crucial step in the data analysis process. Though it can be time-consuming, it’s essential to ensure the accuracy of your findings.

Fortunately, Python’s rich ecosystem of libraries makes this process more manageable. We learned how to remove unnecessary rows and columns, reformat data, and deal with missing values and outliers. These are the usual steps that have to be performed on most any data. However, you’ll also sometimes need to συνδυάστε δύο στήλες σε μία, επαληθεύστε τα υπάρχοντα δεδομένα, αντιστοιχίστε ετικέτες σε αυτό, ή απαλλαγείτε από τα λευκά κενά.

Όλα αυτά είναι καθαρισμός δεδομένων, καθώς σας επιτρέπει να μετατρέψετε τα ακατάστατα δεδομένα του πραγματικού κόσμου σε ένα καλά δομημένο σύνολο δεδομένων που μπορείτε να αναλύσετε με σιγουριά. Απλώς συγκρίνετε το σύνολο δεδομένων με το οποίο ξεκινήσαμε με αυτό που καταλήξαμε.

Αν δεν βλέπετε την ικανοποίηση σε αυτό το αποτέλεσμα και τα καθαρά δεδομένα δεν σας ενθουσιάζουν παράξενα, τι στο καλό κάνετε στην επιστήμη δεδομένων!;
 

Νέιτ Ροσίδη είναι επιστήμονας δεδομένων και στη στρατηγική προϊόντων. Είναι επίσης επίκουρος καθηγητής που διδάσκει αναλυτικά και είναι ο ιδρυτής του StrataScratch, μια πλατφόρμα που βοηθά τους επιστήμονες δεδομένων να προετοιμαστούν για τις συνεντεύξεις τους με πραγματικές ερωτήσεις συνεντεύξεων από κορυφαίες εταιρείες. Συνδεθείτε μαζί του Twitter: StrataScratch or LinkedIn.

Σφραγίδα ώρας:

Περισσότερα από KDnuggets