Όταν προσπαθείτε να κατανοήσετε ένα μεγάλο DataFrame στα Pandas, ίσως χρειαστεί να το υποορίσετε ανά στήλες και σειρές. Σε αυτό το σεμινάριο θα δείξουμε τις πιο διαδεδομένες περιπτώσεις χρήσης κατάτμησης στηλών του DataFrame σας.
Θα ξεκινήσουμε με τη ρύθμιση του παραδείγματος DataFrame, το οποίο θα κάνουμε εκτελώντας τον ακόλουθο κώδικα Python στο αγαπημένο μας περιβάλλον (για απλότητα, χρησιμοποιώ το Anaconda και το Jupyter Lab).
import pandas as pd # import the pandas library
languages = ({"language": [ "Python", "C-Sharp", "Javascript","PHP"] ,
"avg_difficulty_level": [3, 2, 2, 1],
"avg_salary": [120, 100, 120, 80],
"applications": [10,15,14,20]})
# Now let's convert our dict to a DataFrame
languages = pd.DataFrame.from_dict(languages)
Τώρα, ας δούμε τις πρώτες σειρές του Dataframe χρησιμοποιώντας τη μέθοδο head().
languages.head()
Όπως μπορείτε να δείτε, αυτό είναι ένα πολύ απλό DataFrame που θα χρησιμοποιήσουμε ως παράδειγμα σε αυτήν την ανάρτηση:
|
Γλώσσα |
μέσο_επίπεδο_δυσκολίας |
μέσος_μισθός |
εφαρμογές |
0 |
Πύθων |
3 |
120 |
10 |
1 |
C-Sharp |
2 |
100 |
15 |
2 |
Javascript |
2 |
120 |
14 |
3 |
PHP |
1 |
80 |
20 |
Φιλτράρισμα μιας στήλης
Θα ξεκινήσουμε με την απλούστερη περίπτωση, που είναι η υποσύνολο μιας στήλης από το σύνολο δεδομένων μας. Εκτελώντας την ακόλουθη εντολή θα δημιουργηθεί ένα αντικείμενο σειράς:
Με όνομα / ετικέτα
languages["language"]
Η έξοδος είναι μια σειρά:
0 Python
1 C-Sharp
2 Javascript
3 PHP
Όνομα: γλώσσα, dtype: αντικείμενο
type(languages["language"])
pandas.core.series.Series
Κατά ευρετήριο
Η ακόλουθη εντολή θα επιστρέψει επίσης μια σειρά που περιέχει την πρώτη στήλη
languages.iloc[:,0]
Επιλογή πολλαπλών στηλών
Από όνομα
Κατά τη μεταβίβαση μιας λίστας στηλών, τα Pandas θα επιστρέψουν ένα DataFrame που περιέχει μέρος των δεδομένων.
languages[["language", "applications"]]
|
Γλώσσα |
εφαρμογές |
0 |
Πύθων |
10 |
1 |
C-Sharp |
15 |
2 |
Javascript |
14 |
3 |
PHP |
20 |
Με ετικέτα (με loc)
df.loc[:,["language","applications"]]
Το αποτέλεσμα θα είναι παρόμοιο.
Κατά ευρετήριο
Τώρα ας ανακτήσουμε πολλές στήλες χρησιμοποιώντας το ευρετήριο:
languages.iloc[: ,[0,3]]
|
Γλώσσα |
εφαρμογές |
0 |
Πύθων |
10 |
1 |
C-Sharp |
15 |
2 |
Javascript |
14 |
3 |
PHP |
20 |
Κατά συνθήκη
Σε αυτήν την περίπτωση, θα δείξουμε απλώς στις στήλες ποιο όνομα ταιριάζει με μια συγκεκριμένη έκφραση. Θα χρησιμοποιήσουμε την πολύ εύχρηστη μέθοδο φίλτρου :
languages.filter(axis = 1, like="avg")
Σημειώσεις:
- μπορούμε επίσης να φιλτράρουμε με μια συγκεκριμένη τυπική έκφραση (regex).
- Μπορούμε να εφαρμόσουμε την παράμετρο axis=0 για να φιλτράρουμε κατά συγκεκριμένη τιμή γραμμής.
Φιλτράρετε συγκεκριμένες σειρές κατά συνθήκη
Ακολουθεί ένας αρκετά απλός τρόπος για να υποκαθορίσετε το DataFrame σύμφωνα με μια τιμή γραμμής:
languages[(languages["applications"] > 15)]
Έχουμε μόνο ένα αποτέλεσμα:
languages[(languages["applications"] > 15)]
|
Γλώσσα |
μέσο_επίπεδο_δυσκολίας |
μέσος_μισθός |
εφαρμογές |
3 |
PHP |
1 |
80 |
20 |