Pandas Groupby Aggregate

Pandas Groupby Aggregate



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

  • Δυνατός : Εφαρμόζοντας ορισμένες συνθήκες σε σύνολα δεδομένων, μπορούμε να χωρίσουμε τα δεδομένα σε ομάδες.
  • Εφαρμογή : Μια διαδικασία όπου εφαρμόζουμε ξεχωριστά μια μέθοδο σε κάθε ομάδα.
  • Συνδυάζοντας : Μια διαδικασία για το συνδυασμό διαφόρων συνόλων δεδομένων για να σχηματιστεί μια δομή δεδομένων μετά τη χρήση της μεθόδου groupby().

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







Γιατί τα Panda παρέχουν μια ποικιλία μεθόδων συγκέντρωσης δεδομένων;

Τα Panda προσφέρουν ένα ευρύ φάσμα χαρακτηριστικών και λειτουργιών που βοηθούν στην ανάλυση και τη συγκέντρωση δεδομένων. Η χρήση των μεθόδων pivot(), groupby() και pivot_table(), για παράδειγμα, η καθεμία προσφέρει μια διαφορετική προοπτική για το πώς θα συγκεντρωθούν τα δεδομένα. Παρέχουν πρακτικές προσεγγίσεις για την εκτέλεση διαφόρων εργασιών αντί να επανασυσκευάζονται απλώς.



Πώς να χρησιμοποιήσετε τη συνάρτηση .agg() στα Pandas

Ένας απλός μέσος όρος ή άθροισμα τιμών είναι η συνάρτηση συνάθροισης που χρησιμοποιείται πιο συχνά. Μπορείτε να χρησιμοποιήσετε τη στήλη ενός πλαισίου δεδομένων ή πολλές στήλες για να καλέσετε μια συγκεντρωτική συνάρτηση. Θα δείτε πολλούς τρόπους για τη συγκέντρωση δεδομένων χρησιμοποιώντας τη μέθοδο ομαδοποίησης Pandas. Για να δείξουμε πόσο πιο εύκολη είναι η διαδικασία, ας δούμε μερικά παραδείγματα που δίνονται παρακάτω. Βασικές μαθηματικές πράξεις όπως άθροισμα, ελάχιστο, μέγιστο, μέση απόλυτη απόκλιση, τυπική απόκλιση, μέση, διάμεσος, διακύμανση και γινόμενο είναι από τις πιο συχνά χρησιμοποιούμενες ενσωματωμένες συναρτήσεις συνάθροισης. Για να συνοψίσουμε τα δεδομένα, μπορούμε να συνδυάσουμε το groupby και τη συνάρτηση agg().



Παράδειγμα # 01: Προσδιορίστε το άθροισμα των στηλών ομαδοποιώντας τα δεδομένα χρησιμοποιώντας τη συνάρτηση groupby.agg()

Θα δημιουργήσουμε πρώτα ένα πλαίσιο δεδομένων χρησιμοποιώντας τη συνάρτηση pd.DataFrame() έτσι ώστε να ομαδοποιήσουμε τα δεδομένα από τη στήλη ή τις στήλες του πλαισίου δεδομένων και στη συνέχεια να προσδιορίσουμε τη μέση τιμή τους. Πρέπει να εισαγάγουμε τις ενότητες των panda και τη βιβλιοθήκη numpy πριν δημιουργήσουμε το πλαίσιο δεδομένων.





Όπως μπορείτε να δείτε, χρησιμοποιήσαμε το λεξικό pandas για να δημιουργήσουμε το πλαίσιο δεδομένων μας. Το πλαίσιο δεδομένων df έχει τέσσερις στήλες: 'ασθενής', 'ομάδα', 'ηλικία' και 'μπουκάλια αίματος'. Οι τιμές δεδομένων ('Ali', 'John', 'Mike', 'Mike', 'John', 'Ali', 'Ali', 'Mike') περιέχονται στη στήλη 'ασθενής' ενώ οι τιμές δεδομένων ('A ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) και ( 2, 3, 1, 1, 2, 3, 2, 1) περιέχονται στις στήλες «ομάδα», «ηλικία» και «μπουκάλια_αίματος» αντίστοιχα. Ας υποθέσουμε ότι πρέπει να προσδιορίσουμε το άθροισμα των τιμών στη στήλη 'blood_bottles' ομαδοποιώντας τις τιμές στη στήλη 'group'.



Για τα δεδομένα ομάδας «A», το άθροισμα των τιμών των «blood_bottles» είναι 7. Για τις τιμές ομάδας «B» και «C», το άθροισμα των τιμών των «blood_bottles» είναι 2 και 6, αντίστοιχα. Μπορούμε επίσης να ομαδοποιήσουμε πολλές στήλες για να καθορίσουμε το άθροισμα για κάθε ομάδα.

Όπως μπορεί να παρατηρηθεί, έχουμε περάσει μια λίστα με ετικέτες στηλών, π.χ., ['patient', 'group'] μέσα στη συνάρτηση groupby() για να δημιουργήσουμε τις ομάδες των κατηγοριών σε κάθε καθορισμένη στήλη. Για κάθε ομάδα καθορισμένων στηλών, προσδιορίσαμε το άθροισμα των τιμών στο «blood_bottles». Για παράδειγμα, το 'Ali' βρίσκεται στις τιμές της στήλης 'ομάδα' A και C. Στην ομάδα Α, το άθροισμα των τιμών 'blood_bottles' για τον Ali είναι 2 και 5 στην ομάδα 'C'.

Παράδειγμα # 02: Εφαρμογή πολλαπλών συναρτήσεων σε μια στήλη δεδομένων πλαισίου χρησιμοποιώντας τη συνάρτηση groupby.agg()

Μπορούν να εφαρμοστούν πολλές συναθροίσεις με τη μέθοδο 'groupby()' χρησιμοποιώντας τη συνάρτηση pandas agg(). Μια λίστα με δυνατότητα κλήσης μπορεί να μεταβιβαστεί στη μέθοδο. Ας δούμε πώς μπορούμε να συγκεντρώσουμε τα δεδομένα μας χρησιμοποιώντας τις ενσωματωμένες μεθόδους της βιβλιοθήκης numpy. Σε αντίθεση με το προηγούμενο παράδειγμα, θα εφαρμόσουμε πολλαπλές συναρτήσεις σε μία στήλη του πλαισίου δεδομένων. Η συνάρτηση pd.DataFrame() θα χρησιμοποιηθεί για τη δημιουργία ενός πλαισίου δεδομένων για αυτό με τουλάχιστον μία στήλη που περιέχει αριθμητικές τιμές.


Το απαιτούμενο πλαίσιο δεδομένων έχει δημιουργηθεί με μία αριθμητική στήλη, δηλαδή «σημεία» με τιμές 41, 40, 35, 39, 49, 31, 34 και 42. Υπάρχουν ακόμη 3 στήλες «φοιτητής», «θέματα» και «πτυχίο» στο πλαίσιο δεδομένων μας, το οποίο μπορεί να χωριστεί σε ομάδες χρησιμοποιώντας τη συνάρτηση groupby(). Οι τιμές στη στήλη 'σπουδαστές' και 'θέματα' είναι ('Harry', 'Ron', 'Harry', 'Lana', 'Sam', 'Ron', 'Lana', 'Max') και ('C++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C++', 'AI'). Ενώ ο βαθμός στήλης περιέχει τις τιμές δεδομένων ως συμβολοσειρές, δηλαδή, («Ms», «Bs», «Bs», «Ms», «Ms», «Ms», «Bs», «Bs»). Ας υποθέσουμε ότι πρέπει να ομαδοποιήσουμε τα δεδομένα των στηλών «θέματα» και να προσδιορίσουμε τόσο τον μέσο όρο όσο και το άθροισμα των «σημείων» στηλών για κάθε ομαδοποιημένα δεδομένα.

Έχουμε καθορίσει το όνομα της στήλης «θέματα» ως συμβολοσειρά μέσα στη συνάρτηση groupby() για τη μετατροπή των δεδομένων σε ομάδες κατηγοριών. Για τη στήλη σημείων, χρησιμοποιήσαμε τη μέθοδο agg() και μέσα στη συνάρτηση agg() έχουμε καθορίσει τις numpy συναρτήσεις np.sum και np.mean για να βρούμε το άθροισμα και τον μέσο όρο των σημείων κάθε ομάδας δεδομένων σε θέματα στήλης. Το άθροισμα και η μέση τιμή για την τιμή ομάδας «AI» είναι 91 και 45,5, αντίστοιχα. Το άθροισμα των σημείων για την τιμή «C++» είναι 75 και η μέση τιμή είναι 37,5. Για την ομάδα JAVA, το άθροισμα των σημείων είναι 71 και η μέση τιμή είναι 35,5, ενώ το άθροισμα και η μέση τιμή για την Python είναι 74 και 37, αντίστοιχα.

Παράδειγμα # 03: Εφαρμογή πολλαπλών συναρτήσεων στις πολλαπλές στήλες του πλαισίου δεδομένων χρησιμοποιώντας τη συνάρτηση groupby.agg()

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

Υπάρχουν τέσσερις στήλες στο πλαίσιο δεδομένων που δημιουργήθηκε πρόσφατα με τα ονόματα 'player', 'least_score', 'highest_score' και 'location'. Στη στήλη 'player', έχουμε αποθηκεύσει τα ονόματα μερικών παικτών ως τιμές δεδομένων συμβολοσειρών ('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' Fin'), στη στήλη 'least_score' υπάρχουν οι χαμηλότερες βαθμολογίες παικτών για ορισμένους αγώνες (12, 34, 2, 21, 9, 1, 0, 34), ενώ στη στήλη 'highest_score' έχουμε τις υψηλότερες βαθμολογίες των παικτών (12, 34, 2, 21, 9, 1, 0, 34) και στη στήλη 'τοποθεσία' υπάρχουν τα ονόματα των χώρων όπου οι παίκτες έχουν παίξει τους αγώνες τους ('Γαλλία', 'Αγγλία', 'Ντουμπάι', ' Ντουμπάι», «Αγγλία», «Γαλλία», «Ντουμπάι», «Γαλλία»).

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

Μέσα στη συνάρτηση agg(), περάσαμε ένα λεξικό python {‘highest_score’ : ‘sum’, ‘least_score’ : ‘mean’} για να βρούμε το άθροισμα και τη μέση τιμή για μια καθορισμένη στήλη σε κάθε ομάδα. Μπορεί να φανεί ότι η ομαδοποιημένη τιμή Alex έχει το άθροισμα της τιμής «highest_score» 132 και ο μέσος όρος της τιμής «least_score» είναι 17,5. Για το 'Fin' το άθροισμα των τιμών είναι 199 και ο μέσος όρος είναι 18,3333333 στις στήλες 'highest_score' και 'least_score' αντίστοιχα. Η ομαδική τιμή Leo έχει αθροιστική αξία 180 στο 'highest_score' και μέση τιμή 7,666667 στο 'least_score'.

συμπέρασμα

Σε αυτό το σεμινάριο, έχουμε συζητήσει τις συναρτήσεις groupby() και συνάθροισης στα panda. Έχουμε επίσης συζητήσει τον τρόπο χρήσης της συνάρτησης groupby.agg(). Υλοποιήσαμε τρία παραδείγματα σε αυτό το άρθρο για να σας μάθουμε πώς να χρησιμοποιείτε μια ενιαία συνάρτηση συνάθροισης σε μια στήλη πλαισίου δεδομένων ομαδοποιώντας τα δεδομένα μεμονωμένων και πολλαπλών στηλών, πώς να εφαρμόζετε πολλαπλές συναρτήσεις συγκέντρωσης σε μια στήλη ενός πλαισίου δεδομένων και πώς να εφαρμόζετε πολλαπλές συναρτήσεις συνάθροισης στις πολλαπλές στήλες του πλαισίου δεδομένων χρησιμοποιώντας τη συνάρτηση groupby.agg().