2014-2015/2nd/DS/DS_0527/Bilan/Bilan.ipynb

551 lines
21 KiB
Plaintext
Raw Permalink Normal View History

2017-06-16 06:48:07 +00:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import pandas as pd\n",
"from opytex import texenv\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Informations sur le devoir"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"{'classe': '\\\\seconde', 'date': '27 mai 2015', 'titre': 'DS 8'}"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ds_name = 'DS_0527'\n",
"classe = '2nd6'\n",
"\n",
"latex_info = {}\n",
"latex_info['titre'] = 'DS 8' \n",
"latex_info['classe'] = '\\\\seconde'\n",
"latex_info['date'] = '27 mai 2015'\n",
"latex_info"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Import et premiers traitements"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [],
"source": [
"notes = pd.ExcelFile(\"./../../../notes_\"+classe+\".xls\")\n",
"notes.sheet_names\n",
"notes = notes.parse(ds_name)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Index(['DS_0527', 'av_arrondi', 'Exercice 1', '1 (Nuage points)', '2.a ',\n",
" '2.b (Tracer droite)', '2.c (Estimation)', 'Exercice 2',\n",
" '1 (equation droite)', '2.a (Tracer droite)', '2.b (Droite point)',\n",
" '2.c (Parallèle)', '2.d (Parallèle)', 'Exercice 3',\n",
" '1 (Domaine définition)', '2 (Valeur interdite)', '3 (Calcul)',\n",
" 'Exercice 4'],\n",
" dtype='object')"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"notes.index"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"notes = notes.T"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"notes = notes.drop('av_arrondi', axis=1)\n",
"#notes = notes.drop('num_sujet', axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"barem = notes[:1]\n",
"notes = notes[1:]\n",
"#notes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Supression des notes inutiles "
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"notes = notes[notes[ds_name].notnull()]\n",
"notes = notes[notes[ds_name] != 0]"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"notes = notes.astype(float)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Traitement des notes"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"Index(['DS_0527', 'Exercice 1', '1 (Nuage points)', '2.a ',\n",
" '2.b (Tracer droite)', '2.c (Estimation)', 'Exercice 2',\n",
" '1 (equation droite)', '2.a (Tracer droite)', '2.b (Droite point)',\n",
" '2.c (Parallèle)', '2.d (Parallèle)', 'Exercice 3',\n",
" '1 (Domaine définition)', '2 (Valeur interdite)', '3 (Calcul)',\n",
" 'Exercice 4'],\n",
" dtype='object')"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"notes.T.index"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"list_exo = [\"Exercice 1\", \"Exercice 2\", \"Exercice 3\", \"Exercice 4\"]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"notes[list_exo] = notes[list_exo].applymap(lambda x:round(x,2))\n",
"#notes[list_exo]"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"['1 (Nuage points)',\n",
" '2.a ',\n",
" '2.b (Tracer droite)',\n",
" '2.c (Estimation)',\n",
" '1 (equation droite)',\n",
" '2.a (Tracer droite)',\n",
" '2.b (Droite point)',\n",
" '2.c (Parallèle)',\n",
" '2.d (Parallèle)',\n",
" '1 (Domaine définition)',\n",
" '2 (Valeur interdite)',\n",
" '3 (Calcul)']"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"item_avec_note = list_exo + [ds_name]\n",
"sous_exo = [i for i in notes.T.index if i not in item_avec_note]\n",
"sous_exo"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def toRepVal(val):\n",
" if pd.isnull(val):\n",
" return \"\\\\NoRep\"\n",
" elif val == 0:\n",
" return \"\\\\RepZ\"\n",
" elif val == 1:\n",
" return \"\\\\RepU\"\n",
" elif val == 2:\n",
" return \"\\\\RepD\"\n",
" elif val == 3:\n",
" return \"\\\\RepT\"\n",
" else:\n",
" return val"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"notes[item_avec_note] = notes[item_avec_note].fillna(\".\")\n",
"#notes"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"eleves = notes.copy()\n",
"eleves[sous_exo] = notes[sous_exo].applymap(toRepVal)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"17"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(notes.T.index)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Preparation du fichier .tex"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"bilan = texenv.get_template(\"tpl_bilan.tex\")\n",
"with open(\"./bilan.tex\",\"w\") as f:\n",
" f.write(bilan.render(eleves = eleves, barem = barem, ds_name = ds_name, latex_info = latex_info, nbr_questions = len(barem.T)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Un peu de statistiques"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"count 20.000000\n",
"mean 11.425000\n",
"std 4.733072\n",
"min 3.000000\n",
"25% 8.500000\n",
"50% 10.750000\n",
"75% 15.125000\n",
"max 20.000000\n",
"Name: DST_04, dtype: float64"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"notes[ds_name].describe()"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f54263a3d30>"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nEbhR0sHq6x2SdknaBRA
"text/plain": [
"<matplotlib.figure.Figure at 0x7f542600fa90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"notes_seules = notes[ds_name]\n",
"notes_seules.hist(bins = (notes_seules.max() - notes_seules.min())*2)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"notes_questions = notes[sous_exo]\n",
"notes_analysis = notes_questions.describe()"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>1.1</th>\n",
" <th>1.2</th>\n",
" <th>2.A.1</th>\n",
" <th>2.A.2</th>\n",
" <th>2.A.3.a</th>\n",
" <th>2.A.3.b</th>\n",
" <th>2.A.3.c</th>\n",
" <th>2.B.1</th>\n",
" <th>2.B.2</th>\n",
" <th>3.A.1</th>\n",
" <th>3.A.2</th>\n",
" <th>3.B.1</th>\n",
" <th>3.B.2</th>\n",
" <th>3.B.3</th>\n",
" <th>4.A.1</th>\n",
" <th>4.A.1.a</th>\n",
" <th>4.A.1.b</th>\n",
" <th>4.B.1</th>\n",
" <th>4.B.2</th>\n",
" <th>4.B.3</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 1.1 1.2 2.A.1 2.A.2 2.A.3.a 2.A.3.b 2.A.3.c 2.B.1 2.B.2 3.A.1 \\\n",
"count NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"\n",
" 3.A.2 3.B.1 3.B.2 3.B.3 4.A.1 4.A.1.a 4.A.1.b 4.B.1 4.B.2 \\\n",
"count NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
"\n",
" 4.B.3 \n",
"count NaN "
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# J'aimerai récupérer le nom des questions qui ont été le moins répondus\n",
"notes_analysis[:1][notes_analysis[:1] == 25]"
]
},
{
"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.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}