21 KiB
Οπτικοποίηση Ποσοτήτων
![]() |
---|
Οπτικοποίηση Ποσοτήτων - Σκίτσο από @nitya |
Σε αυτό το μάθημα θα εξερευνήσετε πώς να χρησιμοποιήσετε μία από τις πολλές διαθέσιμες βιβλιοθήκες Python για να μάθετε πώς να δημιουργείτε ενδιαφέρουσες οπτικοποιήσεις γύρω από την έννοια της ποσότητας. Χρησιμοποιώντας ένα καθαρισμένο σύνολο δεδομένων για τα πουλιά της Μινεσότα, μπορείτε να μάθετε πολλά ενδιαφέροντα στοιχεία για την τοπική άγρια ζωή.
Κουίζ πριν το μάθημα
Παρατηρήστε το άνοιγμα φτερών με το Matplotlib
Μια εξαιρετική βιβλιοθήκη για τη δημιουργία τόσο απλών όσο και σύνθετων γραφημάτων και διαγραμμάτων διαφόρων ειδών είναι το Matplotlib. Σε γενικές γραμμές, η διαδικασία σχεδίασης δεδομένων χρησιμοποιώντας αυτές τις βιβλιοθήκες περιλαμβάνει τον εντοπισμό των τμημάτων του dataframe που θέλετε να στοχεύσετε, την εκτέλεση οποιωνδήποτε μετασχηματισμών στα δεδομένα, την ανάθεση τιμών στους άξονες x και y, την απόφαση για το είδος του γραφήματος που θα εμφανιστεί και στη συνέχεια την εμφάνιση του γραφήματος. Το Matplotlib προσφέρει μια μεγάλη ποικιλία οπτικοποιήσεων, αλλά για αυτό το μάθημα, ας επικεντρωθούμε σε εκείνες που είναι πιο κατάλληλες για την οπτικοποίηση ποσοτήτων: γραφήματα γραμμών, scatterplots και ραβδογράμματα.
✅ Χρησιμοποιήστε το καλύτερο γράφημα που ταιριάζει στη δομή των δεδομένων σας και την ιστορία που θέλετε να πείτε.
- Για ανάλυση τάσεων με την πάροδο του χρόνου: γραμμή
- Για σύγκριση τιμών: ράβδος, στήλη, πίτα, scatterplot
- Για να δείξετε πώς τα μέρη σχετίζονται με το σύνολο: πίτα
- Για να δείξετε τη διανομή δεδομένων: scatterplot, ράβδος
- Για να δείξετε τάσεις: γραμμή, στήλη
- Για να δείξετε σχέσεις μεταξύ τιμών: γραμμή, scatterplot, bubble
Αν έχετε ένα σύνολο δεδομένων και χρειάζεται να ανακαλύψετε πόσο από ένα συγκεκριμένο στοιχείο περιλαμβάνεται, μία από τις πρώτες εργασίες που έχετε να κάνετε είναι να επιθεωρήσετε τις τιμές του.
✅ Υπάρχουν πολύ καλά 'cheat sheets' διαθέσιμα για το Matplotlib εδώ.
Δημιουργήστε ένα γράφημα γραμμής για τις τιμές ανοίγματος φτερών των πουλιών
Ανοίξτε το αρχείο notebook.ipynb
στη ρίζα του φακέλου αυτού του μαθήματος και προσθέστε ένα κελί.
Σημείωση: τα δεδομένα βρίσκονται στη ρίζα αυτού του αποθετηρίου στον φάκελο
/data
.
import pandas as pd
import matplotlib.pyplot as plt
birds = pd.read_csv('../../data/birds.csv')
birds.head()
Αυτά τα δεδομένα είναι ένας συνδυασμός κειμένου και αριθμών:
Όνομα | Επιστημονικό Όνομα | Κατηγορία | Τάξη | Οικογένεια | Γένος | Κατάσταση Διατήρησης | Ελάχιστο Μήκος | Μέγιστο Μήκος | Ελάχιστη Μάζα Σώματος | Μέγιστη Μάζα Σώματος | Ελάχιστο Άνοιγμα Φτερών | Μέγιστο Άνοιγμα Φτερών | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Μαυροκοιλιά πάπια | Dendrocygna autumnalis | Πάπιες/Χήνες/Υδρόβια | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
1 | Καστανόχρωμη πάπια | Dendrocygna bicolor | Πάπιες/Χήνες/Υδρόβια | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
2 | Χήνα του χιονιού | Anser caerulescens | Πάπιες/Χήνες/Υδρόβια | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
3 | Χήνα του Ross | Anser rossii | Πάπιες/Χήνες/Υδρόβια | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
4 | Μεγαλόσωμη λευκομέτωπη χήνα | Anser albifrons | Πάπιες/Χήνες/Υδρόβια | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
Ας ξεκινήσουμε σχεδιάζοντας μερικά από τα αριθμητικά δεδομένα χρησιμοποιώντας ένα βασικό γράφημα γραμμής. Υποθέστε ότι θέλετε μια εικόνα του μέγιστου ανοίγματος φτερών για αυτά τα ενδιαφέροντα πουλιά.
wingspan = birds['MaxWingspan']
wingspan.plot()
Τι παρατηρείτε αμέσως; Φαίνεται να υπάρχει τουλάχιστον μία ακραία τιμή - αυτό είναι αρκετά μεγάλο άνοιγμα φτερών! Ένα άνοιγμα φτερών 2300 εκατοστών ισοδυναμεί με 23 μέτρα - υπάρχουν Πτερόδακτυλοι που περιφέρονται στη Μινεσότα; Ας ερευνήσουμε.
Ενώ θα μπορούσατε να κάνετε μια γρήγορη ταξινόμηση στο Excel για να βρείτε αυτές τις ακραίες τιμές, που πιθανότατα είναι τυπογραφικά λάθη, συνεχίστε τη διαδικασία οπτικοποίησης δουλεύοντας μέσα από το γράφημα.
Προσθέστε ετικέτες στον άξονα x για να δείξετε τι είδους πουλιά εξετάζονται:
plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.xlabel('Birds')
plt.xticks(rotation=45)
x = birds['Name']
y = birds['MaxWingspan']
plt.plot(x, y)
plt.show()
Ακόμα και με την περιστροφή των ετικετών στις 45 μοίρες, υπάρχουν πάρα πολλές για να διαβαστούν. Ας δοκιμάσουμε μια διαφορετική στρατηγική: ετικέτα μόνο τις ακραίες τιμές και τοποθετήστε τις ετικέτες μέσα στο γράφημα. Μπορείτε να χρησιμοποιήσετε ένα scatter chart για να δημιουργήσετε περισσότερο χώρο για την επισήμανση:
plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)
for i in range(len(birds)):
x = birds['Name'][i]
y = birds['MaxWingspan'][i]
plt.plot(x, y, 'bo')
if birds['MaxWingspan'][i] > 500:
plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12)
plt.show()
Τι συμβαίνει εδώ; Χρησιμοποιήσατε το tick_params
για να κρύψετε τις κάτω ετικέτες και στη συνέχεια δημιουργήσατε έναν βρόχο πάνω από το σύνολο δεδομένων των πουλιών σας. Σχεδιάζοντας το γράφημα με μικρές στρογγυλές μπλε κουκκίδες χρησιμοποιώντας bo
, ελέγξατε για οποιοδήποτε πουλί με μέγιστο άνοιγμα φτερών πάνω από 500 και εμφανίσατε την ετικέτα του δίπλα στην κουκκίδα αν ισχύει. Μετατοπίσατε τις ετικέτες λίγο στον άξονα y (y * (1 - 0.05)
) και χρησιμοποιήσατε το όνομα του πουλιού ως ετικέτα.
Τι ανακαλύψατε;
Φιλτράρετε τα δεδομένα σας
Τόσο ο Φαλακρός Αετός όσο και το Γεράκι της Πεδιάδας, ενώ πιθανότατα είναι πολύ μεγάλα πουλιά, φαίνεται να έχουν λανθασμένες ετικέτες, με ένα επιπλέον 0
να έχει προστεθεί στο μέγιστο άνοιγμα φτερών τους. Είναι απίθανο να συναντήσετε έναν Φαλακρό Αετό με άνοιγμα φτερών 25 μέτρα, αλλά αν συμβεί, παρακαλώ ενημερώστε μας! Ας δημιουργήσουμε ένα νέο dataframe χωρίς αυτές τις δύο ακραίες τιμές:
plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.xlabel('Birds')
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)
for i in range(len(birds)):
x = birds['Name'][i]
y = birds['MaxWingspan'][i]
if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']:
plt.plot(x, y, 'bo')
plt.show()
Φιλτράροντας τις ακραίες τιμές, τα δεδομένα σας είναι τώρα πιο συνεκτικά και κατανοητά.
Τώρα που έχουμε ένα καθαρότερο σύνολο δεδομένων τουλάχιστον όσον αφορά το άνοιγμα φτερών, ας ανακαλύψουμε περισσότερα για αυτά τα πουλιά.
Ενώ τα γραφήματα γραμμών και scatter μπορούν να εμφανίσουν πληροφορίες σχετικά με τις τιμές δεδομένων και τις κατανομές τους, θέλουμε να σκεφτούμε τις τιμές που υπάρχουν σε αυτό το σύνολο δεδομένων. Θα μπορούσατε να δημιουργήσετε οπτικοποιήσεις για να απαντήσετε στις ακόλουθες ερωτήσεις σχετικά με την ποσότητα:
Πόσες κατηγορίες πουλιών υπάρχουν και ποιοι είναι οι αριθμοί τους;
Πόσα πουλιά είναι εξαφανισμένα, απειλούμενα, σπάνια ή κοινά;
Πόσα υπάρχουν από τα διάφορα γένη και τάξεις στην ορολογία του Linnaeus;
Εξερευνήστε τα ραβδογράμματα
Τα ραβδογράμματα είναι πρακτικά όταν χρειάζεται να δείξετε ομαδοποιήσεις δεδομένων. Ας εξερευνήσουμε τις κατηγορίες πουλιών που υπάρχουν σε αυτό το σύνολο δεδομένων για να δούμε ποια είναι η πιο κοινή ανά αριθμό.
Στο αρχείο notebook, δημιουργήστε ένα βασικό ραβδόγραμμα.
✅ Σημείωση, μπορείτε είτε να φιλτράρετε τα δύο πουλιά με ακραίες τιμές που εντοπίσαμε στην προηγούμενη ενότητα, να επεξεργαστείτε το τυπογραφικό λάθος στο άνοιγμα φτερών τους, είτε να τα αφήσετε για αυτές τις ασκήσεις που δεν εξαρτώνται από τις τιμές ανοίγματος φτερών.
Αν θέλετε να δημιουργήσετε ένα ραβδόγραμμα, μπορείτε να επιλέξετε τα δεδομένα στα οποία θέλετε να εστιάσετε. Τα ραβδογράμματα μπορούν να δημιουργηθούν από ακατέργαστα δεδομένα:
birds.plot(x='Category',
kind='bar',
stacked=True,
title='Birds of Minnesota')
Αυτό το ραβδόγραμμα, ωστόσο, είναι δυσανάγνωστο επειδή υπάρχουν πάρα πολλά μη ομαδοποιημένα δεδομένα. Πρέπει να επιλέξετε μόνο τα δεδομένα που θέλετε να σχεδιάσετε, οπότε ας δούμε το μήκος των πουλιών με βάση την κατηγορία τους.
Φιλτράρετε τα δεδομένα σας ώστε να περιλαμβάνουν μόνο την κατηγορία του πουλιού.
✅ Παρατηρήστε ότι χρησιμοποιείτε το Pandas για τη διαχείριση των δεδομένων και στη συνέχεια αφήνετε το Matplotlib να κάνει τη σχεδίαση.
Επειδή υπάρχουν πολλές κατηγορίες, μπορείτε να εμφανίσετε αυτό το γράφημα κάθετα και να προσαρμόσετε το ύψος του για να ληφθούν υπόψη όλα τα δεδομένα:
category_count = birds.value_counts(birds['Category'].values, sort=True)
plt.rcParams['figure.figsize'] = [6, 12]
category_count.plot.barh()
Αυτό το ραβδόγραμμα δείχνει μια καλή εικόνα του αριθμού των πουλιών σε κάθε κατηγορία. Με μια ματιά, βλέπετε ότι ο μεγαλύτερος αριθμός πουλιών σε αυτήν την περιοχή ανήκει στην κατηγορία Πάπιες/Χήνες/Υδρόβια. Η Μινεσότα είναι η 'γη των 10.000 λιμνών', οπότε αυτό δεν είναι έκπληξη!
✅ Δοκιμάστε μερικές άλλες μετρήσεις σε αυτό το σύνολο δεδομένων. Σας εκπλήσσει κάτι;
Σύγκριση δεδομένων
Μπορείτε να δοκιμάσετε διαφορετικές συγκρίσεις ομαδοποιημένων δεδομένων δημιουργώντας νέους άξονες. Δοκιμάστε μια σύγκριση του MaxLength ενός πουλιού, με βάση την κατηγορία του:
maxlength = birds['MaxLength']
plt.barh(y=birds['Category'], width=maxlength)
plt.rcParams['figure.figsize'] = [6, 12]
plt.show()
Τίποτα δεν είναι εκπληκτικό εδώ: τα κολιμπρί έχουν το μικρότερο MaxLength σε σύγκριση με τους Πελεκάνους ή τις Χήνες. Είναι καλό όταν τα δεδομένα έχουν λογική!
Μπορείτε να δημιουργήσετε πιο ενδιαφέρουσες οπτικοποιήσεις ραβδογραμμάτων υπερθέτοντας δεδομένα. Ας υπερθέσουμε το Ελάχιστο και Μέγιστο Μήκος σε μια δεδομένη κατηγορία πουλιών:
minLength = birds['MinLength']
maxLength = birds['MaxLength']
category = birds['Category']
plt.barh(category, maxLength)
plt.barh(category, minLength)
plt.show()
Σε αυτό το γράφημα, μπορείτε να δείτε το εύρος ανά κατηγορία πουλιών του Ελάχιστου Μήκους και του Μέγιστου Μήκους. Μπορείτε να πείτε με ασφάλεια ότι, δεδομένων αυτών των δεδομένων, όσο μεγαλύτερο το πουλί, τόσο μεγαλύτερο το εύρος μήκους του. Εντυπωσιακό!
🚀 Πρόκληση
Αυτό το σύνολο δεδομένων για τα πουλιά προσφέρει μια πληθώρα πληροφοριών για διαφορετικούς τύπους πουλιών μέσα σε ένα συγκεκριμένο οικοσύστημα. Ψάξτε στο διαδίκτυο και δείτε αν μπορείτε να βρείτε άλλα σύνολα δεδομένων που αφορούν πουλιά. Εξασκηθείτε στη δημιουργία γραφημάτων και διαγραμμάτων γύρω από αυτά τα πουλιά για να ανακαλύψετε γεγονότα που δεν γνωρίζατε.
Κουίζ μετά το μάθημα
Ανασκόπηση & Αυτομελέτη
Αυτό το πρώτο μάθημα σας έδωσε κάποιες πληροφορίες για το πώς να χρησιμοποιείτε το Matplotlib για την οπτικοποίηση ποσοτήτων. Κάντε κάποια έρευνα γύρω από άλλους τρόπους εργασίας με σύνολα δεδομένων για οπτικοποίηση. Το Plotly είναι ένα εργαλείο που δεν θα καλύψουμε σε αυτά τα μαθήματα, οπότε ρίξτε μια ματιά σε αυτά που μπορεί να προσφέρει.
Εργασία
Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.