Πώς να κάνετε βρόχο σε DataFrames με pandas iterrows()
Η συνάρτηση Python pandas DataFrame.iterrows() χρησιμοποιείται για την επανάληψη σειρών σε ένα DataFrame pandas. Για κάθε σειρά, παρέχει ένα Python tuple που περιέχει τον δείκτη σειράς και ένα αντικείμενο Series με τα δεδομένα της σειράς.
Ποια είναι η σύνταξη για το pandas iterrows();
Η βασική σύνταξη του pandas DataFrame.iterrows() είναι απλή, καθώς η συνάρτηση δεν δέχεται παραμέτρους:
df.iterrows()pythonΣε αυτό το παράδειγμα κώδικα, df είναι το DataFrame που θέλετε να επαναλάβετε.
Πώς να χρησιμοποιήσετε τη συνάρτηση pandas iterrows()
Η συνάρτηση DataFrame.iterrows() χρησιμοποιείται συνήθως όταν χρειάζεται να επεξεργαστείτε δεδομένα σειρά προς σειρά. Συχνά συνδυάζεται με βρόχους for της Python.
Προσθήκη τιμών σε μια στήλη
Ας δούμε ένα παράδειγμα DataFrame που περιέχει τις στήλες Όνομα, Ηλικία και Βαθμολογία:
import pandas as pd
# Creating an example DataFrame
data = {'Name': ['Anna', 'Ben', 'Clara'],
'Age': [23, 35, 29],
'Score': [88, 92, 85]}
df = pd.DataFrame(data)
print(df)pythonΟ παραπάνω κώδικας έχει ως αποτέλεσμα το ακόλουθο DataFrame:
Name Age Score
0 Anna 23 88
1 Ben 35 92
2 Clara 29 85Τώρα, ας υπολογίσουμε το άθροισμα των βαθμολογιών. Μπορούμε να χρησιμοποιήσουμε το pandas DataFrame.iterrows() για να το κάνουμε αυτό:
# Calculating the total score
total_score = 0
for index, row in df.iterrows():
total_score += row['Score']
print(f"The total score is: {total_score}")pythonΣε αυτό το παράδειγμα, χρησιμοποιήσαμε τη συνάρτηση pandas iterrows() για να κάνουμε βρόχο σε κάθε σειρά, προσθέτοντας τις τιμές στη στήλη Score μία προς μία. Αυτό παράγει το ακόλουθο αποτέλεσμα:
The total score is: 265Όταν χρησιμοποιείτε pandas iterrows(), είναι σημαντικό να μην τροποποιείτε απευθείας τα δεδομένα που επαναλαμβάνετε. Ανάλογα με τον τύπο των δεδομένων, αυτό μπορεί να οδηγήσει σε απροσδόκητα αποτελέσματα και ανεπιθύμητη συμπεριφορά.
Επεξεργασία σειρών με χρήση συνθηκών
Η συνάρτηση iterrows() μπορεί επίσης να χρησιμοποιηθεί για την εφαρμογή συνθηκών σε μεμονωμένες σειρές στο DataFrame σας. Για παράδειγμα, ας υποθέσουμε ότι θέλετε να ανακτήσετε τα ονόματα όλων των ατόμων άνω των 30 ετών στο DataFrame από το τελευταίο παράδειγμα:
# Retrieving names of people over 30 years old
names = []
for index, row in df.iterrows():
if row['Age'] > 30:
names.append(row['Name'])
print(f"People over 30 years old: {names}")pythonΣε αυτό το παράδειγμα, χρησιμοποιήσαμε DataFrame.iterrows() για να περάσουμε κάθε σειρά δεδομένων. Μέσα στον βρόχο for, ελέγχει τις τιμές στη στήλη Age και αποθηκεύει μόνο τα ονόματα των ατόμων άνω των 30 ετών στη λίστα Python names. Αυτό γίνεται χρησιμοποιώντας τη συνάρτηση append() της Python. Εδώ είναι το αποτέλεσμα:
People over 30 years old: ['Ben']Αν και η χρήση DataFrames.iterrows() είναι εύκολη, λάβετε υπόψη ότι ενδέχεται να μην λειτουργεί αποτελεσματικά σε μεγάλα DataFrames. Σε πολλές περιπτώσεις, μπορούν να χρησιμοποιηθούν άλλες επιλογές, όπως apply() ή οι διανυσματικοί υπολογισμοί, για την επίτευξη καλύτερης απόδοσης.