Η συνάρτηση 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
Go to Main Menu