Δημιουργία διαδραστικού πίνακα ελέγχου χρησιμοποιώντας Bokeh και Panda
Oktober 2, 2022Αυτό το άρθρο δημοσιεύτηκε ως μέρος του Data Science Blogathon

Η σημασία της οπτικοποίησης δεδομένων
Ένας τεράστιος όγκος δεδομένων δημιουργείται κάθε στιγμή λόγω των επιχειρηματικών δραστηριοτήτων στην παγκοσμιοποίηση. Οι εταιρείες εξάγουν χρήσιμες πληροφορίες από τέτοια δεδομένα που δημιουργούνται για να λάβουν σημαντικές επιχειρηματικές αποφάσεις. Η ανάλυση διερευνητικών δεδομένων μπορεί να τους βοηθήσει να οπτικοποιήσουν την τρέχουσα κατάσταση της αγοράς και να προβλέψουν τις πιθανές μελλοντικές τάσεις, να κατανοήσουν τι λένε και τι περιμένουν οι πελάτες τους από το προϊόν, να βελτιώσουν το προϊόν λαμβάνοντας κατάλληλα μέτρα και πολλά άλλα.
Για να επιτευχθεί αυτό, η οπτικοποίηση δεδομένων είναι η λύση, δηλαδή η δημιουργία μιας οπτικά ελκυστικής αναπαράστασης των δεδομένων που αφηγείται μια ενδιαφέρουσα ιστορία γρήγορα αλλά είναι αρκετά απλή για να την κατανοήσουν όλοι οι αναγνώστες.
Μπορεί κανείς να χρησιμοποιήσει το Pandas για την προαναφερθείσα ανάλυση δεδομένων στην Python μέσω των ενσωματωμένων συναρτήσεων γραφικής παράστασης. Αλλά δεν θα ήταν υπέροχο αν μπορείτε να αλληλεπιδράσετε με το γράφημα μέσω λειτουργιών όπως το ζουμ ή το ποντίκι για να σκάψετε λίγο βαθύτερα στα δεδομένα;
Οφέλη από διαδραστικά οικόπεδα και ταμπλό χρησιμοποιώντας Bokeh
Η διαδραστική οπτικοποίηση δεδομένων επιτρέπει στον χρήστη να τροποποιεί άμεσα τα στοιχεία σε μια γραφική γραφική παράσταση αντί να αλλάζει τον κώδικα στο παρασκήνιο. Φανταστείτε ότι αλληλεπιδράτε με μια πλοκή που δείχνει μια τιμή προϊόντος για μια δεκαετία. Τώρα, εάν υπήρχε ένα ρυθμιστικό ή ένα αναπτυσσόμενο μενού για να επιλέξετε τις τιμές για ένα συγκεκριμένο έτος ή έναν μήνα, τότε εσείς ως αναγνώστης θα είχατε ταχύτερες πληροφορίες από το γράφημα και αυτό πολύ γρήγορα χωρίς να επεξεργαστείτε τον κώδικα. Αυτό ακριβώς προσφέρουν οι διαδραστικές πλοκές.
Με διαδραστικές πλοκές, μπορούμε να κατανοήσουμε καλύτερα την ιστορία πίσω από τα δεδομένα. Αυτές οι γραφικές παραστάσεις μας επιτρέπουν να κάνουμε μεγέθυνση σε μια ενδιαφέρουσα παραλλαγή για να εντοπίσουμε τάσεις και παραλλαγές καθώς και να βρούμε συσχετίσεις και συνδέσεις μεταξύ μεταβλητών. Όλα αυτά κάνουν τη διαδικασία εξερεύνησης δεδομένων πιο ουσιαστική.
Εισαγωγή στους πίνακες ελέγχου
Οι πίνακες ελέγχου είναι οπτικά εργαλεία που αφηγούνται την ιστορία που περιέχεται στο σύνολο δεδομένων και επιτρέπουν στους χρήστες να κατανοήσουν γρήγορα τη μεγαλύτερη εικόνα. Αυτές είναι συλλογές διαφορετικών πλοκών δεμένες μεταξύ τους σε διάταξη πλέγματος όπως φαίνεται παρακάτω και αποτελούν μέρος της ιστορίας. Έτσι, μπορούμε να πούμε ότι οι πίνακες εργαλείων είναι ένας κοινός τρόπος παρουσίασης πολύτιμων πληροφοριών σε ένα μόνο μέρος.
Πηγή εικόνας: Συγγραφέας
Βιβλιοθήκες για διαδραστικά οικόπεδα
Τα γραφήματα που δημιουργούνται χρησιμοποιώντας το Matplotlib και το Seaborn είναι στατικά γραφήματα, δηλαδή, ένας χρήστης δεν μπορεί να τα ενημερώσει χωρίς να ενημερώσει τον κώδικα και να τον ξανατρέξει. Έτσι, θα μπορούσαν να χρησιμοποιηθούν βιβλιοθήκες διαδραστικών γραφημάτων – D3 και chart.js, αλλά περιμένουν από τον χρήστη να έχει κάποιες προηγούμενες γνώσεις JavaScript.
Επί του παρόντος, υπάρχουν δύο δημοφιλείς βιβλιοθήκες ανοιχτού κώδικα για τη δημιουργία διαδραστικών οπτικοποιήσεων – η Bokeh και η Plotly. Σε αυτό το άρθρο, θα κάνουμε ένα απλό σεμινάριο χρησιμοποιώντας το Bokeh.
Η Bokeh είναι μια βιβλιοθήκη ανοιχτού κώδικα για διαδραστική απεικόνιση που αποδίδει γραφικά χρησιμοποιώντας HTML και JavaScript. Είναι ένα ισχυρό εργαλείο EDA που μπορεί επίσης να χρησιμοποιηθεί για τη δημιουργία πίνακες εργαλείων και εφαρμογών που βασίζονται στο διαδίκτυο.
Το Bokeh υποστηρίζει γραφήματα γραμμής, γραφήματα πίτας, γραφήματα ράβδων & γραφήματα στοιβαγμένων ράβδων, ιστογράμματα και γραφήματα διασποράς. Η πηγή δεδομένων μετατρέπεται σε ένα αρχείο JSON που γίνεται είσοδος στο BokehJS (βιβλιοθήκη JavaScript) και αυτό καθιστά δυνατή την απόδοση διαδραστικών γραφημάτων και οπτικοποίησης που υποστηρίζονται από το πρόγραμμα περιήγησης.
Η βιβλιοθήκη Bokeh απαιτεί βασική κατανόηση του κώδικα JavaScript για να γράψει προσαρμοσμένες συναρτήσεις για την ενημέρωση των γραφημάτων ανάλογα με τις εισόδους του χρήστη. Για αυτό το άρθρο φιλικό για αρχάριους, χρησιμοποίησα μια βιβλιοθήκη που ονομάζεται Pandas-Bokeh που είναι πιο εύκολο στη χρήση για αρχάριους και επιτρέπει την απόδοση των ίδιων γραφικών Bokeh μέσω της υποστήριξης Back-end για Panda. Για προηγμένες απεικονίσεις, μπορεί κανείς πάντα να χρησιμοποιήσει τη βιβλιοθήκη Bokeh για να ορίσει προσαρμοσμένες απεικονίσεις.
Απαιτείται μία μόνο γραμμή κώδικα για κάθε διαδραστική γραφική παράσταση. Θα δείξω τη λειτουργικότητα της βιβλιοθήκης Pandas-Bokeh και πώς μπορούμε να τη χρησιμοποιήσουμε για να δημιουργήσουμε έναν απλό πίνακα εργαλείων από το σύνολο δεδομένων.
Δημιουργία ενός διαδραστικού πίνακα εργαλείων χρησιμοποιώντας το Bokeh
Ας ξεκινήσουμε εγκαθιστώντας τη βιβλιοθήκη πρώτα χρησιμοποιώντας το pip from PyPI.
pip install pandas_bokeh
Στη συνέχεια, εισάγουμε panda και numpy βιβλιοθήκες. Θυμηθείτε να τα εισαγάγετε πριν από τη βιβλιοθήκη pandas_bokeh.
import numpy as np import pandas as pd import pandas_bokeh
Χρειαζόμαστε επίσης την ακόλουθη εντολή για να εμφανίσουμε τα γραφήματα εξόδου στο σημειωματάριο
# Embedding plots in Jupyter/Colab Notebook pandas_bokeh.output_notebook()
Για να εμφανίσετε τα γραφήματα σε ξεχωριστό HTML, χρησιμοποιήστε αυτήν την εντολή-
# for exporting plots as HTML pandas_bokeh.output_file(filename)
Για αυτό το σεμινάριο φιλικό για αρχάριους, δημιουργούμε ένα απλό τυχαίο σύνολο δεδομένων χρησιμοποιώντας τη βιβλιοθήκη NumPy και το χρησιμοποιούμε για τη δημιουργία του πίνακα εργαλείων.
Ας υποθέσουμε ότι το σύνολο δεδομένων περιέχει δείγματα μετρούμενων τιμών από 4 αισθητήρες σε μια περίοδο 12 μηνών και κάθε τιμή έχει έναν μοναδικό αριθμό αναγνώρισης και μια κατηγορία που σχετίζεται με αυτόν. Αυτό σημαίνει ότι υπάρχουν συνολικά 6 χαρακτηριστικά, π.χ., ‚id‘, ‚month‘, ’sensor_1′, ’sensor_2′, ’sensor_3′ και ‚category‘. Για λόγους απλότητας, εξετάζουμε μόνο 15 δείγματα ή σειρές δεδομένων.
Για να δημιουργήσουμε αυτό το σύνολο δεδομένων, χρησιμοποιούμε τη συνάρτηση np.random από τη βιβλιοθήκη NumPy ως εξής. (Επίσημος σύνδεσμος τεκμηρίωσης για το NumPy: https://numpy.org/doc/stable/reference/random/generator.html)
Στη συνέχεια θα εκτυπώσουμε το σχήμα και θα δούμε τις 5 κορυφαίες σειρές του συνόλου δεδομένων
Κωδικός Python:
Τώρα μπορούμε να σχεδιάσουμε το γράφημα σε έναν πίνακα εργαλείων. Για λόγους επίδειξης, ας σχεδιάσουμε τα ακόλουθα γραφήματα χρησιμοποιώντας τη βιβλιοθήκη pandas_bokeh-
-
Οικόπεδο γραμμής
-
Ραβδόγραμμα
-
Γράφημα στοιβαγμένων ράβδων
-
Διάγραμμα διασποράς
-
Διάγραμμα πίτας
-
Ιστόγραμμα
# Plot1 - Line plot p_line= df_random.groupby(['month']).mean().plot_bokeh(kind="line",y="sensor_2",color="#d01c8b",plot_data_points=True,show_figure=False) # Plot2- Barplot p_bar = df_random.groupby(['month']).mean().plot_bokeh(kind="bar",colormap=colors,show_figure=False)
# Plot3- stacked bar chart df_sensor=df_random.drop(['month'],axis=1) p_stack=df_sensor.groupby(['category']).mean().plot_bokeh(kind='barh', stacked=True,colormap=colors,show_figure=False)
#Plot4- Scatterplot p_scatter = df_random.plot_bokeh(kind="scatter", x="month", y="sensor_2",category="category",colormap=colors,show_figure=False) #Plot5- Pie chart p_pie= df_random.groupby(['category']).mean().plot_bokeh.pie(y='sensor_1',colormap=colors,show_figure=False)
#Plot6- Histogram p_hist=df_sensor.plot_bokeh(kind='hist', histogram_type="stacked",bins=6,colormap=colors, show_figure=False)
Η εκτέλεση αυτών των εντολών θα δημιουργήσει τις γραφικές παραστάσεις, αλλά αυτές δεν θα εμφανίζονται όπως έχουμε ορίσει ’show_figure=False‘. Εφόσον θέλουμε αυτά τα γραφήματα να εμφανίζονται στον πίνακα εργαλείων, χρησιμοποιήσαμε αυτήν την επιλογή.
Στη συνέχεια, ρυθμίσαμε τη διάταξη πλέγματος για τον πίνακα εργαλείων χρησιμοποιώντας την εντολή «pandas_bokeh.plot_grid». Σχεδιάζουμε τα τρία πρώτα οικόπεδα στην πρώτη σειρά και τα υπόλοιπα τρία στη δεύτερη σειρά.
#Make Dashboard with Grid Layout: pandas_bokeh.plot_grid([[p_line, p_bar,p_stack],[p_scatter, p_pie,p_hist]], plot_width=400)
Το ταμπλό μοιάζει με αυτό –
Πηγή εικόνας: Συγγραφέας
Όλες αυτές οι γραφικές παραστάσεις είναι διαδραστικές και σας επιτρέπουν να χρησιμοποιείτε λειτουργίες αιώρησης και ζουμ καθώς και κατηγορίες φίλτρων.
συμπέρασμα
Μέσα από αυτό το άρθρο, είδαμε πώς να δημιουργήσουμε απευθείας διαδραστικά σχέδια Bokeh μέσα στα Panda και να ρυθμίσουμε έναν απλό πίνακα εργαλείων χρησιμοποιώντας τη βιβλιοθήκη Pandas-Bokeh. Η βιβλιοθήκη Pandas-Bokeh είναι εξαιρετικά εύκολη στη χρήση για αρχάριους με βασική κατανόηση της σύνταξης σχεδίασης pandas. Αυτή η βιβλιοθήκη μπορεί σίγουρα να βοηθήσει στο να γίνουν οι απεικονίσεις πιο ευπαρουσίαστες χωρίς την ανάγκη εκμάθησης πρόσθετου κώδικα JavaScript για τη δημιουργία διαδραστικών γραφημάτων. Ελπίζω να απολαύσατε την εξερεύνηση αυτής της βιβλιοθήκης όσο κι εγώ!
Ο κωδικός για αυτό το σεμινάριο είναι διαθέσιμος στο my GitHub Το αποθετήριο και το σημειωματάριο για αυτό είναι προσβάσιμο στο my Kaggle Προφίλ.
Βιογραφικό συγγραφέα:
Ο Devashree έχει πτυχίο M.Eng στην Πληροφορική από τη Γερμανία και ένα υπόβαθρο Επιστήμης Δεδομένων. Ως Μηχανικός, της αρέσει να εργάζεται με αριθμούς και να αποκαλύπτει κρυφές πληροφορίες σε διαφορετικά σύνολα δεδομένων από διαφορετικούς τομείς για να δημιουργήσει όμορφες απεικονίσεις για να προσπαθήσει να λύσει ενδιαφέροντα προβλήματα μηχανικής μάθησης του πραγματικού κόσμου.
Στον ελεύθερο χρόνο της, της αρέσει να μαγειρεύει, να διαβάζει και να γράφει, να ανακαλύπτει νέες βιβλιοθήκες Python-Machine Learning ή να συμμετέχει σε διαγωνισμούς κωδικοποίησης.
Μπορείτε να την ακολουθήσετε LinkedIn, GitHub, Kaggle, Μεσαίο, Κελάδημα.
Τα μέσα που εμφανίζονται σε αυτό το άρθρο σχετικά με τον Διαδραστικό πίνακα ελέγχου που χρησιμοποιεί το Bokeh δεν ανήκουν στο Analytics Vidhya και χρησιμοποιούνται κατά την κρίση του συγγραφέα.