Πώς να εφαρμόσετε συνθήκες σε DataFrames pandas με τη συνάρτηση where()
Η συνάρτηση Python pandas DataFrame.where() έχει σχεδιαστεί για να βοηθάει στον χειρισμό δεδομένων υπό όρους σε DataFrames. Επιτρέπει στους προγραμματιστές να αντικαθιστούν ή να αποκρύψουν τιμές σε ένα pandas DataFrame με βάση έναν όρο.
Ποια είναι η σύνταξη για το pandas DataFrame.where();
Η συνάρτηση where() μπορεί να δέχεται έως και πέντε παραμέτρους και έχει την ακόλουθη σύνταξη:
DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)pythonΌταν εφαρμόζεται σε ένα DataFrame, μόνο οι τιμές που πληρούν την καθορισμένη συνθήκη (cond) θα παραμείνουν ως έχουν. Οποιεσδήποτε άλλες τιμές θα αντικατασταθούν με αυτές που καθορίζετε στην παράμετρο other.
Ποιες παράμετροι μπορούν να χρησιμοποιηθούν με το pandas DataFrame.where();
Το Pandas DataFrame.where() δέχεται διαφορετικές παραμέτρους που διευκολύνουν την ευέλικτη διαχείριση και τροποποίηση δεδομένων:
| Παράμετρος | Περιγραφή | Προεπιλεγμένη τιμή |
|---|---|---|
cond
|
Συνθήκη που πρέπει να πληρούται για να παραμείνουν αμετάβλητες οι τιμές του DataFrame | |
other
|
Η τιμή που αντικαθιστά τις τιμές που δεν πληρούν την προϋπόθεση | |
inplace
|
Όταν ορίζεται σε True, η λειτουργία θα τροποποιήσει άμεσα το DataFrame
|
False
|
axis
|
Καθορίζει σε ποιον άξονα εφαρμόζεται η συνθήκη (axis=0 για σειρές, axis=1 για στήλες)
|
None
|
level
|
Καθορίζει το επίπεδο ενός πολλαπλού δείκτη όπου πρέπει να εφαρμόζεται η συνθήκη. | None
|
Πώς να χρησιμοποιήσετε pandas DataFrame.where()
Η συνάρτηση where() μπορεί να είναι χρήσιμη σε διάφορα σενάρια που απαιτούν χειρισμό δεδομένων υπό όρους. Αυτό μπορεί να περιλαμβάνει τον καθαρισμό δεδομένων ή τη δημιουργία νέων στηλών με βάση συγκεκριμένες συνθήκες.
Αντικατάσταση τιμών με βάση τις συνθήκες
Ας υποθέσουμε ότι έχετε ένα DataFrame με τα αποτελέσματα πωλήσεων μιας εταιρείας και θέλετε να εμφανίσετε μόνο τα θετικά αποτελέσματα. Τα αρνητικά αποτελέσματα, από την άλλη πλευρά, πρέπει να αντικατασταθούν με 0. Μπορείτε να το κάνετε αυτό με το pandas DataFrame.where(). Πρώτα, ας δημιουργήσουμε ένα DataFrame:
import pandas as pd
# Create a sample DataFrame
data = {
'Region': ['North', 'South', 'East', 'West'],
'Sales_Q1': [15000, -5000, 3000, -1000],
'Sales_Q2': [20000, 25000, -7000, 5000]
}
df = pd.DataFrame(data)
print(df)pythonΟ παραπάνω κώδικας παράγει το ακόλουθο DataFrame:
Region Sales_Q1 Sales_Q2
0 North 15000 20000
1 South -5000 25000
2 East 3000 -7000
3 West -1000 5000Χρησιμοποιώντας where(), μπορείτε να αντικαταστήσετε όλες τις αρνητικές τιμές με 0. Βεβαιωθείτε ότι περιλαμβάνονται μόνο στήλες με αριθμητικές τιμές, διαφορετικά δεν θα λειτουργήσει.
# Replacing values using conditions
df_positive = df.copy()
df_positive[['Sales_Q1', 'Sales_Q2']] = df[['Sales_Q1', 'Sales_Q2']].where(df[['Sales_Q1', 'Sales_Q2']] > 0, 0)
print(df_positive)pythonΤο DataFrame που προκύπτει, df_positive, εμφανίζει μόνο θετικά αποτελέσματα πωλήσεων και αντικαθιστά τις αρνητικές τιμές με 0:
Region Sales_Q1 Sales_Q2
0 North 15000 20000
1 South 0 25000
2 East 3000 0
3 West 0 5000Κάλυψη τιμών χρησιμοποιώντας συνθήκες
Το Pandas DataFrame.where() μπορεί επίσης να χρησιμοποιηθεί για την απόκρυψη τιμών. Αυτό σημαίνει ότι θα εμφανίζονται μόνο συγκεκριμένα τμήματα ενός DataFrame. Στο παρακάτω παράδειγμα, θέλουμε να εμφανίσουμε μόνο τιμές που είναι πάνω από ένα συγκεκριμένο όριο (στην περίπτωση αυτή, 10000). Να θυμάστε ότι πρέπει να βεβαιωθείτε ότι αξιολογείτε μόνο στήλες με αριθμητικά δεδομένα:
# Only display values over 10000
df_masked = df.copy()
df_masked[['Sales_Q1', 'Sales_Q2']] = df[['Sales_Q1', 'Sales_Q2']].where(df[['Sales_Q1', 'Sales_Q2']] > 10000)
print(df_masked)pythonΤο DataFrame που προκύπτει, df_masked, εμφανίζει μόνο τιμές μεγαλύτερες από 10000. NaN χρησιμοποιείται αντί για όλες τις άλλες τιμές:
Region Sales_Q1 Sales_Q2
0 North 15000.0 20000.0
1 South NaN 25000.0
2 East NaN NaN
3 West NaN NaN