Φιλτράρισμα σειρών σε Pandas DataFrames
Το Pandas είναι μια ισχυρή βιβλιοθήκη στην Python για χειρισμό και ανάλυση δεδομένων. Μια συνηθισμένη εργασία είναι η επιλογή γραμμών από ένα DataFrame με βάση τις τιμές στηλών, παρόμοια με τον πίνακα SELECT * FROM της SQL WHERE στήλη_όνομα = some_value.
Αυτός ο οδηγός θα σας καθοδηγήσει σε διάφορες μεθόδους για να το πετύχετε αυτό στα Pandas, διευκολύνοντας το αποτελεσματικό φιλτράρισμα των δεδομένων σας. Είτε είστε αρχάριος είτε έμπειρος χρήστης, αυτές οι συμβουλές θα βελτιώσουν τις δεξιότητές σας στο χειρισμό δεδομένων.
Εντολή | Περιγραφή |
---|---|
pd.DataFrame(data) | Δημιουργεί ένα DataFrame από ένα λεξικό δεδομένων. |
df[column_name] | Έχει πρόσβαση σε μια στήλη στο DataFrame με το όνομα. |
df[condition] | Φιλτράρει το DataFrame με βάση μια συνθήκη που εφαρμόζεται σε μια στήλη. |
print(selected_rows) | Εκτυπώνει το DataFrame ή ένα υποσύνολο αυτού στην κονσόλα. |
df[df['Age'] >df[df['Age'] > 25] | Επιλέγει γραμμές όπου οι τιμές της στήλης "Ηλικία" είναι μεγαλύτερες από 25. |
df[df['City'] == 'Chicago'] | Επιλέγει σειρές όπου οι τιμές της στήλης "Πόλη" είναι ίσες με "Σικάγο". |
Κατανόηση της επιλογής σειράς DataFrame στα Pandas
Τα σενάρια που παρέχονται δείχνουν πώς να επιλέγετε σειρές από ένα DataFrame με βάση τις τιμές στηλών χρησιμοποιώντας τη βιβλιοθήκη Pandas στην Python. Το πρώτο σενάριο ξεκινάει εισάγοντας τη βιβλιοθήκη Pandas με το import pandas as pd εντολή. Στη συνέχεια δημιουργεί ένα δείγμα DataFrame χρησιμοποιώντας ένα λεξικό δεδομένων, το οποίο μετατρέπεται σε DataFrame με το pd.DataFrame(data) εντολή. Στη συνέχεια, το σενάριο απεικονίζει δύο μεθόδους για την επιλογή σειρών: επιλέγοντας σειρές όπου η τιμή της στήλης «Ηλικία» είναι μεγαλύτερη από 25 χρησιμοποιώντας df[df['Age'] > 25], και επιλέγοντας γραμμές όπου η τιμή της στήλης "Πόλη" είναι "Σικάγο" χρησιμοποιώντας df[df['City'] == 'Chicago']. Αυτά τα φιλτραρισμένα DataFrame εκτυπώνονται χρησιμοποιώντας το print() λειτουργία για εμφάνιση των επιλεγμένων σειρών.
Το δεύτερο σενάριο ακολουθεί παρόμοια δομή, αλλά χρησιμοποιεί διαφορετικά δεδομένα και κριτήρια επιλογής. Δημιουργεί ένα DataFrame με πληροφορίες προϊόντος, συμπεριλαμβανομένων των στηλών «Προϊόν», «Τιμή» και «Απόθεμα». Οι σειρές επιλέγονται όπου η "Τιμή" είναι μικρότερη ή ίση με 200 με df[df['Price'] <= 200], και όπου το 'Stock' χρησιμοποιείται πάνω από 40 df[df['Stock'] > 40]. Ο σκοπός αυτών των σεναρίων είναι να δείξουν πώς να φιλτράρετε σειρές DataFrame με βάση συγκεκριμένες συνθήκες, παρόμοιο με τον τρόπο που θα χρησιμοποιούσατε ένα ερώτημα SQL για να επιλέξετε γραμμές από έναν πίνακα με βάση μια τιμή στήλης. Κατανοώντας και εφαρμόζοντας αυτές τις εντολές, μπορείτε να χειριστείτε και να αναλύσετε αποτελεσματικά τα δεδομένα στα DataFrames σας.
Επιλογή γραμμών σε ένα DataFrame με χρήση τιμών στηλών στα Panda
Python with Pandas Library
# Importing the necessary library
import pandas as pd
# Creating a sample DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}
df = pd.DataFrame(data)
# Selecting rows where Age is greater than 25
selected_rows = df[df['Age'] > 25]
print(selected_rows)
# Selecting rows where City is 'Chicago'
chicago_rows = df[df['City'] == 'Chicago']
print(chicago_rows)
Φιλτράρισμα δεδομένων σε ένα DataFrame με βάση τα κριτήρια στήλης
Python with Pandas Library
# Importing pandas library
import pandas as pd
# Creating a sample DataFrame
data = {'Product': ['A', 'B', 'C', 'D', 'E'],
'Price': [100, 150, 200, 250, 300],
'Stock': [30, 60, 90, 20, 50]}
df = pd.DataFrame(data)
# Selecting rows where Price is less than or equal to 200
affordable_products = df[df['Price'] <= 200]
print(affordable_products)
# Selecting rows where Stock is more than 40
in_stock = df[df['Stock'] > 40]
print(in_stock)
Προηγμένες τεχνικές για την επιλογή σειρών DataFrame στα Panda
Εκτός από το βασικό φιλτράρισμα με χρήση δυαδικού ευρετηρίου, το Pandas προσφέρει προηγμένες τεχνικές για την επιλογή γραμμών με βάση τις τιμές στηλών. Μια ισχυρή μέθοδος είναι η χρήση του query() λειτουργία, η οποία σας επιτρέπει να φιλτράρετε σειρές με μια έκφραση ερωτήματος, καθιστώντας τη σύνταξη πιο καθαρή και συχνά πιο διαισθητική. Για παράδειγμα, αντί να χρησιμοποιείτε df[df['Age'] > 25], μπορείς να γράψεις df.query('Age > 25'). Αυτή η μέθοδος είναι ιδιαίτερα χρήσιμη όταν αντιμετωπίζουμε πιο σύνθετες συνθήκες ή όταν τα ονόματα των στηλών περιέχουν κενά. Επιπλέον, το isin() Η λειτουργία είναι ευεργετική όταν θέλετε να φιλτράρετε σειρές με βάση μια λίστα τιμών. Για παράδειγμα, για να επιλέξετε σειρές όπου η τιμή της στήλης "Πόλη" είναι είτε "Σικάγο" ή "Νέα Υόρκη", μπορείτε να χρησιμοποιήσετε df[df['City'].isin(['Chicago', 'New York'])].
Μια άλλη τεχνική περιλαμβάνει το loc και iloc δείκτες. ο loc ο δείκτης βασίζεται σε ετικέτες, επιτρέποντάς σας να επιλέξετε σειρές με βάση τις ετικέτες σειρών και τα ονόματα στηλών, ενώ iloc βασίζεται σε ακέραιο αριθμό, επιτρέποντας την επιλογή με αριθμούς σειρών και στηλών. Αυτή η ευελιξία είναι ιδιαίτερα χρήσιμη για την επιλογή γραμμών με βάση μια συνθήκη που εφαρμόζεται σε διαφορετική στήλη. Για παράδειγμα, df.loc[df['Age'] > 25, 'Name'] θα επιστρέψει τα ονόματα ατόμων ηλικίας άνω των 25 ετών. Αυτές οι μέθοδοι επεκτείνουν την εργαλειοθήκη σας για αποτελεσματικό χειρισμό και ανάλυση δεδομένων στα Panda, προσφέροντας πιο ευανάγνωστο και διατηρήσιμο κώδικα.
Συνήθεις ερωτήσεις και απαντήσεις σχετικά με την επιλογή σειρών DataFrame
- Πώς μπορώ να επιλέξω σειρές με βάση πολλαπλές συνθήκες;
- Μπορείτε να χρησιμοποιήσετε το query() λειτουργούν ή συνδυάζουν συνθήκες με λογικούς τελεστές όπως & και |. Για παράδειγμα, df[(df['Age'] > 25) & (df['City'] == 'Chicago')].
- Μπορώ να φιλτράρω σειρές με βάση μια λίστα τιμών;
- Ναι, χρησιμοποιήστε το isin() λειτουργία. Για παράδειγμα, df[df['City'].isin(['Chicago', 'New York'])].
- Ποια είναι η διαφορά μεταξύ loc και iloc?
- loc βασίζεται σε ετικέτες, ενώ iloc βασίζεται σε ακέραιο αριθμό. Χρήση loc με ετικέτες σειρών/στηλών και iloc με δείκτες σειρών/στηλών.
- Πώς μπορώ να επιλέξω συγκεκριμένες στήλες κατά το φιλτράρισμα σειρών;
- Μπορείς να χρησιμοποιήσεις loc. Για παράδειγμα, df.loc[df['Age'] > 25, ['Name', 'City']].
- Πώς μπορώ να χειριστώ τις τιμές που λείπουν κατά την επιλογή σειρών;
- Χρησιμοποιήστε το dropna() λειτουργία για την αφαίρεση σειρών με τιμές που λείπουν ή fillna() για να τα αντικαταστήσετε με μια καθορισμένη τιμή.
- Μπορώ να χρησιμοποιήσω τυπικές εκφράσεις για να φιλτράρω σειρές;
- Ναι το str.contains() λειτουργία με το regex=True Η παράμετρος σάς επιτρέπει να φιλτράρετε σειρές με βάση μοτίβα regex. Για παράδειγμα, df[df['Name'].str.contains('^A', regex=True)].
- Πώς φιλτράρω τις σειρές με βάση το ευρετήριο;
- Μπορείς να χρησιμοποιήσεις loc με το όνομα ευρετηρίου. Για παράδειγμα, df.loc[df.index == 'some_index'].
- Τι γίνεται αν τα ονόματα των στηλών μου περιέχουν κενά ή ειδικούς χαρακτήρες;
- Χρησιμοποιήστε το query() συνάρτηση που μπορεί να χειριστεί τέτοια ονόματα στηλών με backticks. Για παράδειγμα, df.query('`column name` == value').
Τελικές σκέψεις σχετικά με τις τεχνικές επιλογής γραμμής DataFrame
Η επιλογή γραμμών από ένα DataFrame με βάση τις τιμές στηλών στα Panda είναι μια κρίσιμη δεξιότητα για τον χειρισμό δεδομένων. Οι διάφορες μέθοδοι που συζητήθηκαν, συμπεριλαμβανομένης της δυαδικής ευρετηρίασης, query(), isin(), και ευρετηρίαση βάσει ετικετών και ακέραιων θέσεων με loc και iloc, παρέχουν ισχυρά εργαλεία για αποτελεσματικό φιλτράρισμα δεδομένων. Η κυριαρχία αυτών των τεχνικών επιτρέπει καλύτερη ανάλυση δεδομένων και καθαρότερο, πιο διατηρήσιμο κώδικα.