Μάικλ Μακόλεϊ

Πρέπει να γνωρίζετε τις λειτουργίες Pandas για ταξίδι μηχανικής εκμάθησης

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

Αυτό το άρθρο δημοσιεύθηκε ως μέρος του Επιστήμη δεδομένων Blogathon

Εισαγωγή

Λοιπόν, υπάρχει μια καλή πιθανότητα να μπορείτε!

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

Έχει πολλά όμορφα χαρακτηριστικά που λύνουν σπάνιες περιπτώσεις, διαφορετικά σενάρια.

Ένα από τα βασικά μειονεκτήματα των panda είναι ότι παλεύει με μεγάλα σύνολα δεδομένων επειδή τα panda αποθηκεύουν τις δομές δεδομένων τους στη μνήμη RAM, η οποία μπορεί να γίνει ανεπαρκής καθώς μεγαλώνουν τα μεγέθη δεδομένων. Χρησιμοποιήστε το PySpark ή το Dask για αυτό.

Παρόλο που το πακέτο Pandas χρησιμοποιείται ευρέως, εξακολουθούν να υπάρχουν πολλές λειτουργίες που οι άνθρωποι μπορεί να παραβλέψουν, είτε επειδή χρησιμοποιείται λιγότερο είτε επειδή δεν γνωρίζουν την ύπαρξή του. Αυτή η ανάρτηση σκοπεύει να σας συστήσει εκ νέου σε αυτά τα χαρακτηριστικά και να αποδείξει ότι τα Pandas είναι πολύ πιο ικανά από ό,τι γνωρίζατε προηγουμένως.

Pipe

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

Για παράδειγμα, εάν θέλετε να εφαρμόσετε συναρτήσεις όπως drop_duplicates, encode_categoricals, remove_outliers που δέχονται τα ορίσματά του.

df_cleaned = (diamonds.pipe(drop_duplicates). σωλήνας (remove_outliers, ['price', 'carat', 'depth']). pipe(encode_categoricals, ['cut', 'color', 'clarity']) )

Παραγοντοποιήστε

Αυτή η συνάρτηση είναι μια εναλλακτική του Sklearns Label Encoder.

# Προσοχή στο [0] στο τέλος διαμάντια["cut_enc"] = pd.factorize(diamonds["cut"])[0] >>> διαμάντια["cut_enc"].sample(5) 52103 2 39813 0 31843 0 10675 0 6634 0 Όνομα: cut_enc, dtype: int64

Η παραγοντοποίηση έχει ως αποτέλεσμα μια πλειάδα τιμών: την κωδικοποιημένη τιμή και μια λίστα μοναδικών κατηγοριών.

values, unique = pd.factorize(diamonds["cut"], sort=True) >>> values[:10] array([0, 1, 3, 1, 3, 2, 2, 2, 4, 2] , dtype=int64) >>> μοναδικό ['Ιδανικό', 'Premium', 'Πολύ Καλό', 'Καλό', 'Δίκαιο']

Εκραγεί

έκρηξη | λειτουργίες pandas

Φωτογραφία Edewaa Foster on Unsplash

Το Explode είναι μια συνάρτηση με ενδιαφέρον όνομα. Ας ξεκινήσουμε με ένα παράδειγμα και μετά μια εξήγηση:

df = pd.Series([1, 6, 7, [46, 56, 49], 45, [15, 10, 12]]).to_frame("dirty") >>> df
δεδομένα | λειτουργίες pandas
Εικόνα από συγγραφέα

Η στήλη χαρακτηριστικών έχει δύο σειρές που δηλώνονται με λίστες. Αυτός ο τύπος δεδομένων είναι διαθέσιμος σε έρευνες όπου μερικές ερωτήσεις δέχονται πολλαπλές επιλογές.

>>> df.explode("dirty", ignore_index=True)
τα δεδομένα εκρήγνυνται
Εικόνα από συγγραφέα

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

Μεταξύ

Για αριθμητικά χαρακτηριστικά ευρετηρίασης boolean εντός ενός εύρους, ακολουθεί μια εύχρηστη συνάρτηση:

# Αποκτήστε διαμάντια με τιμή μεταξύ 3500 και 3700 δολαρίων διαμάντια[διαμάντια["τιμή"].between(3500, 3700, inclusive="nother")].sample(5)
μεταξύ δεδομένων | λειτουργίες pandas
Εικόνα από συγγραφέα

 

T

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

>>> boston.describe().T.head(10)
μεταθέτω
Εικόνα από συγγραφέα

 

Επιλογές Pandas

Κάποιος μπορεί να χρησιμοποιήσει τις καθολικές ρυθμίσεις των panda που βοηθούν στην προσαρμογή και αλλαγή των προεπιλεγμένων συμπεριφορών.

>>> dir(pd.options) ['υπολογισμός', 'εμφάνιση', 'io', 'mode', 'plotting']

Αποτελείται από 5 ενότητες. Ας δούμε τις διαθέσιμες επιλογές κάτω από την οθόνη. Υπάρχουν πολλές διαθέσιμες επιλογές, αλλά χρησιμοποιώ κυρίως max_columns.

>>> dir(pd.options.display) ['chop_threshold', 'max_columns', 'max_columns', 'max_info_columns', 'max_info_rows', 'max_rows', ... 'precision', 'show_dimensions', 'unicode' , 'πλάτος']

Οι περισσότεροι άνθρωποι χρησιμοποιούν max_columns και ακρίβεια

# Καταργήστε το όριο εμφάνισης του αριθμού των cols pd.options.display.max_columns = Κανένα # Εμφάνιση μόνο 5 αριθμών μετά το δεκαδικό pd.options.display.precision = 5 # απαλλαγείτε από την επιστημονική σημείωση

Convert_dtypes

Όλοι γνωρίζουμε ότι τα πάντα έχουν μια ενοχλητική συνήθεια να επισημαίνουν ορισμένες στήλες ως τύπους δεδομένων αντικειμένων. Αντί να ορίσετε απευθείας τους τύπους τους, μπορείτε να χρησιμοποιήσετε τη μέθοδο μετατροπής dtypes, η οποία προσπαθεί να συναγάγει τον καλύτερο τύπο δεδομένων:

sample = pd.read_csv("data/station_day.csv",usecols=["StationId", "CO", "O3", "AQI_Bucket"]) >>> sample.dtypes Αντικείμενο StationId CO float64 O3 float64 AQI_Bucket αντικείμενο dtype: αντικείμενο >>> sample.convert_dtypes().dtypes StationId string CO float64 O3 float64 AQI_Bucket string dtype: object

Select_dtypes

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

Επιλέξτε μόνο αριθμητικές στήλες με np.number, για παράδειγμα:

# Επιλέξτε μόνο αριθμητικές στήλες diamonds.select_dtypes(include=np.number).head()
επιλέξτε dtypes
Εικόνα από συγγραφέα

 

Μάσκα

Αυτή η λειτουργία βοηθά στην αντικατάσταση τιμών όπου η προσαρμοσμένη συνθήκη δεν ικανοποιείται.

# Δημιουργία δείγματος ηλικιών δεδομένων = pd.Series([55, 52, 50, 66, 57, 59, 49, 60]).to_frame("ages") ages
μάσκα | δεδομένα
Εικόνα από συγγραφέα

Αφού εκτελέσετε την παραπάνω λειτουργία.

εκτελείται κάλυψη
Εικόνα από συγγραφέα

Ελάχ. και μέγ

Αν και τα min και max είναι γνωστά, έχει μερικές καλύτερες ιδιότητες για ορισμένες ακμές.

ευρετήριο = ["Diamonds", "Titanic", "Iris", "Heart Disease", "Loan Default"] βιβλιοθήκες = ["XGBoost", "CatBoost", "LightGBM", "Sklearn GB"] df = pd.DataFrame ( {lib: np.random.uniform(90, 100, 5) για lib σε βιβλιοθήκες}, index=index ) >>> df
ελάχ. και μέγ
Εικόνα από συγγραφέα 

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

>>> df.max(axis=1) Diamonds 99.52684 Titanic 99.63650 Iris 99.10989 Heart Disease 99.31627 Loan Default 97.96728 dtype: float64

Το μεγαλύτερο και το μικρότερο

Το μεγαλύτερο και το μικρότερο είναι χρήσιμο για την προβολή των κορυφαίων τιμών N ή ~(top N) μιας μεταβλητής.

diamonds.nlargest(5, "τιμή")
μεγαλύτερο και μικρότερο
Εικόνα από συγγραφέα
diamonds.nsmallest(5, "τιμή")
το μικρότερο
Εικόνα από συγγραφέα

 

Idxmax και Idxmin

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

Αντίθετα, μπορείτε να χρησιμοποιήσετε το idxmax/idxmin:

>>> diamonds.price.idxmax() 27749 >>> diamonds.carat.idxmin() 14

Αξία_Μετράται

Ένας συνηθισμένος τρόπος για να βρείτε το ποσοστό των τιμών που λείπουν είναι να συνδυάσετε το isnull και το άθροισμα και να διαιρέσετε με το μέγεθος του πίνακα.

Όμως, το value_counts με σχετικά ορίσματα κάνει το ίδιο πράγμα:

στέγαση = pd.read_csv("train.csv") >>> στέγαση["FireplaceQu"].value_counts(dropna=False, normalize=True) NaN 0.47260 Gd 0.26027 TA 0.21438 Fa 0.02260, Po. float0.01644

Συνδετήρας

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

>>> age.clip(50, 60)
δεδομένα για κλιπ
Εικόνα από συγγραφέα

 

At_time και Betweeen_time

Αυτές οι λειτουργίες είναι χρήσιμες κατά την εργασία με χρονοσειρές υψηλής ευαισθησίας.

Το at_time βοηθά στη λήψη τιμών σε μια συγκεκριμένη ημερομηνία ή ώρα.

index = pd.date_range("2021-08-01", periods=100, freq="H") df = pd.DataFrame({"col": list(range(100))}, index=index) >> > df.head()
at_time παράδειγμα | λειτουργίες pandas
Εικόνα από συγγραφέα

>>> df.at_time(“15:00”)

.at_time | λειτουργίες pandas
Εικόνα από συγγραφέα

μεταξύ_χρόνου που χρησιμοποιείται για την ανάκτηση σειρών εντός ενός προσαρμοσμένου εύρους.

from datetime import datetime >>> df.between_time("09:45", "12:00")
μεταξύ_χρόνου
Εικόνα από συγγραφέα

 

Εύρος_ημερομηνιών

Αυτή η λειτουργία βοηθά στη δημιουργία δεικτών χρονοσειρών με συχνότητα εργάσιμων ημερών. Ο οικονομικός κόσμος έχει αυτό το είδος συχνότητας. Έτσι, αυτή η συνάρτηση μπορεί να είναι χρήσιμη κατά τη στιγμή της αναπροσαρμογής χρονοσειρών με τη συνάρτηση reindex.

series = pd.bdate_range("2021-01-01", "2021-01-31") # Περίοδος ενός μήνα >>> len(series) 21

Στο και Ιατ

Αυτά τα δύο αξεσουάρ είναι σημαντικά ταχύτερα από τα loc και iloc. Ωστόσο, έχουν ένα μειονέκτημα. Σας επιτρέπουν να επιλέξετε ή να αντικαταστήσετε μόνο μία τιμή κάθε φορά:

# [index, label] >>> diamonds.at[234, "cut"] 'Ideal' # [index, index] >>> diamonds.iat[1564, 4] 61.2 # Αντικαταστήστε την 16541η σειρά της στήλης τιμής >> > diamonds.at[16541, "τιμή"] = 10000

Argsort

Αυτή η συνάρτηση βοηθά στην εξαγωγή δεικτών που θα ταξινομούν έναν πίνακα χαρακτηριστικών.

tips.reset_index(inplace=True, drop=True) sort_idx = tips["total_bill"].argsort(kind="mergesort") # Τώρα, ταξινομήστε τις "συμβουλές" με βάση το total_bill tips.iloc[sort_idx].head()
arg_sort
Εικόνα από συγγραφέα

 

Εξάρτημα για γάτες

Τα panda επιτρέπουν ενσωματωμένες λειτουργίες του python σε ημερομηνίες και συμβολοσειρές χρησιμοποιώντας αξεσουάρ όπως str ή dt.

>>> diamonds.dtypes καράτια float64 κατηγορία κοπής κατηγορία χρώματος καθαρότητα κατηγορία βάθος float64 τραπέζι float64 τιμή int64 x float64 y float64 z float64 cut_enc int64 dtype: αντικείμενο

Κάποιος μπορεί να χρησιμοποιήσει πολλές ειδικές λειτουργίες χρησιμοποιώντας το cat accessor σε κατηγορικές στήλες. Διαθέτει λειτουργίες όπως κατηγορίες για εύρεση μοναδικών, rename_categories για μετονομασία των χαρακτηριστικών.

διαμάντια["new_cuts"] = διαμάντια["cut"].cat.rename_categories(list("ABCDE")) >>> διαμάντια["new_cuts"].cat.categories Ευρετήριο(['A', 'B', ' C', 'D', 'E'], dtype='αντικείμενο')

Ελέγξτε αυτό για μια περισσότερη λίστα λειτουργιών παρακάτω αξεσουάρ για γάτες.

Squeeze

Το Squeeze είναι μια λειτουργία που χρησιμοποιείται σε σπάνιες αλλά επιβαρυντικές περιστάσεις.

Όταν επιστρέφεται μια μεμονωμένη τιμή από μια συνθήκη που χρησιμοποιείται για την υποσύνολο ενός DataFrame, αυτή είναι μία από αυτές τις περιπτώσεις. Εξετάστε το ακόλουθο σενάριο:

υποσύνολο = diamonds.loc[diamonds.index >> υποσύνολο
τιμή

Ακόμα κι αν υπάρχει μόνο ένα κελί, επιστρέψτε το DataFrame. Δεν είναι βολικό, καθώς πρέπει τώρα να χρησιμοποιήσετε το.loc τόσο με το όνομα της στήλης όσο και με το ευρετήριο για να λάβετε την τιμή.

Δεν χρειάζεται αν ξέρεις να στύβεις. Ένας άξονας μπορεί να αφαιρεθεί από ένα DataFrame ή μια σειρά ενός κελιού χρησιμοποιώντας αυτήν τη λειτουργία. Εξετάστε το ακόλουθο σενάριο:

>>> υποσύνολο.squeeze() 326

Είναι δυνατό να καθοριστεί ο άξονας που θα αφαιρεθεί. Είχε επιστρέψει μόνο βαθμωτό τώρα.

>>> subset.squeeze("στήλες") # ή "γραμμές" 0 326 Όνομα: τιμή, dtype: int64

Σημειώστε ότι αυτή η συνάρτηση λειτουργεί μόνο για Series ή DataFrame με μεμονωμένες τιμές.

Excel_writer

Είναι μια γενική κλάση για τη δημιουργία αρχείων excel και την εγγραφή DataFrame σε αυτό. Σκεφτείτε, έχουμε αυτά τα δύο σύνολα δεδομένων.

# Φόρτωση δύο συνόλων δεδομένων διαμαντιών = sns.load_dataset("diamonds") tips = sns.load_dataset("tips") # Γράψτε στο ίδιο αρχείο excel με το pd.ExcelWriter("data/data.xlsx") ως πρόγραμμα εγγραφής: diamonds.to_excel (writer, sheet_name="diamonds") tips.to_excel(writer, sheet_name="tips")

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

Συμπέρασμα

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

Βιβλιοθήκες όπως το Dask και το datatable εκτοπίζουν σταδιακά τα Panda με τα εντυπωσιακά νέα χαρακτηριστικά τους για το χειρισμό μεγάλων συνόλων δεδομένων, τα Pandas παραμένουν το πιο ευρέως χρησιμοποιούμενο εργαλείο χειρισμού δεδομένων στην κοινότητα της επιστήμης δεδομένων της Python. Λόγω του πόσο καλά ταιριάζει στην τρέχουσα στοίβα SciPy, η βιβλιοθήκη χρησιμεύει ως παράδειγμα για άλλα πακέτα που μπορούν να ακολουθήσουν και να δημιουργήσουν.

Ελπίζω να βρήκατε αυτή την ανάρτηση διορατική και σας ευχαριστώ που διαβάσατε.

Τα μέσα που εμφανίζονται σε αυτό το άρθρο δεν ανήκουν στο Analytics Vidhya και χρησιμοποιούνται κατά την κρίση του Συντάκτη.

Πηγή: https://www.analyticsvidhya.com/blog/2021/08/must-know-pandas-functions-for-machine-learning-journey/

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

Περισσότερα από Ανάλυση Vidhya