برنامه های کاربردی وب تعاملی برای پروژه های علم داده و یادگیری ماشین تنها با استفاده از پایتون ایجاد کنید، همه اینها به لطف Streamlit!
Streamlit یک کتابخانه پایتون منبع باز برای ایجاد برنامه های کاربردی وب برای پروژه های علم داده و یادگیری ماشین است. این برای استفاده توسط دانشمندان داده و مهندسان یادگیری ماشینی طراحی شده است که مهارتهای توسعه پیشرفته گستردهای ندارند. دارای یک نحو ساده است که به شما امکان می دهد برنامه های وب تعاملی را با چند خط کد ایجاد کنید.
با کپسولهسازی جزئیات فنی پیچیده در پشت یک رابط کاربرپسند، Streamlit به کاربران اجازه میدهد تا روی کاوش و ارائه دادهها، نمونههای اولیه یا مدلهای خود در زمان واقعی تمرکز کنند. این آن را به ابزاری ارزشمند برای به اشتراک گذاری سریع بینش تبدیل می کند.
نصب کتابخانه Streamlit
یک محیط مجازی جدید ایجاد کنید. این اطمینان حاصل می کند که پس از نصب Streamlit هیچ تضادی در نسخه بسته وجود ندارد. سپس از pip برای نصب Streamlit با اجرای دستور زیر استفاده کنید:
pip install streamlit
سپس، بررسی کنید که نصب به درستی نصب شده است.
streamlit --version
اگر نصب با موفقیت انجام شود، نسخه Streamlit نصب شده نمایش داده می شود.
ساخت یک برنامه ساده برای پاکسازی و تجزیه و تحلیل داده ها
شما یک برنامه وب ساده برای یادگیری نحوه کار Streamlit و ویژگی های آن ایجاد خواهید کرد. این اپلیکیشن قادر خواهد بود مجموعه داده های آپلود شده را تمیز کند، تجزیه و تحلیل داده ها را انجام دهد و در نهایت داده ها را تجسم کند.
کد منبع کامل در یک مخزن GitHub موجود است.
نصب و واردات کتابخانه های مورد نیاز
با نصب Pandas، Matplotlib و Seaborn در همان محیط مجازی که Streamlit را با استفاده از دستور زیر نصب کردید، شروع کنید:
pip install pandas matplotlib seaborn
سپس یک اسکریپت پایتون جدید ایجاد کنید و تمام کتابخانه های نصب شده را وارد کنید.
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
این به شما امکان می دهد از عملکردهای آنها در کد خود استفاده کنید.
آپلود یک مجموعه داده و نمایش محتویات آن
سپس تابعی را تعریف کنید که مجموعه داده آپلود شده را بخواند. سپس در صورت موفقیت آمیز بودن عملیات خواندن، یک DataFrame برمی گرداند. در غیر این صورت یک پیغام خطا در نوار کناری نمایش داده می شود. این خطا زمانی رخ می دهد که فایل یک فایل CSV معتبر نباشد.
def load_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.')
return None
تابع دیگری را تعریف کنید که از Steamlit برای نمایش DataFrame در قالب جدولی استفاده می کند. تنها زمانی این کار را انجام میدهد که کاربر کادر نمایش دادههای خام را علامت بزند. از چک باکس، دیتافریم و توابع زیر سربرگ Streamlit استفاده می کند.
def explore_raw_data(df):
st.subheader('Raw Data')
if st.checkbox('Show Raw Data'):
st.dataframe(df)
پس از ایجاد DataFrame و نمایش داده های خام، اکنون باید داده ها را تمیز کنید، آن ها را تجزیه و تحلیل کنید و در نهایت آن ها را تجسم کنید.
انجام پاکسازی داده ها
با تعریف تابعی که پاکسازی داده ها را انجام می دهد، شروع کنید. این تابع مقادیر از دست رفته در DataFrame و ردیف های تکراری را کنترل می کند. پس از آن DataFrame پاک شده با استفاده از تابع st.dataframe به کاربر نشان داده میشود، در صورتی که کادر انتخاب Show Cleaned Data را علامت بزند.
def data_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 برای نمایش نقشه حرارتی در رابط کاربری استفاده می کند.
def data_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)
برای انجام تجزیه و تحلیل داده های بیشتر می توانید تابع فوق را تغییر دهید. این به شما کمک می کند تا بینش بیشتری از داده های خود بدست آورید.
انجام بصری سازی داده ها
تجسم داده ها یکی از عملکردهای مهم برنامه است. این به این دلیل است که بینش بصری داده ها را به شیوه ای انسان پسند می دهد. بنابراین این قابلیت باید به کاربران اجازه دهد تا ظاهر طرح ها را تغییر دهند.
برای انجام این کار، تابعی ایجاد کنید که به کاربران امکان می دهد ستونی را انتخاب کنند، تعداد bin ها را تنظیم کنند و رنگی را برای هیستوگرام انتخاب کنند. سپس یک هیستوگرام و یک نمودار جعبه تولید می کند و آنها را با استفاده از تابع st.pyplot نمایش می دهد.
def data_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 رابطی را برای جمعآوری بازخورد کاربر فراهم میکند، اما عملکرد داخلی برای ارسال مستقیم ایمیلها را ارائه نمیکند. با این حال، می توانید کتابخانه ها یا خدمات خارجی را برای ارسال ایمیل از برنامه خود ادغام کنید.
برای جمع آوری بازخورد کاربر، تابعی را برای ارائه فرم به کاربر تعریف کنید.
def feedback_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!")
این فرم ایمیل و بازخورد کاربر را جمع آوری کرده و از طریق ایمیل برای شما ارسال می کند.
کنترل جریان برنامه و اجرای برنامه
در نهایت، شما به یک تابع اصلی نیاز دارید که همه این توابع را در کنار هم قرار دهد و جریان برنامه را کنترل کند. این عملکرد همچنین اطمینان حاصل می کند که کاربران قبل از پردازش داده های آپلود شده توسط برنامه، با شرایط حریم خصوصی داده های شما موافقت می کنند.
def main():
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 is not None and agree_terms:
df = load_data(uploaded_file)
if df is not None:
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 شما کنترل محدودی بر سفارشی سازی دقیق ظاهر و رفتار برنامه خود دارید.