recopytex/templates/tpl_evaluation.ipynb

444 lines
26 KiB
Plaintext
Raw Normal View History

2019-08-04 14:25:44 +00:00
{
"cells": [
{
"cell_type": "code",
2019-08-06 05:02:07 +00:00
"execution_count": 16,
2019-08-04 14:25:44 +00:00
"metadata": {},
"outputs": [],
"source": [
"from IPython.display import Markdown as md\n",
2019-08-04 21:24:32 +00:00
"from IPython.display import display\n",
2019-08-04 14:25:44 +00:00
"import pandas as pd\n",
2019-08-04 17:28:43 +00:00
"from pathlib import Path\n",
2019-08-04 19:57:27 +00:00
"from datetime import datetime\n",
2019-08-04 21:24:32 +00:00
"from recopytex import flat_clear_csv, pp_q_scores\n",
2019-08-06 05:02:07 +00:00
"#import prettytable as pt\n",
2019-08-04 21:24:32 +00:00
"%matplotlib inline"
2019-08-04 14:25:44 +00:00
]
},
{
"cell_type": "code",
2019-08-06 05:02:07 +00:00
"execution_count": 2,
"metadata": {
"tags": [
"parameters"
]
},
2019-08-04 14:25:44 +00:00
"outputs": [],
"source": [
"tribe = \"308\"\n",
2019-08-04 19:57:27 +00:00
"assessment = \"DM1\"\n",
"date = \"15/09/16\"\n",
"csv_file = Path(f\"../sheets/{tribe}/160915_{assessment}.csv\")"
2019-08-04 14:25:44 +00:00
]
},
{
"cell_type": "code",
2019-08-06 05:02:07 +00:00
"execution_count": 3,
2019-08-04 17:28:43 +00:00
"metadata": {},
2019-08-04 19:57:27 +00:00
"outputs": [
{
"data": {
"text/markdown": [
"# DM1 (15/09/16) pour 308"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2019-08-04 17:28:43 +00:00
"source": [
2019-08-04 19:57:27 +00:00
"if date is None:\n",
" display(md(f\"# {assessment} pour {tribe}\"))\n",
2019-08-04 17:28:43 +00:00
"else:\n",
2019-08-04 19:57:27 +00:00
" display(md(f\"# {assessment} ({date}) pour {tribe}\"))"
2019-08-04 17:28:43 +00:00
]
},
{
"cell_type": "code",
2019-08-06 05:02:07 +00:00
"execution_count": 11,
2019-08-04 21:24:32 +00:00
"metadata": {},
"outputs": [],
"source": [
2019-08-06 05:02:07 +00:00
"stack_scores = pd.read_csv(csv_file, encoding=\"latin_1\")\n",
2019-08-04 21:24:32 +00:00
"scores = flat_clear_csv(stack_scores).dropna(subset=[\"Score\"])\n",
"scores = pp_q_scores(scores)"
]
},
{
"cell_type": "code",
2019-08-06 05:02:07 +00:00
"execution_count": 12,
2019-08-04 14:25:44 +00:00
"metadata": {},
"outputs": [
{
"data": {
2019-08-04 19:57:27 +00:00
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
2019-08-04 21:24:32 +00:00
" <th></th>\n",
" <th>Note</th>\n",
" <th>Bareme</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Exercice</th>\n",
" <th>Eleve</th>\n",
" <th></th>\n",
" <th></th>\n",
2019-08-04 19:57:27 +00:00
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
2019-08-04 21:24:32 +00:00
" <th rowspan=\"5\" valign=\"top\">1</th>\n",
" <th>ABDOU Asmahane</th>\n",
" <td>3.67</td>\n",
" <td>6.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ABOU Roihim</th>\n",
" <td>0.00</td>\n",
" <td>6.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>AHMED BOINALI Kouraichia</th>\n",
" <td>1.33</td>\n",
" <td>6.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>AHMED Rahada</th>\n",
" <td>2.67</td>\n",
" <td>6.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALI SAID Anchourati</th>\n",
" <td>0.00</td>\n",
" <td>6.0</td>\n",
2019-08-04 19:57:27 +00:00
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
2019-08-04 14:25:44 +00:00
],
"text/plain": [
2019-08-04 21:24:32 +00:00
" Note Bareme\n",
"Exercice Eleve \n",
"1 ABDOU Asmahane 3.67 6.0\n",
" ABOU Roihim 0.00 6.0\n",
" AHMED BOINALI Kouraichia 1.33 6.0\n",
" AHMED Rahada 2.67 6.0\n",
" ALI SAID Anchourati 0.00 6.0"
]
},
2019-08-06 05:02:07 +00:00
"execution_count": 12,
2019-08-04 21:24:32 +00:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"exercises_scores = scores.groupby([\"Exercice\", \"Eleve\"]).agg({\"Note\": \"sum\", \"Bareme\": \"sum\"})\n",
"exercises_scores.head()"
]
},
{
"cell_type": "code",
2019-08-06 05:02:07 +00:00
"execution_count": 15,
2019-08-04 21:24:32 +00:00
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
2019-08-04 19:57:27 +00:00
"\n",
2019-08-04 21:24:32 +00:00
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Note</th>\n",
" <th>Bareme</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Eleve</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>ABDOU Asmahane</th>\n",
" <td>5.00</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ABOU Roihim</th>\n",
" <td>0.00</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>AHMED BOINALI Kouraichia</th>\n",
" <td>2.67</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>AHMED Rahada</th>\n",
" <td>6.33</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALI SAID Anchourati</th>\n",
" <td>0.00</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ASSANE Noussouraniya</th>\n",
" <td>4.67</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>BACAR Issiaka</th>\n",
" <td>0.00</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>BACAR Samina</th>\n",
" <td>3.67</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CHAIHANE Said</th>\n",
" <td>5.33</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>COMBO Houzaimati</th>\n",
" <td>5.00</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DAOUD Anzilati</th>\n",
" <td>5.17</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DAOUD Talaenti</th>\n",
" <td>5.67</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DARKAOUI Rachma</th>\n",
" <td>5.67</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DHAKIOINE Nabaouya</th>\n",
" <td>1.00</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DJANFAR Soioutinour</th>\n",
" <td>5.33</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DRISSA Ibrahim</th>\n",
" <td>0.00</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>HACHIM SIDI Assani</th>\n",
" <td>7.00</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>HAFIDHUI Zalifa</th>\n",
" <td>5.67</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>HOUMADI Marie</th>\n",
" <td>6.67</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>HOUMADI Sania</th>\n",
" <td>5.33</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MAANDHUI Halouoi</th>\n",
" <td>7.00</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MASSONDI Nasma</th>\n",
" <td>7.33</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>SAIDALI Irichad</th>\n",
" <td>5.00</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Note Bareme\n",
"Eleve \n",
"ABDOU Asmahane 5.00 12.0\n",
"ABOU Roihim 0.00 12.0\n",
"AHMED BOINALI Kouraichia 2.67 12.0\n",
"AHMED Rahada 6.33 12.0\n",
"ALI SAID Anchourati 0.00 12.0\n",
"ASSANE Noussouraniya 4.67 12.0\n",
"BACAR Issiaka 0.00 12.0\n",
"BACAR Samina 3.67 12.0\n",
"CHAIHANE Said 5.33 12.0\n",
"COMBO Houzaimati 5.00 12.0\n",
"DAOUD Anzilati 5.17 12.0\n",
"DAOUD Talaenti 5.67 12.0\n",
"DARKAOUI Rachma 5.67 12.0\n",
"DHAKIOINE Nabaouya 1.00 12.0\n",
"DJANFAR Soioutinour 5.33 12.0\n",
"DRISSA Ibrahim 0.00 12.0\n",
"HACHIM SIDI Assani 7.00 12.0\n",
"HAFIDHUI Zalifa 5.67 12.0\n",
"HOUMADI Marie 6.67 12.0\n",
"HOUMADI Sania 5.33 12.0\n",
"MAANDHUI Halouoi 7.00 12.0\n",
"MASSONDI Nasma 7.33 12.0\n",
"SAIDALI Irichad 5.00 12.0"
2019-08-04 14:25:44 +00:00
]
},
2019-08-06 05:02:07 +00:00
"execution_count": 15,
2019-08-04 14:25:44 +00:00
"metadata": {},
2019-08-04 19:57:27 +00:00
"output_type": "execute_result"
2019-08-04 14:25:44 +00:00
}
],
"source": [
2019-08-04 21:24:32 +00:00
"assessment_scores = scores.groupby([\"Eleve\"]).agg({\"Note\": \"sum\", \"Bareme\": \"sum\"})\n",
"assessment_scores"
]
},
{
"cell_type": "code",
2019-08-06 05:02:07 +00:00
"execution_count": 7,
2019-08-04 21:24:32 +00:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 23.00\n",
"mean 4.33\n",
"std 2.45\n",
"min 0.00\n",
"25% 3.17\n",
"50% 5.17\n",
"75% 5.67\n",
"max 7.33\n",
"Name: Note, dtype: float64"
]
},
2019-08-06 05:02:07 +00:00
"execution_count": 7,
2019-08-04 21:24:32 +00:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"assessment_scores[\"Note\"].describe()"
]
},
{
"cell_type": "code",
2019-08-06 05:02:07 +00:00
"execution_count": 8,
2019-08-04 21:24:32 +00:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2019-08-06 05:02:07 +00:00
"<matplotlib.axes._subplots.AxesSubplot at 0x7f0ae61e5cf8>"
2019-08-04 21:24:32 +00:00
]
},
2019-08-06 05:02:07 +00:00
"execution_count": 8,
2019-08-04 21:24:32 +00:00
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2019-08-04 21:32:22 +00:00
"image/png": "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
2019-08-04 21:24:32 +00:00
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"assessment_scores[\"Note\"].plot.kde()\n",
2019-08-04 21:32:22 +00:00
"assessment_scores[\"Note\"].plot.hist(density=True)"
2019-08-04 14:25:44 +00:00
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"celltoolbar": "Tags",
"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",
2019-08-06 05:02:07 +00:00
"version": "3.7.3"
2019-08-04 14:25:44 +00:00
}
},
"nbformat": 4,
"nbformat_minor": 2
}