Τα Panda Μετατρέπουν τις Κατηγορικές Τιμές σε Τιμές Int

Ta Panda Metatrepoun Tis Kategorikes Times Se Times Int



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

Μέθοδοι Μετατροπής Κατηγορικού σε Εσωτερ

Οι τεχνικές που είναι διαθέσιμες στα 'pandas' για τη μετατροπή των κατηγορικών τιμών σε int ενός DataFrame παρέχονται εδώ:

    • Μέθοδος DataFrame.replace().
    • Μέθοδος DataFrame.apply(factorize()).

Θα χρησιμοποιήσουμε αυτές τις μεθόδους σε αυτό το άρθρο και θα εξηγήσουμε λεπτομερώς πώς να χρησιμοποιήσετε και τις δύο μεθόδους στα 'pandas'.







Παράδειγμα # 1: Χρήση της μεθόδου Pandas Replace().

Οι κατηγορίες κατηγοριών σε ένα DataFrame μπορούν να μετατραπούν σε int χρησιμοποιώντας τη μέθοδο pandas 'DataFrame.replace()'. Εδώ θα μάθουμε να χρησιμοποιούμε αυτή τη μέθοδο.



Χρησιμοποιήσαμε το εργαλείο «Spyder» για την βέλτιστη εκτέλεση αυτής της τεχνικής στην Python. Για να ξεκινήσετε τη σύνταξη του σεναρίου, ανοίξτε ένα νέο αρχείο Python στο εργαλείο 'Spyder'. Η πιο σημαντική απαίτηση για τη συγγραφή του σεναρίου είναι η εισαγωγή κατάλληλων βιβλιοθηκών. Εφόσον πρέπει να εφαρμόσουμε μια μέθοδο 'pandas', θα έχουμε τη 'εισαγωγή pandas ως pd' για πρόσβαση στις δυνατότητες των 'pandas'. Στη συνέχεια ξεκινάμε τον βασικό μας κώδικα Python. Έχουμε δημιουργήσει ένα DataFrame χρησιμοποιώντας τη μέθοδο 'pd.DataFrame()'. Το DataFrame αρχικοποιείται από τρεις στήλες 'Όνομα', 'Πτυχίο' και 'Εισόδημα'. Όλες οι στήλες του DataFrame αποθηκεύουν το ίδιο μήκος τιμών.



Η πρώτη στήλη, 'Όνομα', έχει οκτώ τιμές που είναι 'bush', 'albert', 'harry', 'peter', 'emma', 'newton', 'smith' και 'elsa'. Η δεύτερη στήλη, 'Πτυχίο', αποθηκεύει επίσης οκτώ κατηγορικές τιμές, οι οποίες είναι 'BS', 'MS', 'MS', 'BS', 'BS', 'BS', 'MS' και 'MS'. Η τελευταία στήλη 'Έσοδα' έχει οκτώ ακέραιες τιμές '60000', '80000', '75000', '45000', '56000', '65000', '55000' και '70000'. Έχουμε δημιουργήσει ένα αντικείμενο DataFrame 'staff' για να αποθηκεύουμε την έξοδο της κλήσης της συνάρτησης 'pd.DataFrame()'. Για να εμφανίσουμε το αρχικό μας DataFrame, χρησιμοποιήσαμε τη μέθοδο 'print()' με το όνομα 'staff' του DataFrame ως παράμετρό της στην τελική γραμμή του σεναρίου.






Για να προβάλετε την έξοδο στο τερματικό, χρησιμοποιήστε το κουμπί 'Run File' στο εργαλείο 'Spyder' ή πατήστε τα πλήκτρα 'Shift+Enter'. Η έξοδος που εμφανίζεται στο τερματικό δείχνει ένα DataFrame με τρεις στήλες που έχουν δημιουργηθεί με επιτυχία.


Τώρα, το DataFrame μας έχει κατασκευαστεί, πρέπει να εφαρμόσουμε την απαιτούμενη τεχνική σε αυτό. Η μέθοδος pandas 'DataFrame.replace()' θα χρησιμοποιηθεί για τη μετατροπή των κατηγορικών τιμών μιας καθορισμένης στήλης σε ακέραιες τιμές, ώστε οι μηχανές να μπορούν να τις κάνουν αναγνώσιμες.



Δώσαμε στο όνομα του DataFrame το όνομα της συγκεκριμένης στήλης, τις τιμές της οποίας πρέπει να αντικαταστήσουμε, το οποίο είναι 'προσωπικό['πτυχίο']'. Θέλουμε οι τιμές της στήλης «Βαθμός», που έχει κατηγορικές τιμές, να αντικατασταθούν από ακέραιες. Στη συνέχεια, καλείται η μέθοδος '.replace()'. Το έχουμε περάσει σε δύο σετ. το πρώτο περιέχει τις δύο κατηγορικές τιμές '['BS', 'MS']' που εξάγαμε από τη στήλη 'Degree'. Όπως μπορείτε να δείτε, η στήλη 'Degree' χρησιμοποιεί αυτές τις δύο τιμές επανειλημμένα. Αν είχαμε τρίτη τιμή, πρέπει να το είχαμε αναφέρει και αυτό. Το δεύτερο σύνολο έχει δύο τιμές int '[0, 1]', οι οποίες θα αντικαταστήσουν τις τιμές του πρώτου συνόλου αντίστοιχα. Η άλλη παράμετρος, 'inplace', ορίζεται ως 'True', επιτρέποντας την αντικατάσταση τιμών. Εάν οριστεί σε 'False', θα απενεργοποιήσει την αντικατάσταση. Τέλος, χρησιμοποιήσαμε τη μέθοδο “print()” για να εμφανίσουμε το ενημερωμένο DataFrame “staff”.


Το DataFrame που προκύπτει έχει ακέραιες τιμές στη στήλη 'Degree'. Η τιμή 'BS' αντικαθίσταται από '0s' και η τιμή 'MS' αντικαθίσταται από το '1s'.


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


Εδώ, πήραμε τους τύπους δεδομένων του DataFrame μας. Μπορούμε να δούμε ότι ο τύπος δεδομένων της στήλης 'Degree' έχει αλλάξει σε 'int64'.

Παράδειγμα # 2: Χρησιμοποιώντας τη μέθοδο Pandas apply().

Η άλλη μέθοδος που μας παρείχαν τα panda είναι η συνάρτηση 'DataFrame.apply()' για τη μετατροπή κατηγορικών τιμών σε ακέραιους αριθμούς. Στο προηγούμενο παράδειγμα, μάθαμε να μετατρέπουμε μια κατηγορική στήλη σε ακέραιο. Θα δούμε τώρα πώς να μετατρέψουμε όλες τις κατηγορικές στήλες στο DataFrame σε int.

Ξεκινώντας με την πρακτική εφαρμογή, πρέπει να εισάγουμε την βασική βιβλιοθήκη για αυτή τη μέθοδο, που είναι τα pandas. Χρησιμοποιήσαμε το σενάριο 'εισαγωγή pandas ως pd' για να εισάγουμε panda στο αρχείο μας Python στο εργαλείο 'Spyder', το οποίο θα μας επιτρέψει να έχουμε πρόσβαση σε μονάδες panda χρησιμοποιώντας το 'pd'. Χρησιμοποιήσαμε τη συνάρτηση 'pd.DataFrame()' για την κατασκευή ενός DataFrame.

Αυτό το DataFrame έχει τέσσερις στήλες 'group', 'position', 'scores' και 'assists'. Κάθε στήλη αποθηκεύει 9 τιμές. Οι τιμές της στήλης «ομάδα» είναι «X», «X», «Y», «X», «Y», «Y», «Y», «X» και «Y». Η στήλη «θέση» έχει 9 τιμές που είναι «A», «C», «D», «A», «C», «B», «B», «D» και «B». Η στήλη «βαθμολογίες» έχει ακέραιες τιμές ως «4», «8», «7», «10», «9», «5», «7», «3» και «23». Η τελευταία στήλη, «βοηθά», έχει τιμές «10», «2», «3», «9», «3», «7», «4», «2» και «9».

Δημιουργήσαμε ένα αντικείμενο DataFrame 'prog' και του αναθέσαμε την έξοδο της κλήσης της μεθόδου 'pd.DataFrame()'. Έτσι, το προκύπτον πλαίσιο DataFrame που δημιουργείται από το 'pd.DataFrame()' θα αποθηκευτεί στο 'prog'. Τώρα, μπορούμε να έχουμε πρόσβαση στο DataFrame χρησιμοποιώντας αυτό το αντικείμενο. Για να προβάλουμε αυτό το DataFrame, χρησιμοποιήσαμε τη μέθοδο 'print()' με το αντικείμενο DataFrame 'prog' ως παράμετρό του.


Όταν εκτελεστεί το προηγούμενο πρόγραμμα Python, ένα DataFrame με τέσσερις στήλες θα εμφανιστεί στο τερματικό.


Για να μετατρέψουμε πολλές κατηγορικές στήλες σε ακέραιους αριθμούς, ακολουθήσαμε αυτήν την τεχνική. Πρώτα πρέπει να επιλέξουμε όλες τις στήλες που περιέχουν τύπο δεδομένων αντικειμένου χρησιμοποιώντας τη μέθοδο pandas “DataFrame.select_dtypes().columns”. Όταν το χρησιμοποιήσουμε στο σενάριό μας όπως απαιτείται, θα είναι 'prog.select_dtypes(['object']).στήλες'. Θα επιλέξει όλες τις στήλες που έχουν τον τύπο δεδομένων «αντικείμενο» στο «prog» DataFrame. Έχουμε δημιουργήσει μια μεταβλητή 'concate_col' για την αποθήκευση της εξόδου αυτής της μεθόδου. Μπορούμε τώρα να προσπελάσουμε τις στήλες τύπου δεδομένων «αντικείμενο» απλά χρησιμοποιώντας αυτήν τη μεταβλητή «concat_col».

Τώρα, για να μετατρέψουμε αυτές τις στήλες σε ακέραιους αριθμούς, χρησιμοποιήσαμε τα panda 'DataFrame.apply()' με τη μέθοδο 'pd.factorize()'. Χρησιμοποιήσαμε τη μεταβλητή 'concat_col' με το όνομα DataFrame και στη συνέχεια καλείται η μέθοδος '.apply()'. Ανάμεσα στην παρένθεση της μεθόδου «.apply», καλέσαμε τη μέθοδο «pd.factorize()» όπου το «x» μπορεί να είναι οποιαδήποτε τιμή από το «prog» DataFrame με τύπο δεδομένων «αντικείμενο». Έτσι, ολόκληρη αυτή η γραμμή κώδικα γράφεται ως 'prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])'. Η μέθοδος παραγοντοποίησης θα λάβει μια τιμή με έναν τύπο δεδομένων «αντικείμενο» και μετατρέψτε τον σε «int». Η τελική έξοδος μπορεί να εμφανιστεί καλώντας τη συνάρτηση «print()» περνώντας τη μεταβλητή «prog» ως παράμετρό της.


Στο ενημερωμένο DataFrame, μπορούμε να παρατηρήσουμε ότι οι τιμές των στηλών 'ομάδα' και 'θέση' ήταν αρχικά κατηγορικές, δηλ. αντικείμενο. Ακόμα στο ενημερωμένο DataFrame εξόδου, και οι δύο στήλες έχουν ακέραιες τιμές. Στη στήλη 'ομάδα', το 'Χ' αντικαθίσταται από το '0' και το 'Y' από το '1'. Ενώ η στήλη «θέση» αντικαθίσταται από «0», «Γ» από «1», «Δ» από «2» και «Β» από «3».


Τώρα, ας επαληθεύσουμε τους ενημερωμένους τύπους δεδομένων.


Όλες οι ακόλουθες στήλες έχουν τύπο δεδομένων 'int64'.

συμπέρασμα

Ο οδηγός μας περιστρέφεται γύρω από τη μετατροπή κατηγορικών τιμών σε αριθμητικές τιμές, ώστε να μπορούν να γίνουν κατανοητές από τα μηχανήματα, καθώς ο τύπος δεδομένων του αντικειμένου δεν μπορεί να επεξεργαστεί από αυτούς. Σας παρουσιάσαμε τις δύο προσεγγίσεις που διαθέτει η βιβλιοθήκη 'pandas' για να λάβετε τον απαιτούμενο τύπο δεδομένων. Επίσης, με την πρακτική εφαρμογή παραδειγμάτων κωδικών που εκτελούνται στο εργαλείο 'Spyder', μοιραστήκαμε το αποτέλεσμα κάθε παραδείγματος. Τέλος, αναλύσαμε κάθε βήμα για να πετύχουμε το επιθυμητό αποτέλεσμα.