/
FAU
/
itis_finally_Project
Обзор
Документация
Войти
/
FAU
/
itis_finally_Project
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
src/analyzer.py
39 строк
1 KB
Alexey Fedorovich
Initial commit: Learning Path Analyzer scaffold
27 дек 2025, 14:35
27 дек 2025, 14:35
c96b59e
Код
Авторство
О чём код?
import pandas as pd import numpy as np from typing import Dict def analyze_activity(df: pd.DataFrame) -> Dict: """Compute per-user activity counts and correlation with mean grade. Returns dict with: - counts: DataFrame user x event counts - mean_grade: Series mean grade per user - correlations: dict event_type -> Pearson correlation with mean_grade """ if df.empty: return {"counts": pd.DataFrame(), "mean_grade": pd.Series(dtype=float), "correlations": {}} # activity counts per user counts = df.pivot_table(index="user_id", columns="event_type", values="timestamp", aggfunc="count", fill_value=0) # compute mean grade per user (grade may be NaN for non-graded events) if "grade" in df.columns: grades = df.dropna(subset=["grade"]).groupby("user_id")["grade"].mean() else: grades = pd.Series(dtype=float) correlations = {} if not grades.empty and not counts.empty: merged = counts.join(grades.rename("mean_grade"), how="left").fillna(0) for col in counts.columns: try: corr = merged[col].corr(merged["mean_grade"]) correlations[col] = float(np.nan_to_num(corr)) except Exception: correlations[col] = 0.0 else: for col in counts.columns if not counts.empty else []: correlations[col] = 0.0 return {"counts": counts, "mean_grade": grades, "correlations": correlations}