Αυτό το άρθρο δημοσιεύθηκε ως μέρος του Επιστήμη δεδομένων 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', 'Πολύ Καλό', 'Καλό', 'Δίκαιο']
Εκραγεί
Φωτογραφία Edewaa Foster on Unsplash
Το Explode είναι μια συνάρτηση με ενδιαφέρον όνομα. Ας ξεκινήσουμε με ένα παράδειγμα και μετά μια εξήγηση:
df = pd.Series([1, 6, 7, [46, 56, 49], 45, [15, 10, 12]]).to_frame("dirty") >>> df
Η στήλη χαρακτηριστικών έχει δύο σειρές που δηλώνονται με λίστες. Αυτός ο τύπος δεδομένων είναι διαθέσιμος σε έρευνες όπου μερικές ερωτήσεις δέχονται πολλαπλές επιλογές.
>>> df.explode("dirty", ignore_index=True)
Αυτή η συνάρτηση παίρνει ένα κελί με έναν πίνακα τιμών και εκρήγνυται σε πολλές σειρές. Για να διατηρήσετε τη σειρά ενός αριθμητικού ευρετηρίου, χρησιμοποιήστε το ignore_index ως True.
Μεταξύ
Για αριθμητικά χαρακτηριστικά ευρετηρίασης boolean εντός ενός εύρους, ακολουθεί μια εύχρηστη συνάρτηση:
# Αποκτήστε διαμάντια με τιμή μεταξύ 3500 και 3700 δολαρίων διαμάντια[διαμάντια["τιμή"].between(3500, 3700, inclusive="nother")].sample(5)
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()
Μάσκα
Αυτή η λειτουργία βοηθά στην αντικατάσταση τιμών όπου η προσαρμοσμένη συνθήκη δεν ικανοποιείται.
# Δημιουργία δείγματος ηλικιών δεδομένων = 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()
>>> df.at_time(“15:00”)
μεταξύ_χρόνου που χρησιμοποιείται για την ανάκτηση σειρών εντός ενός προσαρμοσμένου εύρους.
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()
Εξάρτημα για γάτες
Τα 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 και χρησιμοποιούνται κατά την κρίση του Συντάκτη.
Σχετικά:
- "
- 100
- 7
- Όλα
- ανάλυση
- analytics
- επιχειρήματα
- άρθρο
- ΚΑΛΎΤΕΡΟΣ
- ενίσχυση
- boston
- χτίζω
- κλήση
- περιπτώσεις
- αλλαγή
- Καθάρισμα
- κωδικός
- Στήλη
- Κοινός
- κοινότητα
- Υπολογίστε
- δημιουργία
- ημερομηνία
- ανάλυση δεδομένων
- επιστημονικά δεδομένα
- επιστήμονας δεδομένων
- Ημερομηνίες
- DID
- Νόσος
- δολάρια
- άκρη
- Excel
- πείραμα
- έκθεση
- Χαρακτηριστικό
- Χαρακτηριστικά
- οικονομικός
- Όνομα
- ακολουθήστε
- μορφή
- λειτουργία
- Παγκόσμιο
- καλός
- Grow
- Χειρισμός
- κινητός
- εδώ
- Ψηλά
- Πως
- Πώς να
- HTTPS
- ευρετήριο
- πληροφορίες
- IT
- Κλειδί
- Γλώσσα
- large
- μάθηση
- Βιβλιοθήκη
- Λίστα
- Λίστες
- φορτίο
- δάνειο
- μάθηση μηχανής
- Χειρισμός
- μάσκα
- Εικόνες / Βίντεο
- Νέες δυνατότητες
- αριθμοί
- Επιλογές
- ΑΛΛΑ
- παράδειγμα
- People
- σωλήνας
- δύναμη
- Ακρίβεια
- Ανώτερο
- παρόν
- τιμή
- Προγραμματισμός
- Python
- RAM
- σειρά
- Ανάγνωση
- Αποτελέσματα
- Επιστήμη
- επιστήμονες
- Σειρές
- Απλούς
- Μέγεθος
- So
- SOLVE
- Εκκίνηση
- καταστήματα
- ώρα
- συμβουλές
- κορυφή
- unicode
- us
- αξία
- Δες
- Ο ΟΠΟΊΟΣ
- εντός
- λειτουργεί
- κόσμος
- συγγραφέας
- γραφή
- X