فهرست مطالب
در این مقاله میخواهیم درباره یاد بگیریم streamlit چیست، باقابلیتهای مختلف آن آشنا شویم و نشان دهیم که چطور با کمترین زحمت بهترین داشبوردها را طراحی کنیم. داشبوردهایی که بهشدت تعاملی بوده و کاربر از کار با آن لذت میبرد. البته برای ایجاد چنین داشبوردهایی به دانش فنی بالا نیازی نداریم و آسان و سریع و تنها با چند خط کد، وب اپلیکیشنهای فوقالعاده تولید خواهیم کرد.
ابتدا کتابخانه Streamlit را معرفی میکنیم و از قابلیتهای آن خواهیم گفت. سپس ابزارکهای مختلف آن را معرفی کرده و نحوه نصب Streamlit را یاد میگیریم.
Streamlit چیست؟
معمولاً ارائه و گزارش نتایج آزمایشهای علم داده / یادگیری ماشین میتواند کار سختی باشد. درحالیکه درگذشته، یک ارائه پاورپوینت یا یک فایل LaTex برای نمایش پروژهمان کافی بود؛ اما امروزه با محبوبیتی که وبسایتها دارند، بهتر است پروژه خود را در بستر یک سایت نمایش دهیم.
این همان جایی است که کتابخانه Streamlit وارد عمل میشود. Streamlit یک فریمورک متنباز پایتون است که این امکان را به ما میدهد تا وبسایتهای زیبا و تعاملی برای پروژههای یادگیری ماشین و علم داده بسازیم، بدون آنکه به داشتن مهارتهای طراحی وب، نیاز باشد.
با Streamlit میتوانیم بهراحتی و تنها با اضافهکردن تعدادی تابع، یک وبسایت ایجاد کنیم و پروژه یادگیری ماشین خودمان را در قالب یک وب اپلیکیشن ارائه دهیم.
از قابلیتهای مهم کتابخانه Streamlit پویایی آن است به صورتی که با تغییر دادهها، نمودارها و گزارشها بهروزرسانی میشوند.
در حال حاضر کتابخانه Streamlit قابلیت نمایش متون، داده ها، کد و همچنین بسیاری از ویجت (ابزارک)های تعاملی را فراهم میکند. همچنین به راحتی می توانیم از بسیاری از کتابخانههای رسم نمودار مثل Matplotlib ، Vega-Lite و Plotly در وب اپلیکیشنها استفاده کنیم.
چگونه با کتابخانه Plotly نمودار رسم کنیم و نتایج کارمان را جذابتر ارائه دهیم؟
در این مقاله، اصول اولیه استفاده از Streamlit برای ساخت داشبوردهای زیبای پایتونی را آموزش میدهیم.
نحوه نصب کتابخانه Streamlit
مانند کتابخانههای پایتونی دیگر، کتابخانه Streamlit را میتوان با استفاده از PIP نصب کرد:
pip install streamlit
پس از نصب Streamlit با اجرای برنامه hello world چک میکنیم همه چیز بهدرستی کار کند:
streamlit hello
این کار یک وبسایت بر روی localhost:8501 برایتان باز میکند که در آن میتوانیم تعدادی دمو که با کتابخانه Streamlit ایجاد شده را ببینیم.
برای یادگیری پایتون، دوره آموزش رایگان پایتون را در کانال یوتیوب دیتاهاب مشاهده کنید.
شروع به کار با کتابخانه Streamlit
اکنونکه مطمئن شدیم همه چیز بهدرستی کار میکند، کار با Streamlit را آغاز میکنیم.
ابتدا باید کتابخانه Streamlit را به کمک import به پروژه اضافه کنیم:
Import streamlit as st
فایلهای مربوط به Streamlit را با نوشتن دستور زیر اجرا میکنیم:
streamlit run first_app.py
این کار یک برگه جدید (tab) در مرورگر باز میکند و کد فعلی نمایش میدهد. این برگه در مرورگر به طور اتوماتیک پس از هر تغییر بهروز خواهد شد.
نحوه نمایش متن در Streamlit
کتابخانه Streamlit برای اضافهکردن متن، چندین روش از جمله st.text، st.markdown و st.title دارد.
# Add a title
st.title('My first app')
# Add some text
st.text('Streamlit is great'
به همین راحتی، اکنون برنامهمان یک عنوان و یک جمله را نمایش میدهد.
نمایش دیتافریمهای Pandas در Streamlit
در کتابخانه Streamlit یک دیتافریم Pandas را میتوان با استفاده از st.dataframe نمایش داد.
import pandas as pd
st.dataframe(pd.DataFrame({
'first column': [1, 2, 3, 4],
'second column': [10, 20, 30, 40]
}))
علاوه بر روش قبلی برای نمایش دیتافریم، کتابخانه Streamlit تابع write را نیز در اختیارمان قرار میدهد که به طور اتوماتیک، ورودی را تشخیص میدهد و باتوجهبه نوع آن، داده را نمایش میدهد.
st.write(pandas.DataFrame({
'first column': [1, 2, 3, 4],
'second column': [10, 20, 30, 40]
}))
چطور با Streamlit نمودار خطی (line chart) رسم کنیم؟
کتابخانه Streamlit تعدادی از کتابخانههای معروف نمایش بصری داده از جمله Matplotlib، VegaLite، deck.gl و Plotly که برای ساختن برخی نمودارها از آن استفاده خواهیم کرد، را پشتیبانی میکند.
برای ساختن یک نمودار خطی با تعدادی داده تصادفی، کد زیر قابلاستفاده است:
import numpy as np
chart_data = pd.DataFrame(
np.random.randn(20, 3),
columns=['a', 'b', 'c'])
st.line_chart(chart_data)
تا اینجای کار کتابخانه Streamlit معرفی شده و از قابلیتهای آن گفتیم. سپس ابزارکهای مختلف آن را معرفی کرده و نحوه نصب و راهاندازی Streamlit را آموزش دادیم. در ادامه ابتدا نحوه نمایش نقشه را آموزش داده و سپس به سراغ معرفی ابزارکهای دیگر مثل اسلایدر، checkbox و selectbox میرویم.
ترسیم نقشه در پایتون با کتابخانه Streamlit
یکی از کارهایی که با استفاده از Streamlit بهسادگی انجامپذیر است، ایجاد یک نقشه با تعدادی نقاط داده (Data-point) بر روی آن است. این کار با استفاده از ()st.map قابل انجام است.
map_data = pd.DataFrame(
np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],
columns=['lat', 'lon'])
st.map(map_data)
نحوه استفاده از ابزارکها (Widgets) در Streamlit
با استفاده از ابزارکها، کتابخانه Streamlit این امکان را به ما میدهد تا داشبوردهای تعاملی زیبا بسازیم. Streamlit دکمهها، چک باکس (checkbox)، نوار لغزنده (slider)، ورودی متنی (text input) و بسیاری امکانات دیگر را مهیا کرده است. برای کسب اطلاعات بیشتر درباره تمام ابزارکهای موجود، به API سر بزنید.
استفاده از checkbox برای نمایش/عدم نمایش داده
یکی از ابزارکهای پشتیبانی شده توسط کتابخانه Streamlit، چک باکس است که برای نمایش یا عدم نمایش داده استفاده میشود.
if st.checkbox('Show dataframe'):
st.dataframe(pd.DataFrame({
'first column': [1, 2, 3, 4],
'second column': [10, 20, 30, 40]
}))
chart_data = pd.DataFrame(
np.random.randn(20, 3),
columns=['a', 'b', 'c'])
st.line_chart(chart_data)
map_data = pd.DataFrame(
np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],
columns=['lat', 'lon'])
st.map(map_data)
فیلترکردن داده در یک dataframe با استفاده از selectbox
از selectbox برای انتخاب یک گزینه از چند گزینه از یک لیست میتوان استفاده کرد. این کار برای فیلتر داده بسیار مفید است. با استفاده از آن میتوانیم روی ستونهای dataframe، فیلتر اعمال کنیم.
df = pd.DataFrame(
np.random.randn(20, 3),
columns=['a', 'b', 'c'])
column = st.selectbox(
'What column to you want to display',
df.columns)
st.line_chart(df[column])
همچنین میتوانیم با استفاده از st.multiselect بهجای st.selectbox، چندین مورد را همزمان انتخاب کنیم.
df = pd.DataFrame(
np.random.randn(20, 3),
columns=['a', 'b', 'c'])
columns = st.multiselect(label='What column to you want to display',
options=df.columns)
st.line_chart(df[columns])
ایجاد نوار لغزنده (اسلایدر) در پایتون با Streamlit
یکی دیگر از ابزارکهای عالی، نوار لغزنده است. از نوار لغزنده میتوان برای انتخاب یک یا چند مقدار خاص استفاده کرد. برای ساختن یک نوار لغزنده ساده، برای انتخاب بین 0-100، کد زیر را میتوان استفاده کرد.
x = st.slider('Select a value')
st.write(x, 'squared is', x * x)
اگر بخواهیم چند مقدار را انتخاب کنیم، باید چندین مقدار پیشفرض، به ورودی مقادیر بدهیم.
x = st.slider(
'Select a range of values',
0.0, 100.0, (25.0, 75.0))
st.write('Range values:', x)
برای ورود به دنیای پروژههای یادگیری ماشین، آموزش رایگان یادگیری ماشین را در کانال یوتیوب دیتاهاب ببینید.
در این مقاله، در مورد کتابخانه Streamlit و اینکه چگونه از آن برای تبدیل پروژههای علم داده به وبسایتهای زیبا استفاده کنیم، توضیحاتی دادیم. Streamlit بسیار جالب است چرا که استفاده از آن بسیار آسان است و برای ایجاد یک وبسایت، هیچ نیازی به داشتن تجربه توسعه وبسایت نداریم.
اگر علاقهمند بودید، یک داشبورد Stock Price (قیمت سهام) با استفاده از Streamlit در این آدرس Github قابل مشاهده است.