/
dems712
/
your-learning-dashboard
Обзор
Документация
Войти
/
dems712
/
your-learning-dashboard
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/app.py
55 строк
2 KB
dems712
update src/app.py
18 янв 2026, 12:53
Верифицирован
18 янв 2026, 12:53
52f3bdf
Код
Авторство
О чём код?
import streamlit as st import pandas as pd import plotly.express as px from src.data_processor import load_student_data, calculate_metrics from src.visualizations import create_score_distribution, create_engagement_heatmap def main(): st.set_page_config(page_title="Learning Dashboard", layout="wide") st.title("📊 Learning Analytics Dashboard") # Загрузка данных df = load_student_data("data/raw/sample.csv") # Фильтры в сайдбаре with st.sidebar: st.header("Фильтры") selected_course = st.selectbox("Курс", ["Все"] + list(df['course'].unique())) date_range = st.date_input("Диапазон дат", [df['date'].min(), df['date'].max()]) # Применение фильтров if selected_course != "Все": filtered_df = df[df['course'] == selected_course] else: filtered_df = df filtered_df = filtered_df[filtered_df['date'].between(pd.Timestamp(date_range[0]), pd.Timestamp(date_range[1]))] # Показ метрик metrics = calculate_metrics(filtered_df) col1, col2, col3, col4 = st.columns(4) col1.metric("Студентов", metrics['total_students']) col2.metric("Средний балл", f"{metrics['average_score']:.1f}") col3.metric("Прохождение", f"{metrics['completion_rate']:.1f}%") col4.metric("Лучший", metrics['top_performer'][:15]) # Визуализации tab1, tab2 = st.tabs(["Распределение оценок", "Активность"]) with tab1: fig = create_score_distribution(filtered_df, selected_course if selected_course != "Все" else None) st.plotly_chart(fig, use_container_width=True) with tab2: fig = create_engagement_heatmap(filtered_df) st.plotly_chart(fig, use_container_width=True) # Сырые данные with st.expander("Просмотр данных"): st.dataframe(filtered_df) if __name__ == "__main__": main()