Πώς να χρησιμοποιήσετε αποτελεσματικά το Pandas GroupBy

Πώς να χρησιμοποιήσετε αποτελεσματικά το Pandas GroupBy

Κόμβος πηγής: 1941381

Το Pandas είναι μια ισχυρή και ευρέως χρησιμοποιούμενη βιβλιοθήκη ανοιχτού κώδικα για χειρισμό και ανάλυση δεδομένων χρησιμοποιώντας Python. Ένα από τα βασικά χαρακτηριστικά του είναι η δυνατότητα ομαδοποίησης δεδομένων χρησιμοποιώντας τη συνάρτηση groupby, χωρίζοντας ένα DataFrame σε ομάδες που βασίζονται σε μία ή περισσότερες στήλες και στη συνέχεια εφαρμόζοντας διάφορες συναρτήσεις συγκέντρωσης σε κάθε μία από αυτές.

 

Πώς να χρησιμοποιήσετε αποτελεσματικά το Pandas GroupBy
Εικόνα από Unsplash
 

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

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

Οι έννοιες εσωτερικεύονται όταν εξασκούνται καλά και αυτό θα κάνουμε στη συνέχεια, δηλαδή να αποκτήσουμε τα χέρια μας με τη λειτουργία groupby Pandas. Συνιστάται η χρήση α Jupyter Notebook για αυτό το σεμινάριο καθώς μπορείτε να δείτε την έξοδο σε κάθε βήμα.

Δημιουργία Δειγμάτων Δεδομένων

Εισαγάγετε τις ακόλουθες βιβλιοθήκες:

  • Pandas: Για να δημιουργήσετε ένα πλαίσιο δεδομένων και να εφαρμόσετε ομάδα κατά
  • Τυχαία – Για τη δημιουργία τυχαίων δεδομένων
  • Pprint – Για εκτύπωση λεξικών
import pandas as pd
import random
import pprint

 

Στη συνέχεια, θα αρχικοποιήσουμε ένα κενό πλαίσιο δεδομένων και θα συμπληρώσουμε τιμές για κάθε στήλη όπως φαίνεται παρακάτω:

df = pd.DataFrame()
names = [ "Sankepally", "Astitva", "Shagun", "SURAJ", "Amit", "RITAM", "Rishav", "Chandan", "Diganta", "Abhishek", "Arpit", "Salman", "Anup", "Santosh", "Richard",
] major = [ "Electrical Engineering", "Mechanical Engineering", "Electronic Engineering", "Computer Engineering", "Artificial Intelligence", "Biotechnology",
] yr_adm = random.sample(list(range(2018, 2023)) * 100, 15)
marks = random.sample(range(40, 101), 15)
num_add_sbj = random.sample(list(range(2)) * 100, 15) df["St_Name"] = names
df["Major"] = random.sample(major * 100, 15)
df["yr_adm"] = yr_adm
df["Marks"] = marks
df["num_add_sbj"] = num_add_sbj
df.head()

 

Συμβουλή μπόνους – ένας πιο καθαρός τρόπος για να κάνετε την ίδια εργασία είναι να δημιουργήσετε ένα λεξικό με όλες τις μεταβλητές και τις τιμές και αργότερα να το μετατρέψετε σε πλαίσιο δεδομένων.

student_dict = { "St_Name": [ "Sankepally", "Astitva", "Shagun", "SURAJ", "Amit", "RITAM", "Rishav", "Chandan", "Diganta", "Abhishek", "Arpit", "Salman", "Anup", "Santosh", "Richard", ], "Major": random.sample( [ "Electrical Engineering", "Mechanical Engineering", "Electronic Engineering", "Computer Engineering", "Artificial Intelligence", "Biotechnology", ] * 100, 15, ), "Year_adm": random.sample(list(range(2018, 2023)) * 100, 15), "Marks": random.sample(range(40, 101), 15), "num_add_sbj": random.sample(list(range(2)) * 100, 15),
}
df = pd.DataFrame(student_dict)
df.head()

 

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

 

Πώς να χρησιμοποιήσετε αποτελεσματικά το Pandas GroupBy

Δημιουργία Ομάδων

Ας ομαδοποιήσουμε τα δεδομένα κατά το θέμα "Κύρια" και ας εφαρμόσουμε το φίλτρο ομάδας για να δούμε πόσες εγγραφές ανήκουν σε αυτήν την ομάδα.

groups = df.groupby('Major')
groups.get_group('Electrical Engineering')

 

Τέσσερις λοιπόν φοιτητές ανήκουν στην κατεύθυνση Ηλεκτρολόγων Μηχανικών.

 

Πώς να χρησιμοποιήσετε αποτελεσματικά το Pandas GroupBy
 

Μπορείτε επίσης να ομαδοποιήσετε περισσότερες από μία στήλες (Major και num_add_sbj σε αυτήν την περίπτωση). 

groups = df.groupby(['Major', 'num_add_sbj'])

 

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

Ας δημιουργήσουμε ομάδες χρησιμοποιώντας groupby στη στήλη "Major".

groups = df.groupby('Major')

Εφαρμογή άμεσων συναρτήσεων

Ας υποθέσουμε ότι θέλετε να βρείτε τη μέση βαθμολογία σε κάθε Major. Τι θα έκανες? 

  • Επιλέξτε τη στήλη "Σήματα".
  • Εφαρμογή μέσης συνάρτησης
  • Εφαρμογή στρογγυλής συνάρτησης για στρογγυλοποίηση των σημείων σε δύο δεκαδικά ψηφία (προαιρετικό)
groups['Marks'].mean().round(2)

 

Major
Artificial Intelligence 63.6
Computer Engineering 45.5
Electrical Engineering 71.0
Electronic Engineering 92.0
Mechanical Engineering 64.5
Name: Marks, dtype: float64

 

Σύνολο

Ένας άλλος τρόπος για να επιτύχετε το ίδιο αποτέλεσμα είναι χρησιμοποιώντας μια συνάρτηση συγκεντρωτικών στοιχείων όπως φαίνεται παρακάτω:

groups['Marks'].aggregate('mean').round(2)

 

Μπορείτε επίσης να εφαρμόσετε πολλαπλές συναθροίσεις στις ομάδες περνώντας τις συναρτήσεις ως λίστα συμβολοσειρών.

groups['Marks'].aggregate(['mean', 'median', 'std']).round(2)

 

Πώς να χρησιμοποιήσετε αποτελεσματικά το Pandas GroupBy
 

Τι γίνεται όμως αν χρειαστεί να εφαρμόσετε διαφορετική συνάρτηση σε διαφορετική στήλη. Μην ανησυχείς. Μπορείτε επίσης να το κάνετε αυτό περνώντας το ζεύγος {column: function}.

groups.aggregate({'Year_adm': 'median', 'Marks': 'mean'})

 

Πώς να χρησιμοποιήσετε αποτελεσματικά το Pandas GroupBy

Μεταμορφώσεις

Ίσως χρειαστεί να εκτελέσετε προσαρμοσμένους μετασχηματισμούς σε μια συγκεκριμένη στήλη, οι οποίοι μπορούν εύκολα να επιτευχθούν χρησιμοποιώντας το groupby(). Ας ορίσουμε μια τυπική κλίμακα παρόμοια με αυτή που είναι διαθέσιμη στη μονάδα προεπεξεργασίας του sklearn. Μπορείτε να μετατρέψετε όλες τις στήλες καλώντας τη μέθοδο μετασχηματισμού και περνώντας την προσαρμοσμένη συνάρτηση.

def standard_scalar(x): return (x - x.mean())/x.std()
groups.transform(standard_scalar)

 

Πώς να χρησιμοποιήσετε αποτελεσματικά το Pandas GroupBy
 

Σημειώστε ότι το "NaN" αντιπροσωπεύει ομάδες με μηδενική τυπική απόκλιση.

Φίλτρα

Ίσως θελήσετε να ελέγξετε ποια «Κύρια» έχει χαμηλότερη απόδοση, δηλαδή αυτή όπου οι μέσες «Βαθμοί» μαθητή είναι μικρότεροι από 60. Απαιτεί από εσάς να εφαρμόσετε μια μέθοδο φίλτρου σε ομάδες με μια συνάρτηση μέσα σε αυτήν. Ο παρακάτω κώδικας χρησιμοποιεί α συνάρτηση λάμδα για να επιτύχετε τα φιλτραρισμένα αποτελέσματα.

groups.filter(lambda x: x['Marks'].mean() 60)

 

Πώς να χρησιμοποιήσετε αποτελεσματικά το Pandas GroupBy

Όνομα

Σας δίνει την πρώτη του παρουσία ταξινομημένη κατά ευρετήριο.

groups.first()

 

Πώς να χρησιμοποιήσετε αποτελεσματικά το Pandas GroupBy

Περιγράφω

Η μέθοδος "describe" επιστρέφει βασικά στατιστικά στοιχεία όπως count, mean, std, min, max, κ.λπ. για τις δεδομένες στήλες.

groups['Marks'].describe()

 

Πώς να χρησιμοποιήσετε αποτελεσματικά το Pandas GroupBy

Μέγεθος

Το μέγεθος, όπως υποδηλώνει το όνομα, επιστρέφει το μέγεθος κάθε ομάδας ως προς τον αριθμό των εγγραφών.

groups.size()

 

Major
Artificial Intelligence 5
Computer Engineering 2
Electrical Engineering 4
Electronic Engineering 2
Mechanical Engineering 2
dtype: int64

Count και Nunique

Το "Count" επιστρέφει όλες τις τιμές ενώ το "Nunique" επιστρέφει μόνο τις μοναδικές τιμές σε αυτήν την ομάδα.

groups.count()

 

Πώς να χρησιμοποιήσετε αποτελεσματικά το Pandas GroupBy

 

groups.nunique()

 

Πώς να χρησιμοποιήσετε αποτελεσματικά το Pandas GroupBy

Μετονομασία

Μπορείτε επίσης να μετονομάσετε το όνομα των συγκεντρωτικών στηλών σύμφωνα με τις προτιμήσεις σας.

groups.aggregate("median").rename( columns={ "yr_adm": "median year of admission", "num_add_sbj": "median additional subject count", }
)

 

Πώς να χρησιμοποιήσετε αποτελεσματικά το Pandas GroupBy
 

  • Να είστε σαφείς σχετικά με το σκοπό της ομάδας: Προσπαθείτε να ομαδοποιήσετε τα δεδομένα κατά μία στήλη για να λάβετε τον μέσο όρο μιας άλλης στήλης; Ή προσπαθείτε να ομαδοποιήσετε τα δεδομένα κατά πολλές στήλες για να λάβετε τον αριθμό των γραμμών σε κάθε ομάδα;
  • Κατανοήστε την ευρετηρίαση του πλαισίου δεδομένων: Η συνάρτηση groupby χρησιμοποιεί το ευρετήριο για να ομαδοποιήσει τα δεδομένα. Εάν θέλετε να ομαδοποιήσετε τα δεδομένα ανά στήλη, βεβαιωθείτε ότι η στήλη έχει οριστεί ως ευρετήριο ή μπορείτε να χρησιμοποιήσετε το .set_index()
  • Χρησιμοποιήστε την κατάλληλη συνάρτηση συγκεντρωτικών στοιχείων: Μπορεί να χρησιμοποιηθεί με διάφορες συναρτήσεις συγκέντρωσης όπως mean(), sum(), count(), min(), max()
  • Χρησιμοποιήστε την παράμετρο as_index: Όταν οριστεί σε False, αυτή η παράμετρος λέει στα panda να χρησιμοποιούν τις ομαδοποιημένες στήλες ως κανονικές στήλες αντί για ευρετήριο.

Μπορείτε επίσης να χρησιμοποιήσετε το groupby() σε συνδυασμό με άλλες συναρτήσεις panda, όπως pivot_table(), crosstab() και cut() για να εξαγάγετε περισσότερες πληροφορίες από τα δεδομένα σας.

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

 
 
Vidhi Chugh είναι ένας στρατηγός τεχνητής νοημοσύνης και ένας ηγέτης ψηφιακού μετασχηματισμού που εργάζεται στη διασταύρωση προϊόντων, επιστημών και μηχανικής για την κατασκευή κλιμακούμενων συστημάτων μηχανικής μάθησης. Είναι βραβευμένη ηγέτης καινοτομίας, συγγραφέας και διεθνής ομιλήτρια. Είναι σε μια αποστολή να εκδημοκρατίσει τη μηχανική μάθηση και να σπάσει τη φρασεολογία για να είναι όλοι μέρος αυτού του μετασχηματισμού.
 

Σφραγίδα ώρας:

Περισσότερα από KDnuggets