Δημιουργήστε διαδραστικές εφαρμογές Ιστού για έργα επιστήμης δεδομένων και μηχανικής μάθησης χρησιμοποιώντας μόνο Python, όλα χάρη στο Streamlit!
Το Streamlit είναι μια βιβλιοθήκη Python ανοιχτού κώδικα για τη δημιουργία διαδικτυακών εφαρμογών για έργα επιστήμης δεδομένων και μηχανικής μάθησης. Έχει σχεδιαστεί για να χρησιμοποιείται από επιστήμονες δεδομένων και μηχανικούς μηχανικής εκμάθησης που δεν διαθέτουν εκτεταμένες δεξιότητες ανάπτυξης front-end. Έχει μια απλή σύνταξη που σας επιτρέπει να δημιουργείτε διαδραστικές εφαρμογές Ιστού με μερικές γραμμές κώδικα.
Ενσωματώνοντας σύνθετες τεχνικές λεπτομέρειες πίσω από μια φιλική προς τον χρήστη διεπαφή, το Streamlit επιτρέπει στους χρήστες να επικεντρωθούν στην εξερεύνηση και την παρουσίαση των δεδομένων, των πρωτοτύπων ή των μοντέλων τους σε πραγματικό χρόνο. Αυτό το καθιστά πολύτιμο εργαλείο για γρήγορη ανταλλαγή πληροφοριών.
Εγκατάσταση της Βιβλιοθήκης Streamlit
Δημιουργήστε ένα νέο εικονικό περιβάλλον. Αυτό θα διασφαλίσει ότι δεν υπάρχει διένεξη έκδοσης πακέτου μετά την εγκατάσταση
Streamlit. Επειτα χρησιμοποιήστε pip για εγκατάσταση Βελτίωση εκτελώντας την ακόλουθη εντολή:pip install streamlit
Στη συνέχεια, βεβαιωθείτε ότι η εγκατάσταση έχει εγκατασταθεί σωστά.
streamlit --version
Εάν η εγκατάσταση είναι επιτυχής, θα εμφανιστεί η εγκατεστημένη έκδοση Streamlit.
Δημιουργία μιας απλής εφαρμογής καθαρισμού και ανάλυσης δεδομένων
Θα δημιουργήσετε μια απλή διαδικτυακή εφαρμογή για να μάθετε πώς λειτουργεί το Streamlit και τις δυνατότητές του. Αυτή η εφαρμογή θα μπορεί να καθαρίσει ένα μεταφορτωμένο σύνολο δεδομένων, να εκτελέσει ανάλυση δεδομένων και, τέλος, να οπτικοποιήσει τα δεδομένα.
Ο πλήρης πηγαίος κώδικας είναι διαθέσιμος σε α Αποθετήριο GitHub.
Εγκατάσταση και εισαγωγή των απαραίτητων βιβλιοθηκών
Ξεκινήστε εγκαθιστώντας τα Panda, Matplotlib και Seaborn στο ίδιο εικονικό περιβάλλον που εγκαταστήσατε το Streamlit χρησιμοποιώντας την ακόλουθη εντολή:
pip install pandas matplotlib seaborn
Στη συνέχεια, δημιουργήστε ένα νέο σενάριο Python και εισαγάγετε όλες τις εγκατεστημένες βιβλιοθήκες.
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
Αυτό θα σας επιτρέψει να χρησιμοποιήσετε τις λειτουργίες τους στον κώδικά σας.
Μεταφόρτωση συνόλου δεδομένων και εμφάνιση των περιεχομένων του
Στη συνέχεια, ορίστε μια συνάρτηση που θα διαβάζει ένα μεταφορτωμένο σύνολο δεδομένων. Στη συνέχεια, θα επιστρέψει ένα DataFrame εάν η λειτουργία ανάγνωσης είναι επιτυχής. Εάν όχι, θα εμφανιστεί ένα μήνυμα σφάλματος στην πλαϊνή γραμμή. Το σφάλμα παρουσιάζεται όταν το αρχείο δεν είναι έγκυρο αρχείο CSV.
defload_data(uploaded_file):
try:
df = pd.read_csv(uploaded_file)
return df
except Exception as e:
st.sidebar.error('Error occurred while loading the file.'
' Please make sure it is a valid CSV file.')
returnNone
Ορίστε μια άλλη συνάρτηση που θα χρησιμοποιεί το Steamlit για να εμφανίζει το DataFrame σε μορφή πίνακα. Αυτό θα το κάνει μόνο όταν ο χρήστης το ελέγξει Εμφάνιση ακατέργαστων δεδομένων πλαίσιο ελέγχου. Θα χρησιμοποιεί το Streamlit's πλαίσιο ελέγχου, πλαίσιο δεδομένων, και υποκεφαλίδα λειτουργίες.
defexplore_raw_data(df):
st.subheader('Raw Data')
if st.checkbox('Show Raw Data'):
st.dataframe(df)
Έχοντας δημιουργήσει το DataFrame και εμφανίσετε ακατέργαστα δεδομένα, πρέπει τώρα να καθαρίσετε τα δεδομένα, να τα αναλύσετε και, τέλος, να τα οπτικοποιήσετε.
Εκτέλεση καθαρισμού δεδομένων
Ξεκινήστε ορίζοντας μια λειτουργία που θα εκτελεί καθαρισμό δεδομένων. Αυτή η συνάρτηση θα χειριστεί τις τιμές που λείπουν στο DataFrame και τις διπλότυπες σειρές. Το καθαρισμένο DataFrame εμφανίζεται στη συνέχεια στον χρήστη χρησιμοποιώντας st.dataframe λειτουργούν εάν ελέγξουν το Εμφάνιση καθαρισμένων δεδομένων πλαίσιο ελέγχου.
defdata_cleaning(df):
st.header('Data Cleaning')# Remove Missing Values
st.subheader('Handling Missing Values')
df.dropna(inplace=True)
st.write("Missing values removed from the dataset.")# Remove Duplicate Rows
st.subheader('Removing Duplicate Rows')
initial_rows = len(df)
df.drop_duplicates(inplace=True)
final_rows = len(df)
st.write(f"Removed {initial_rows - final_rows} duplicate rows.")
if st.checkbox('Show Cleaned Data'):
st.dataframe(df)
Η συνάρτηση δείχνει επίσης τον αριθμό των διπλότυπων σειρών που αφαιρέθηκαν.
Εκτέλεση Ανάλυσης Δεδομένων
Ορίστε μια συνάρτηση ανάλυσης δεδομένων. Αυτή η συνάρτηση θα εμφανίσει περιγραφικά στατιστικά στοιχεία του DataFrame και θα εμφανίσει τον χάρτη θερμότητας του πίνακα συσχέτισης. Θα αξιοποιήσει το st.pyplot λειτουργία για την εμφάνιση του χάρτη θερμότητας στη διεπαφή χρήστη.
defdata_analysis(df):
st.header('Data Analysis')# Descriptive Statistics
st.subheader('Descriptive Statistics')
st.write(df.describe())
# Correlation Matrix
st.subheader('Correlation Matrix')
corr_matrix = df.corr()
fig, ax = plt.subplots(figsize=(10, 8))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm',
center=0, ax=ax)
st.pyplot(fig)
Μπορείτε να τροποποιήσετε την παραπάνω συνάρτηση για να εκτελέσετε περισσότερη ανάλυση δεδομένων. Αυτό θα σας βοηθήσει να αντλήσετε περισσότερες πληροφορίες από τα δεδομένα σας.
Εκτέλεση Οπτικοποίησης Δεδομένων
Η οπτικοποίηση δεδομένων είναι μια από τις κρίσιμες λειτουργίες της εφαρμογής. Αυτό συμβαίνει επειδή δίνει μια εικόνα των δεδομένων οπτικά με τρόπο φιλικό προς τον άνθρωπο. Αυτή η λειτουργία θα πρέπει επομένως να επιτρέπει στους χρήστες να αλλάζουν την εμφάνιση των γραφικών παραστάσεων.
Για να το πετύχετε αυτό, δημιουργήστε μια συνάρτηση που θα επιτρέπει στους χρήστες να επιλέξουν μια στήλη, να ορίσουν τον αριθμό των δοχείων και να επιλέξουν ένα χρώμα για το ιστόγραμμα. Στη συνέχεια θα δημιουργήσει ένα ιστόγραμμα και μια γραφική παράσταση πλαισίου και θα τα εμφανίσει χρησιμοποιώντας st.pyplot λειτουργία.
defdata_visualization(df):
st.header('Data Visualization')# Histogram
st.subheader('Histogram')
selected_column = st.selectbox("Select a column to visualize:",
df.columns)
num_bins = st.slider("Select number of bins:",
min_value=5, max_value=50, value=20)
plot_color = st.color_picker("Select histogram color", "#1f77b4")
plt.figure(figsize=(8, 6))
plt.hist(df[selected_column], bins=num_bins, edgecolor='black',
color=plot_color, alpha=0.7)
plt.xlabel(selected_column)
plt.ylabel('Frequency')
st.pyplot(plt)
# Box Plot
st.subheader('Box Plot')
selected_column = st.selectbox("Select a column for box plot:",
df.columns)
plot_color = st.color_picker("Select box plot color", "#1f77b4")
plt.figure(figsize=(8, 6))
sns.boxplot(x=df[selected_column], color=plot_color)
plt.xlabel(selected_column)
plt.ylabel('Value')
st.pyplot(plt)
Μέχρι τώρα έχετε όλες τις βασικές λειτουργίες της εφαρμογής.
Συλλογή των σχολίων των χρηστών
Μερικές φορές, μια λειτουργικότητα μπορεί να μην λειτουργεί όπως αναμένεται. Στη συνέχεια, χρειάζεστε έναν τρόπο για να υποβάλουν οι χρήστες τα σχόλιά τους. Ένας τρόπος είναι να επικοινωνήσουν μαζί σας οι χρήστες μέσω email. Το Streamlit παρέχει τη διεπαφή για τη συλλογή των σχολίων του χρήστη, αλλά δεν παρέχει ενσωματωμένη λειτουργία για απευθείας αποστολή email. Ωστόσο, μπορείτε να ενσωματώσετε εξωτερικές βιβλιοθήκες ή υπηρεσίες για την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου από την εφαρμογή σας.
Για να συλλέξετε τα σχόλια του χρήστη, ορίστε μια συνάρτηση για να παρουσιάσετε στον χρήστη μια φόρμα.
deffeedback_form():
st.header('Feedback')
with st.form('Feedback Form'):
email = st.text_input("Your Email")
feedback = st.text_area("Feedback")
submitted = st.form_submit_button("Submit Feedback")
if submitted:
# Here, you can send the feedback to the developer's
# email using external services/APIs
st.success("Thank you for your feedback!")
Αυτή η φόρμα θα συλλέξει το email και τα σχόλια του χρήστη και θα σας τα στείλει μέσω email.
Έλεγχος της ροής του προγράμματός σας και εκτέλεση της εφαρμογής
Τέλος, χρειάζεστε μια κύρια συνάρτηση που θα συνδυάζει όλες αυτές τις λειτουργίες και θα ελέγχει τη ροή του προγράμματος. Αυτή η λειτουργία θα διασφαλίσει επίσης ότι οι χρήστες συμφωνούν με τους όρους απορρήτου των δεδομένων σας προτού η εφαρμογή επεξεργαστεί το μεταφορτωμένο σύνολο δεδομένων τους.
defmain():
st.title('Data Cleaning, Analysis, and Visualization App')st.sidebar.header('Upload Dataset')
uploaded_file = st.sidebar.file_uploader('Upload a CSV file', type=['csv'])agree_terms = st.sidebar.checkbox("I agree to the terms")
if uploaded_file isnotNoneand agree_terms:
df = load_data(uploaded_file)if df isnotNone:
explore_raw_data(df)
data_cleaning(df)
data_analysis(df)
data_visualization(df)
feedback_form()
Μπορείτε να εκτελέσετε το πρόγραμμά σας να εκτελείται ανεξάρτητα ή να το εισαγάγετε ως λειτουργική μονάδα χρησιμοποιώντας την κατασκευή if __name__ == '__main__':.
if __name__ == '__main__':
main()
Προχωρήστε στο τερματικό και πλοηγηθείτε στη διαδρομή στην οποία βρίσκεται το έργο σας. Στη συνέχεια, εκτελέστε την ακόλουθη εντολή για να ξεκινήσετε την εφαρμογή:
streamlit run main.py
Αντικαθιστώ main.py με το πραγματικό όνομα του σεναρίου σας. Μετά την εκτέλεση της εντολής Streamlit θα δημιουργήσει μια τοπική διεύθυνση URL και μια διεύθυνση URL δικτύου. Μπορείτε να χρησιμοποιήσετε οποιαδήποτε από αυτές τις διευθύνσεις URL για να αλληλεπιδράσετε με την εφαρμογή σας.
Η έξοδος του προγράμματος είναι η εξής:
Η δημιουργία διαδραστικών εφαρμογών ιστού για την επιστήμη δεδομένων δεν ήταν ποτέ ευκολότερη. Δεν χρειάζεστε προηγμένες δεξιότητες ανάπτυξης ιστού για να δημιουργήσετε μια διεπαφή χρήστη για την εφαρμογή σας.
Θα πρέπει να μάθετε ακόμα την ανάπτυξη Ιστού;
Εξαρτάται από τους συγκεκριμένους στόχους σας. Αν αναμένετε να δημιουργήσετε πολύπλοκες, πλούσιες σε δυνατότητες διαδικτυακών εφαρμογών που απαιτούν εκτεταμένο χρήστη σχεδιασμός διεπαφής και προηγμένες λειτουργίες, στη συνέχεια θα μπορούσε να είναι η εκμάθηση τεχνολογιών ανάπτυξης ιστού ευεργετικός. Αυτό συμβαίνει επειδή στο Streamlit έχετε περιορισμένο έλεγχο της λεπτομερούς προσαρμογής της εμφάνισης και της συμπεριφοράς της εφαρμογής σας.