قم بإنشاء تطبيقات ويب تفاعلية لمشاريع علوم البيانات والتعلم الآلي باستخدام Python فقط، كل ذلك بفضل Streamlit!

Streamlit هي مكتبة Python مفتوحة المصدر لإنشاء تطبيقات الويب لمشاريع علوم البيانات والتعلم الآلي. لقد تم تصميمه ليتم استخدامه من قبل علماء البيانات ومهندسي التعلم الآلي الذين ليس لديهم مهارات تطوير أمامية واسعة النطاق. يحتوي على بناء جملة بسيط يسمح لك بإنشاء تطبيقات ويب تفاعلية باستخدام بضعة أسطر من التعليمات البرمجية.

من خلال تغليف التفاصيل التقنية المعقدة خلف واجهة سهلة الاستخدام، يتيح Streamlit للمستخدمين التركيز على استكشاف وتقديم بياناتهم أو نماذجهم الأولية أو نماذجهم في الوقت الفعلي. وهذا يجعلها أداة قيمة لتبادل الأفكار بسرعة.

تثبيت مكتبة Streamlit

إنشاء بيئة افتراضية جديدة. سيضمن هذا عدم وجود تعارض في إصدار الحزمة بعد التثبيت ستريمليت. ثم استخدم النقطة للتثبيت Streamlit عن طريق تشغيل الأمر التالي:

pip install streamlit

ثم تأكد من تثبيت التثبيت بشكل صحيح.

streamlit --version

إذا نجح التثبيت، فسيتم عرض إصدار Streamlit المثبت.

بناء تطبيق بسيط لتنظيف البيانات وتحليلها

ستقوم بإنشاء تطبيق ويب بسيط للتعرف على كيفية عمل Streamlit وميزاته. سيكون هذا التطبيق قادرًا على تنظيف مجموعة البيانات التي تم تحميلها، وإجراء تحليل البيانات، وأخيرًا تصور البيانات.

instagram viewer

كود المصدر الكامل متاح في مستودع جيثب.

تثبيت واستيراد المكتبات اللازمة

ابدأ بتثبيت 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 للشبكة. يمكنك استخدام أي من عناوين URL هذه للتفاعل مع تطبيقك.

مخرجات البرنامج هي كما يلي:

لم يكن إنشاء تطبيقات الويب التفاعلية لعلم البيانات أسهل من أي وقت مضى. لا تحتاج إلى مهارات متقدمة في تطوير الويب لإنشاء واجهة مستخدم لتطبيقك.

هل لا يزال يتعين عليك تعلم تطوير الويب؟

ذلك يعتمد على أهدافك المحددة. إذا كنت تتوقع إنشاء تطبيقات ويب معقدة وغنية بالميزات وتتطلب مستخدمًا واسع النطاق تصميم الواجهة والوظائف المتقدمة، ومن ثم يمكن تعلم تقنيات تطوير الويب نافع. وذلك لأنه في Streamlit لديك تحكم محدود في التخصيص الدقيق لمظهر تطبيقك وسلوكه.