/
dems712
/
your-learning-dashboard
Обзор
Документация
Войти
/
dems712
/
your-learning-dashboard
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/data_processor.py
44 строки
2 KB
dems712
update src/data_processor.py
18 янв 2026, 12:53
Верифицирован
18 янв 2026, 12:53
7b7a89e
Код
Авторство
О чём код?
import pandas as pd import numpy as np from typing import Dict, Any, List from datetime import datetime def load_student_data(filepath: str) -> pd.DataFrame: """Загружает CSV файл с данными студентов.""" try: df = pd.read_csv(filepath, parse_dates=['date']) return df except FileNotFoundError: # Возвращаем пустой DataFrame с правильными колонками return pd.DataFrame(columns=['student_id', 'student_name', 'course', 'date', 'score', 'time_spent', 'activity_type', 'difficulty', 'completed']) def calculate_metrics(df: pd.DataFrame) -> Dict[str, Any]: """Вычисляет ключевые метрики для дашборда.""" if df.empty: return { 'total_students': 0, 'average_score': 0, 'completion_rate': 0, 'top_performer': 'Нет данных' } metrics = { 'total_students': df['student_id'].nunique(), 'average_score': round(df['score'].mean(), 1), 'completion_rate': round(df['completed'].mean() * 100, 1), 'top_performer': df.groupby('student_name')['score'] .mean() .idxmax() if not df.empty else 'Нет данных' } return metrics def filter_by_date(df: pd.DataFrame, start_date: datetime, end_date: datetime) -> pd.DataFrame: """Фильтрует данные по дате.""" return df[(df['date'] >= start_date) & (df['date'] <= end_date)] def get_course_list(df: pd.DataFrame) -> List[str]: """Возвращает список уникальных курсов.""" return df['course'].unique().tolist()