צור יישומי אינטרנט אינטראקטיביים לפרויקטים של מדעי נתונים ולמידת מכונה באמצעות Python בלבד, הכל הודות ל-Streamlit!
Streamlit היא ספריית Python בקוד פתוח ליצירת יישומי אינטרנט עבור פרויקטים של מדעי נתונים ולמידת מכונה. זה תוכנן לשימוש על ידי מדעני נתונים ומהנדסי למידת מכונה שאין להם כישורי פיתוח חזיתיים נרחבים. יש לו תחביר פשוט המאפשר לך ליצור אפליקציות אינטרנט אינטראקטיביות עם כמה שורות קוד.
על ידי הטמעת פרטים טכניים מורכבים מאחורי ממשק ידידותי למשתמש, Streamlit מאפשרת למשתמשים להתמקד בחקירה והצגת הנתונים, אבות הטיפוס או המודלים שלהם בזמן אמת. זה הופך אותו לכלי בעל ערך לשיתוף מהיר של תובנות.
התקנת ספריית Streamlit
צור סביבה וירטואלית חדשה. זה יבטיח שלא תהיה התנגשות בגרסת החבילה לאחר ההתקנה מואר. לאחר מכן השתמש ב-pip כדי להתקין ייעול על ידי הפעלת הפקודה הבאה:
pip install streamlit
לאחר מכן, ודא שההתקנה מותקנת כהלכה.
streamlit --version
אם ההתקנה תצליח, תוצג גרסת Streamlit המותקנת.
בניית אפליקציית ניקוי וניתוח נתונים פשוטה
אתה תיצור יישום אינטרנט פשוט כדי ללמוד כיצד Streamlit עובד והתכונות שלו. אפליקציה זו תוכל לנקות מערך נתונים שהועלה, לבצע ניתוח נתונים ולבסוף לדמיין את הנתונים.
קוד המקור המלא זמין ב-a מאגר GitHub.
התקנה וייבוא של הספריות הדרושות
התחל בהתקנת Pandas, 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 תיבת סימון, מסגרת נתונים, ו כותרת משנה פונקציות.
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)
עד עכשיו יש לך את כל פונקציונליות הליבה של האפליקציה.
איסוף המשוב של המשתמשים
לפעמים, ייתכן שפונקציונליות לא תעבוד כצפוי. לאחר מכן אתה צריך דרך עבור המשתמשים לשלוח את המשוב שלהם. דרך אחת היא שהמשתמשים יגיעו אליך באמצעות דואר אלקטרוני. Streamlit מספקת את הממשק לאיסוף המשוב של המשתמש אך אינה מספקת פונקציונליות מובנית לשליחת מיילים ישירות. עם זאת, אתה יכול לשלב ספריות או שירותים חיצוניים כדי לשלוח מיילים מהאפליקציה שלך.
כדי לאסוף את המשוב של המשתמש, הגדר פונקציה כדי להציג למשתמש טופס.
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!")
טופס זה יאסוף את האימייל והמשוב של המשתמש וישלח אותו אליך באמצעות דואר אלקטרוני.
שליטה בזרימת התוכנית שלך והפעלת האפליקציה
לבסוף, אתה צריך פונקציה ראשית שתחבר את כל הפונקציות הללו יחד ותשלוט בזרימת התוכנית. פונקציה זו גם תבטיח שהמשתמשים יסכימו לתנאי פרטיות הנתונים שלך לפני שהאפליקציה תעבד את מערך הנתונים שהועלה.
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 לרשת. אתה יכול להשתמש בכל אחת מכתובות האתרים האלה כדי ליצור אינטראקציה עם האפליקציה שלך.
הפלט של התוכנית הוא כדלקמן:
יצירת אפליקציות אינטרנט אינטראקטיביות למדעי הנתונים מעולם לא הייתה קלה יותר. אינך צריך מיומנויות מתקדמות בפיתוח אתרים כדי ליצור ממשק משתמש עבור האפליקציה שלך.
האם בכל זאת כדאי ללמוד בניית אתרים?
זה תלוי במטרות הספציפיות שלך. אם אתה צופה בניית יישומי אינטרנט מורכבים ועתירי תכונות הדורשים משתמשים נרחבים עיצוב ממשק ופונקציונליות מתקדמות, אז לימוד טכנולוגיות פיתוח אתרים יכול להיות מוֹעִיל. הסיבה לכך היא שב-Streamlit יש לך שליטה מוגבלת על ההתאמה האישית העדינה של המראה וההתנהגות של האפליקציה שלך.