262 lines
5.7 KiB
Plaintext
262 lines
5.7 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"import numpy as np\n",
|
|
"%matplotlib inline\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"plt.style.use(\"seaborn-notebook\")\n",
|
|
"from ipywidgets import interact, interactive, fixed\n",
|
|
"import ipywidgets as widgets\n",
|
|
"from IPython.display import display\n",
|
|
"\n",
|
|
"from extract import extract_flat_marks, get_class_ws, list_classes\n",
|
|
"from df_marks_manip import digest_flat_df, students_pov, round_half_point"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Solution 1"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 76,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def print_eval(evaluation):\n",
|
|
" ws = get_class_ws(clsW.value)\n",
|
|
" flat = extract_flat_marks(ws)\n",
|
|
" _,_,eval_m = digest_flat_df(flat)\n",
|
|
" print(\"Devoir sur \",eval_m[(eval_m[\"Nom\"]==evaluation) & (eval_m[\"Mark\"] > 0)][\"Bareme\"].iloc[0])\n",
|
|
" print(eval_m[eval_m[\"Nom\"]==evaluation][\"Mark\"].describe())\n",
|
|
"def select_classe(classe):\n",
|
|
" ws = get_class_ws(classe)\n",
|
|
" evals = extract_flat_marks(ws)[\"Nom\"].unique()\n",
|
|
" evalW.options = list(evals)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 77,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"classes = list_classes()\n",
|
|
"clsW = widgets.Select(options=classes)\n",
|
|
"cls_init = clsW.value"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 80,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"ws = get_class_ws(cls_init)\n",
|
|
"evals = extract_flat_marks(ws)[\"Nom\"].unique()\n",
|
|
"evalW = widgets.Dropdown(options = list(evals))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 81,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Devoir sur 22.0\n",
|
|
"count 30.000000\n",
|
|
"mean 10.200000\n",
|
|
"std 3.786546\n",
|
|
"min 0.000000\n",
|
|
"25% 8.625000\n",
|
|
"50% 10.750000\n",
|
|
"75% 12.375000\n",
|
|
"max 15.500000\n",
|
|
"Name: Mark, dtype: float64\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"j = widgets.interactive(print_eval, evaluation=evalW)\n",
|
|
"i = widgets.interactive(select_classe, classe=clsW)\n",
|
|
"display(i,j)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Quand on change de classe, l'évaluation n'est pas mis à jour"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Solution 2"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"classes = list_classes()\n",
|
|
"clsW = widgets.Select(options=classes)\n",
|
|
"cls_init = clsW.value"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"ws = get_class_ws(cls_init)\n",
|
|
"evals = extract_flat_marks(ws)[\"Nom\"].unique()\n",
|
|
"evalW = widgets.Select(options = list(evals))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def update_evals(*args):\n",
|
|
" classe = clsW.value\n",
|
|
" ws = get_class_ws(classe)\n",
|
|
" evals = extract_flat_marks(ws)[\"Nom\"].unique()\n",
|
|
" evalW.options = list(evals)\n",
|
|
" \n",
|
|
"clsW.observe(update_evals, \"value\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def resume(classe, evaluation):\n",
|
|
" ws = get_class_ws(classe)\n",
|
|
" flat = extract_flat_marks(ws)\n",
|
|
" _,_,eval_m = digest_flat_df(flat)\n",
|
|
" print(\"Devoir sur \",eval_m[(eval_m[\"Nom\"]==evaluation) & (eval_m[\"Mark\"] > 0)][\"Bareme\"].iloc[0])\n",
|
|
" print(eval_m[eval_m[\"Nom\"]==evaluation][\"Mark\"].describe())\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Devoir sur 22.0\n",
|
|
"count 29.000000\n",
|
|
"mean 7.879310\n",
|
|
"std 4.787736\n",
|
|
"min 0.000000\n",
|
|
"25% 5.500000\n",
|
|
"50% 8.500000\n",
|
|
"75% 11.500000\n",
|
|
"max 15.500000\n",
|
|
"Name: Mark, dtype: float64\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<function __main__.resume>"
|
|
]
|
|
},
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"widgets.interact(resume, classe=clsW, evaluation=evalW)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.5.2"
|
|
},
|
|
"widgets": {
|
|
"state": {
|
|
"849ab02f915e4783b04221c9ed128d96": {
|
|
"views": [
|
|
{
|
|
"cell_index": 13
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"version": "1.2.0"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 1
|
|
}
|