{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import xlsxwriter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from repytex.worksheets.worksheet import pull_datas\n",
    "from repytex.reports.eval import pull_datas as pull_sqlite\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import sqlite3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "conn = sqlite3.connect('./recopytex.db')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# to xlxs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'evaluation':    id               name  term  t_id\n",
       " 0   1  DS1 mise en jambe     1     1,\n",
       " 'exercises':    id                        name  eval_id                        date comment\n",
       " 0   1  1 - Prendre la température        1  2017-09-05 00:00:00.000000        \n",
       " 1   2             2 - Maladroite!        1  2017-09-05 00:00:00.000000        ,\n",
       " 'question_scores':       id  question_id  student_id value\n",
       " 0      1            1           1     1\n",
       " 1      2            2           1     2\n",
       " 2      3            3           1     .\n",
       " 3      4            1           2     2\n",
       " 4      5            2           2     2\n",
       " 5      6            3           2     1\n",
       " 6      7            1           3     3\n",
       " 7      8            2           3     0\n",
       " 8      9            3           3     0\n",
       " 9     10            1           4     3\n",
       " 10    11            2           4     3\n",
       " 11    12            3           4     0\n",
       " 12    13            1           5     1\n",
       " 13    14            2           5     2\n",
       " 14    15            3           5     .\n",
       " 15    16            1           6     3\n",
       " 16    17            2           6     2\n",
       " 17    18            3           6     0\n",
       " 18    19            1           7     2\n",
       " 19    20            2           7     2\n",
       " 20    21            3           7     2\n",
       " 21    22            1           9     2\n",
       " 22    23            2           9     1\n",
       " 23    24            3           9     2\n",
       " 24    25            1           8     3\n",
       " 25    26            2           8     1\n",
       " 26    27            3           8     .\n",
       " 27    28            1          10     1\n",
       " 28    29            2          10     2\n",
       " 29    30            3          10     0\n",
       " ..   ...          ...         ...   ...\n",
       " 178  803            4          21     .\n",
       " 179  804            5          21     .\n",
       " 180  805            6          21     .\n",
       " 181  806            7          21     .\n",
       " 182  807            8          21     .\n",
       " 183  808            4          22     0\n",
       " 184  809            5          22     .\n",
       " 185  810            6          22     .\n",
       " 186  811            7          22     .\n",
       " 187  812            8          22     .\n",
       " 188  813            4          23     3\n",
       " 189  814            5          23     1\n",
       " 190  815            6          23     1\n",
       " 191  816            7          23     1\n",
       " 192  817            8          23     1\n",
       " 193  818            4          25     .\n",
       " 194  819            5          25     .\n",
       " 195  820            6          25     .\n",
       " 196  821            7          25     .\n",
       " 197  822            8          25     1\n",
       " 198  823            4          24     3\n",
       " 199  824            5          24     3\n",
       " 200  825            6          24     3\n",
       " 201  826            7          24     2\n",
       " 202  827            8          24     2\n",
       " 203  828            4          26     3\n",
       " 204  829            5          26     3\n",
       " 205  830            6          26     3\n",
       " 206  831            7          26     3\n",
       " 207  832            8          26     3\n",
       " \n",
       " [200 rows x 4 columns],\n",
       " 'questions':    id name  score_rate  is_leveled  exercise_id competence       domain  \\\n",
       " 0   1    1           0           1            1       Cher    Grandeurs   \n",
       " 1   2    2           0           1            1        Cal    Grandeurs   \n",
       " 2   3  2.c           0           1            1        Cal    Grandeurs   \n",
       " 0   4                0           1            2       Cher  4opérations   \n",
       " 1   5                0           1            2       Cher  4opérations   \n",
       " 2   6                0           1            2        Rai  4opérations   \n",
       " 3   7                0           1            2        Cal  4opérations   \n",
       " 4   8                0           1            2        Com  4opérations   \n",
       " \n",
       "                              comment  \n",
       " 0             Lecture du thermomètre  \n",
       " 1        Suivre programme de calculs  \n",
       " 2  Renverser un programme de calculs  \n",
       " 0    Lire le tableau et le graphique  \n",
       " 1             Décomposer le problème  \n",
       " 2            Manipuler les grandeurs  \n",
       " 3           Mener à bien les calculs  \n",
       " 4                          Rédaction  ,\n",
       " 'students':     id              name               surname mail commment  tribe_id\n",
       " 0    1  ABDALLAH ALLAOUI             Taiassima          None         1\n",
       " 1    2             ADANI                 Ismou          None         1\n",
       " 2    3           AHAMADA            Dhoulkamal          None         1\n",
       " 3    4           AHAMADI              Asbahati          None         1\n",
       " 4    5   AHAMADI OUSSENI           Ansufiddine          None         1\n",
       " 5    6            AHAMED               Fayadhi          None         1\n",
       " 6    7        AHMED SAID               Hadaïta          None         1\n",
       " 7    8          ALI MADI                Anissa          None         1\n",
       " 8    9               ALI                Raydel          None         1\n",
       " 9   10     ATTOUMANE ALI                Fatima          None         1\n",
       " 10  11          BACHIROU                Elzame          None         1\n",
       " 11  12            BINALI                Zalida          None         1\n",
       " 12  13             BOINA  Abdillah Mze Limassi          None         1\n",
       " 13  14            BOUDRA            Zaankidine          None         1\n",
       " 14  15             BOURA            Kayssoiria          None         1\n",
       " 15  16            HALADI                  Asna          None         1\n",
       " 16  17            HALIDI              Soibrata          None         1\n",
       " 17  18          HAMEDALY             Doulkifly          None         1\n",
       " 18  19           IBRAHIM                Nassur          None         1\n",
       " 19  20           INOUSSA              Anchoura          None         1\n",
       " 20  21           MOHAMED                 Nadia          None         1\n",
       " 21  22      MOUHOUDHOIRE                  Izak          None         1\n",
       " 22  23           MOUSSRI                Bakari          None         1\n",
       " 23  24              SAÏD              Fatoumia          None         1\n",
       " 24  25           SAKOTRA             Claudiana          None         1\n",
       " 25  26           TOUFAIL               Salahou          None         1\n",
       " 26  76           Ibrahim            Chaharzade          None         1,\n",
       " 'tribe':    id name grade\n",
       " 0   1  302    3e}"
      ]
     },
     "execution_count": 180,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "datas = pull_datas(1, conn)\n",
    "datas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'DS1 mise en jambe'"
      ]
     },
     "execution_count": 181,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "datas['evaluation'][\"name\"][0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "q_df = datas[\"questions\"]\n",
    "q_df = q_df.assign(\n",
    "    Nom = q_df[[\"name\", \"comment\"]].apply(lambda x: \" \".join(x), 1)\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>name</th>\n",
       "      <th>score_rate</th>\n",
       "      <th>is_leveled</th>\n",
       "      <th>exercise_id</th>\n",
       "      <th>competence</th>\n",
       "      <th>domain</th>\n",
       "      <th>comment</th>\n",
       "      <th>Nom</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cher</td>\n",
       "      <td>Grandeurs</td>\n",
       "      <td>Lecture du thermomètre</td>\n",
       "      <td>1 Lecture du thermomètre</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cal</td>\n",
       "      <td>Grandeurs</td>\n",
       "      <td>Suivre programme de calculs</td>\n",
       "      <td>2 Suivre programme de calculs</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>2.c</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cal</td>\n",
       "      <td>Grandeurs</td>\n",
       "      <td>Renverser un programme de calculs</td>\n",
       "      <td>2.c Renverser un programme de calculs</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4</td>\n",
       "      <td></td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>Cher</td>\n",
       "      <td>4opérations</td>\n",
       "      <td>Lire le tableau et le graphique</td>\n",
       "      <td>Lire le tableau et le graphique</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>5</td>\n",
       "      <td></td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>Cher</td>\n",
       "      <td>4opérations</td>\n",
       "      <td>Décomposer le problème</td>\n",
       "      <td>Décomposer le problème</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   id name  score_rate  is_leveled  exercise_id competence       domain  \\\n",
       "0   1    1           0           1            1       Cher    Grandeurs   \n",
       "1   2    2           0           1            1        Cal    Grandeurs   \n",
       "2   3  2.c           0           1            1        Cal    Grandeurs   \n",
       "0   4                0           1            2       Cher  4opérations   \n",
       "1   5                0           1            2       Cher  4opérations   \n",
       "\n",
       "                             comment                                    Nom  \n",
       "0             Lecture du thermomètre               1 Lecture du thermomètre  \n",
       "1        Suivre programme de calculs          2 Suivre programme de calculs  \n",
       "2  Renverser un programme de calculs  2.c Renverser un programme de calculs  \n",
       "0    Lire le tableau et le graphique        Lire le tableau et le graphique  \n",
       "1             Décomposer le problème                 Décomposer le problème  "
      ]
     },
     "execution_count": 183,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>name</th>\n",
       "      <th>eval_id</th>\n",
       "      <th>date</th>\n",
       "      <th>comment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1 - Prendre la température</td>\n",
       "      <td>1</td>\n",
       "      <td>2017-09-05 00:00:00.000000</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>2 - Maladroite!</td>\n",
       "      <td>1</td>\n",
       "      <td>2017-09-05 00:00:00.000000</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   id                        name  eval_id                        date comment\n",
       "0   1  1 - Prendre la température        1  2017-09-05 00:00:00.000000        \n",
       "1   2             2 - Maladroite!        1  2017-09-05 00:00:00.000000        "
      ]
     },
     "execution_count": 184,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "datas[\"exercises\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 185,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "ex_q = q_df.groupby(\"exercise_id\")\\\n",
    "    .agg({\"score_rate\": np.sum, \"competence\": lambda x: '-'.join(list(x))}) \\\n",
    "    .merge(datas[\"exercises\"], left_index=True, right_on='id')\n",
    "ex_q = ex_q.assign(\n",
    "    Nom = ex_q[\"name\"].apply(lambda x: f\"Ex {x}\"),\n",
    "    exercise_id = ex_q[\"id\"]\n",
    ")\n",
    "#ex_q"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 186,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "sel_fields = ['Nom', 'competence', 'score_rate', 'exercise_id']\n",
    "xls_df = pd.concat([ex_q[sel_fields], q_df[sel_fields]]).sort_values(\"exercise_id\")\n",
    "#xls_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 187,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#writer = pd.ExcelWriter(\"./test.xlsx\", engine=\"xlsxwriter\")\n",
    "#xls_df.to_excel(writer, index=False, sheet_name='DNB blanc 2')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 188,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#workbook = writer.book\n",
    "#worksheet = writer.sheets['DNB blanc 2']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 189,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#first_line_format = workbook.add_format({\"align\": 'center', \"rotation\":90})\n",
    "\n",
    "#worksheet.set_column('A:D', 20)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 190,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#writer.save()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## From xlsx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>competence</th>\n",
       "      <th>Barème</th>\n",
       "      <th>ABDALLAH ALLAOUI Taiassima</th>\n",
       "      <th>ADANI Ismou</th>\n",
       "      <th>AHAMADA Dhoulkamal</th>\n",
       "      <th>AHAMADI Asbahati</th>\n",
       "      <th>AHAMADI OUSSENI Ansufiddine</th>\n",
       "      <th>AHAMED Fayadhi</th>\n",
       "      <th>AHMED SAID Hadaita</th>\n",
       "      <th>ALI MADI Anissa</th>\n",
       "      <th>...</th>\n",
       "      <th>MOUSSRI Bakari</th>\n",
       "      <th>SAID Fatoumia</th>\n",
       "      <th>SAKOTRA Claudiana</th>\n",
       "      <th>TOUFAIL Salahou</th>\n",
       "      <th>moyenne</th>\n",
       "      <th>Min</th>\n",
       "      <th>Q1</th>\n",
       "      <th>ME</th>\n",
       "      <th>Q3</th>\n",
       "      <th>Max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>DNB blanc 2 général</th>\n",
       "      <td>NaN</td>\n",
       "      <td>112</td>\n",
       "      <td>24</td>\n",
       "      <td>52.0</td>\n",
       "      <td>46.5</td>\n",
       "      <td>65</td>\n",
       "      <td>27.0</td>\n",
       "      <td>25.5</td>\n",
       "      <td>75</td>\n",
       "      <td>72</td>\n",
       "      <td>...</td>\n",
       "      <td>40</td>\n",
       "      <td>50</td>\n",
       "      <td>60</td>\n",
       "      <td>58.5</td>\n",
       "      <td>43.403846</td>\n",
       "      <td>21.0</td>\n",
       "      <td>27.125</td>\n",
       "      <td>41.25</td>\n",
       "      <td>56.875</td>\n",
       "      <td>75.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ex 1 - Programme de calculs</th>\n",
       "      <td>NaN</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "      <td>11.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>10</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.019231</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.250</td>\n",
       "      <td>3.00</td>\n",
       "      <td>6.875</td>\n",
       "      <td>11.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1 et 2 Suivre le programme</th>\n",
       "      <td>Cal</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>6.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.692308</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.250</td>\n",
       "      <td>2.00</td>\n",
       "      <td>5.750</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3 Renverser le programme</th>\n",
       "      <td>Rai</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.596154</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1.125</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4 Toujours la même chose</th>\n",
       "      <td>Rai</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.192308</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 35 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                            competence  Barème  ABDALLAH ALLAOUI Taiassima  \\\n",
       "DNB blanc 2 général                NaN     112                          24   \n",
       "Ex 1 - Programme de calculs        NaN      15                           3   \n",
       "1 et 2 Suivre le programme         Cal       6                           3   \n",
       "3 Renverser le programme           Rai       3                           0   \n",
       "4 Toujours la même chose           Rai       3                           0   \n",
       "\n",
       "                             ADANI Ismou  AHAMADA Dhoulkamal  \\\n",
       "DNB blanc 2 général                 52.0                46.5   \n",
       "Ex 1 - Programme de calculs         11.0                 3.0   \n",
       "1 et 2 Suivre le programme           6.0                 2.0   \n",
       "3 Renverser le programme             3.0                 0.0   \n",
       "4 Toujours la même chose             2.0                 0.0   \n",
       "\n",
       "                             AHAMADI Asbahati  AHAMADI OUSSENI Ansufiddine  \\\n",
       "DNB blanc 2 général                        65                         27.0   \n",
       "Ex 1 - Programme de calculs                 0                          1.0   \n",
       "1 et 2 Suivre le programme                  0                          0.0   \n",
       "3 Renverser le programme                    0                          0.0   \n",
       "4 Toujours la même chose                    0                          0.0   \n",
       "\n",
       "                             AHAMED Fayadhi  AHMED SAID Hadaita  \\\n",
       "DNB blanc 2 général                    25.5                  75   \n",
       "Ex 1 - Programme de calculs             0.0                   3   \n",
       "1 et 2 Suivre le programme              0.0                   2   \n",
       "3 Renverser le programme                0.0                   0   \n",
       "4 Toujours la même chose                0.0                   0   \n",
       "\n",
       "                             ALI MADI Anissa  ...   MOUSSRI Bakari  \\\n",
       "DNB blanc 2 général                       72  ...               40   \n",
       "Ex 1 - Programme de calculs               10  ...                2   \n",
       "1 et 2 Suivre le programme                 6  ...                0   \n",
       "3 Renverser le programme                   0  ...                0   \n",
       "4 Toujours la même chose                   3  ...                0   \n",
       "\n",
       "                             SAID Fatoumia  SAKOTRA Claudiana  \\\n",
       "DNB blanc 2 général                     50                 60   \n",
       "Ex 1 - Programme de calculs              0                  7   \n",
       "1 et 2 Suivre le programme               0                  2   \n",
       "3 Renverser le programme                 0                  2   \n",
       "4 Toujours la même chose                 0                  0   \n",
       "\n",
       "                             TOUFAIL Salahou    moyenne   Min      Q1     ME  \\\n",
       "DNB blanc 2 général                     58.5  43.403846  21.0  27.125  41.25   \n",
       "Ex 1 - Programme de calculs              2.0   4.019231   0.0   1.250   3.00   \n",
       "1 et 2 Suivre le programme               1.0   2.692308   0.0   0.250   2.00   \n",
       "3 Renverser le programme                 0.0   0.596154   0.0   0.000   0.00   \n",
       "4 Toujours la même chose                 0.0   0.192308   0.0   0.000   0.00   \n",
       "\n",
       "                                 Q3   Max  \n",
       "DNB blanc 2 général          56.875  75.0  \n",
       "Ex 1 - Programme de calculs   6.875  11.0  \n",
       "1 et 2 Suivre le programme    5.750   6.0  \n",
       "3 Renverser le programme      1.125   3.0  \n",
       "4 Toujours la même chose      0.000   3.0  \n",
       "\n",
       "[5 rows x 35 columns]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_excel(\"./DNB_blanc2/DNB2_302.xlsx\")\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "On enlève les colonnes inutiles et on format les prénoms"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import unicodedata\n",
    "def normalize_str(s):\n",
    "    return unicodedata.normalize('NFD', s).encode('ascii', 'ignore').lower()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>b'abdallah allaoui taiassima'</th>\n",
       "      <th>b'adani ismou'</th>\n",
       "      <th>b'ahamada dhoulkamal'</th>\n",
       "      <th>b'ahamadi asbahati'</th>\n",
       "      <th>b'ahamadi ousseni ansufiddine'</th>\n",
       "      <th>b'ahamed fayadhi'</th>\n",
       "      <th>b'ahmed said hadaita'</th>\n",
       "      <th>b'ali madi anissa'</th>\n",
       "      <th>b'ali raydel'</th>\n",
       "      <th>b'attoumane ali fatima'</th>\n",
       "      <th>...</th>\n",
       "      <th>b'hamedaly doulkifly'</th>\n",
       "      <th>b'ibrahim chaharzade'</th>\n",
       "      <th>b'ibrahim nassur'</th>\n",
       "      <th>b'inoussa anchoura'</th>\n",
       "      <th>b'mohamed nadia'</th>\n",
       "      <th>b'mouhoudhoire izak'</th>\n",
       "      <th>b'moussri bakari'</th>\n",
       "      <th>b'said fatoumia'</th>\n",
       "      <th>b'sakotra claudiana'</th>\n",
       "      <th>b'toufail salahou'</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>DNB blanc 2 général</th>\n",
       "      <td>24</td>\n",
       "      <td>52.0</td>\n",
       "      <td>46.5</td>\n",
       "      <td>65</td>\n",
       "      <td>27.0</td>\n",
       "      <td>25.5</td>\n",
       "      <td>75</td>\n",
       "      <td>72</td>\n",
       "      <td>45.5</td>\n",
       "      <td>26.0</td>\n",
       "      <td>...</td>\n",
       "      <td>23.5</td>\n",
       "      <td>49.0</td>\n",
       "      <td>42.5</td>\n",
       "      <td>NaN</td>\n",
       "      <td>27.5</td>\n",
       "      <td>37</td>\n",
       "      <td>40</td>\n",
       "      <td>50</td>\n",
       "      <td>60</td>\n",
       "      <td>58.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ex 1 - Programme de calculs</th>\n",
       "      <td>3</td>\n",
       "      <td>11.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>10</td>\n",
       "      <td>9.0</td>\n",
       "      <td>6.5</td>\n",
       "      <td>...</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.5</td>\n",
       "      <td>7.5</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.5</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1 et 2 Suivre le programme</th>\n",
       "      <td>3</td>\n",
       "      <td>6.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>6.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>...</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3 Renverser le programme</th>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.5</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.5</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4 Toujours la même chose</th>\n",
       "      <td>0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 27 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                             b'abdallah allaoui taiassima'  b'adani ismou'  \\\n",
       "DNB blanc 2 général                                     24            52.0   \n",
       "Ex 1 - Programme de calculs                              3            11.0   \n",
       "1 et 2 Suivre le programme                               3             6.0   \n",
       "3 Renverser le programme                                 0             3.0   \n",
       "4 Toujours la même chose                                 0             2.0   \n",
       "\n",
       "                             b'ahamada dhoulkamal'  b'ahamadi asbahati'  \\\n",
       "DNB blanc 2 général                           46.5                   65   \n",
       "Ex 1 - Programme de calculs                    3.0                    0   \n",
       "1 et 2 Suivre le programme                     2.0                    0   \n",
       "3 Renverser le programme                       0.0                    0   \n",
       "4 Toujours la même chose                       0.0                    0   \n",
       "\n",
       "                             b'ahamadi ousseni ansufiddine'  \\\n",
       "DNB blanc 2 général                                    27.0   \n",
       "Ex 1 - Programme de calculs                             1.0   \n",
       "1 et 2 Suivre le programme                              0.0   \n",
       "3 Renverser le programme                                0.0   \n",
       "4 Toujours la même chose                                0.0   \n",
       "\n",
       "                             b'ahamed fayadhi'  b'ahmed said hadaita'  \\\n",
       "DNB blanc 2 général                       25.5                     75   \n",
       "Ex 1 - Programme de calculs                0.0                      3   \n",
       "1 et 2 Suivre le programme                 0.0                      2   \n",
       "3 Renverser le programme                   0.0                      0   \n",
       "4 Toujours la même chose                   0.0                      0   \n",
       "\n",
       "                             b'ali madi anissa'  b'ali raydel'  \\\n",
       "DNB blanc 2 général                          72           45.5   \n",
       "Ex 1 - Programme de calculs                  10            9.0   \n",
       "1 et 2 Suivre le programme                    6            6.0   \n",
       "3 Renverser le programme                      0            3.0   \n",
       "4 Toujours la même chose                      3            0.0   \n",
       "\n",
       "                             b'attoumane ali fatima'         ...          \\\n",
       "DNB blanc 2 général                             26.0         ...           \n",
       "Ex 1 - Programme de calculs                      6.5         ...           \n",
       "1 et 2 Suivre le programme                       5.0         ...           \n",
       "3 Renverser le programme                         1.5         ...           \n",
       "4 Toujours la même chose                         0.0         ...           \n",
       "\n",
       "                             b'hamedaly doulkifly'  b'ibrahim chaharzade'  \\\n",
       "DNB blanc 2 général                           23.5                   49.0   \n",
       "Ex 1 - Programme de calculs                    2.0                    4.5   \n",
       "1 et 2 Suivre le programme                     2.0                    3.0   \n",
       "3 Renverser le programme                       0.0                    0.0   \n",
       "4 Toujours la même chose                       0.0                    0.0   \n",
       "\n",
       "                             b'ibrahim nassur'  b'inoussa anchoura'  \\\n",
       "DNB blanc 2 général                       42.5                  NaN   \n",
       "Ex 1 - Programme de calculs                7.5                  NaN   \n",
       "1 et 2 Suivre le programme                 6.0                  NaN   \n",
       "3 Renverser le programme                   1.5                  NaN   \n",
       "4 Toujours la même chose                   0.0                  NaN   \n",
       "\n",
       "                             b'mohamed nadia'  b'mouhoudhoire izak'  \\\n",
       "DNB blanc 2 général                      27.5                    37   \n",
       "Ex 1 - Programme de calculs               2.5                     5   \n",
       "1 et 2 Suivre le programme                1.0                     4   \n",
       "3 Renverser le programme                  0.0                     0   \n",
       "4 Toujours la même chose                  0.0                     0   \n",
       "\n",
       "                             b'moussri bakari'  b'said fatoumia'  \\\n",
       "DNB blanc 2 général                         40                50   \n",
       "Ex 1 - Programme de calculs                  2                 0   \n",
       "1 et 2 Suivre le programme                   0                 0   \n",
       "3 Renverser le programme                     0                 0   \n",
       "4 Toujours la même chose                     0                 0   \n",
       "\n",
       "                             b'sakotra claudiana'  b'toufail salahou'  \n",
       "DNB blanc 2 général                            60                58.5  \n",
       "Ex 1 - Programme de calculs                     7                 2.0  \n",
       "1 et 2 Suivre le programme                      2                 1.0  \n",
       "3 Renverser le programme                        2                 0.0  \n",
       "4 Toujours la même chose                        0                 0.0  \n",
       "\n",
       "[5 rows x 27 columns]"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = df.drop(['competence', 'Barème','moyenne',\n",
    "       'Min', 'Q1', 'ME', 'Q3', 'Max'], 1)\n",
    "df.columns = [normalize_str(i) for i in df.columns]\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DNB blanc 2 général                       52.0\n",
       "Ex 1 - Programme de calculs               11.0\n",
       "1 et 2 Suivre le programme                 6.0\n",
       "3 Renverser le programme                   3.0\n",
       "4 Toujours la même chose                   2.0\n",
       "4 Développer F                             0.0\n",
       "Ex 2 - Choix de piste                      4.0\n",
       "1 Fraction réponse                         4.0\n",
       "1 Notation et vocabulaire                  0.0\n",
       "2 Arbre de probabilité                     0.0\n",
       "Ex 3 - Réduction sur les cahiers           4.0\n",
       "1 et 2 Raisonnement pour choisir           1.0\n",
       "1 et 2 Décomposer le problème              2.0\n",
       "1 et 2 Choix des opérations et calculs     1.0\n",
       "3 Composition des réductions               0.0\n",
       "Ex 4 - Athlétisme                          9.0\n",
       "1 Logique de la réponse                    3.0\n",
       "1 Calculs des indicateurs                  2.0\n",
       "1 Clarté des explications                  1.0\n",
       "2 Calculs                                  1.5\n",
       "2 Validité des réponses                    1.5\n",
       "2 Tests des possibilités                   0.0\n",
       "Ex 5 - Géométrie                          14.0\n",
       " Reconnaitre les théorèmes                 5.0\n",
       " Validité des calculs                      5.0\n",
       " Suivi du raisonnement géométrique         4.0\n",
       "Ex 6 - Confitures                          0.0\n",
       "1 Quantité de sucre                        0.0\n",
       "2 Calcul du volume                         0.0\n",
       "2 Nombre de pots                           0.0\n",
       "3 Dessin de l'étiquette                    0.0\n",
       "3 Mise à l'echelle                         0.0\n",
       "3 Longueur de l'étiquette                  0.0\n",
       "Ex Présentation                           10.0\n",
       " Présentation                             10.0\n",
       "Name: b'adani ismou', dtype: float64"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[b\"adani ismou\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "On enlèves les lignes calculées par excel pour ne garder que les données"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>b'abdallah allaoui taiassima'</th>\n",
       "      <th>b'adani ismou'</th>\n",
       "      <th>b'ahamada dhoulkamal'</th>\n",
       "      <th>b'ahamadi asbahati'</th>\n",
       "      <th>b'ahamadi ousseni ansufiddine'</th>\n",
       "      <th>b'ahamed fayadhi'</th>\n",
       "      <th>b'ahmed said hadaita'</th>\n",
       "      <th>b'ali madi anissa'</th>\n",
       "      <th>b'ali raydel'</th>\n",
       "      <th>b'attoumane ali fatima'</th>\n",
       "      <th>...</th>\n",
       "      <th>b'hamedaly doulkifly'</th>\n",
       "      <th>b'ibrahim chaharzade'</th>\n",
       "      <th>b'ibrahim nassur'</th>\n",
       "      <th>b'inoussa anchoura'</th>\n",
       "      <th>b'mohamed nadia'</th>\n",
       "      <th>b'mouhoudhoire izak'</th>\n",
       "      <th>b'moussri bakari'</th>\n",
       "      <th>b'said fatoumia'</th>\n",
       "      <th>b'sakotra claudiana'</th>\n",
       "      <th>b'toufail salahou'</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1 et 2 Suivre le programme</th>\n",
       "      <td>3</td>\n",
       "      <td>6.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>6.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>...</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3 Renverser le programme</th>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.5</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.5</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4 Toujours la même chose</th>\n",
       "      <td>0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4 Développer F</th>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.5</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1 Fraction réponse</th>\n",
       "      <td>4</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>...</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 27 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                            b'abdallah allaoui taiassima'  b'adani ismou'  \\\n",
       "1 et 2 Suivre le programme                              3             6.0   \n",
       "3 Renverser le programme                                0             3.0   \n",
       "4 Toujours la même chose                                0             2.0   \n",
       "4 Développer F                                          0             0.0   \n",
       "1 Fraction réponse                                      4             4.0   \n",
       "\n",
       "                            b'ahamada dhoulkamal'  b'ahamadi asbahati'  \\\n",
       "1 et 2 Suivre le programme                    2.0                    0   \n",
       "3 Renverser le programme                      0.0                    0   \n",
       "4 Toujours la même chose                      0.0                    0   \n",
       "4 Développer F                                1.0                    0   \n",
       "1 Fraction réponse                            4.0                    4   \n",
       "\n",
       "                            b'ahamadi ousseni ansufiddine'  b'ahamed fayadhi'  \\\n",
       "1 et 2 Suivre le programme                             0.0                0.0   \n",
       "3 Renverser le programme                               0.0                0.0   \n",
       "4 Toujours la même chose                               0.0                0.0   \n",
       "4 Développer F                                         1.0                0.0   \n",
       "1 Fraction réponse                                     3.0                4.0   \n",
       "\n",
       "                            b'ahmed said hadaita'  b'ali madi anissa'  \\\n",
       "1 et 2 Suivre le programme                      2                   6   \n",
       "3 Renverser le programme                        0                   0   \n",
       "4 Toujours la même chose                        0                   3   \n",
       "4 Développer F                                  1                   1   \n",
       "1 Fraction réponse                              4                   4   \n",
       "\n",
       "                            b'ali raydel'  b'attoumane ali fatima'  \\\n",
       "1 et 2 Suivre le programme            6.0                      5.0   \n",
       "3 Renverser le programme              3.0                      1.5   \n",
       "4 Toujours la même chose              0.0                      0.0   \n",
       "4 Développer F                        0.0                      0.0   \n",
       "1 Fraction réponse                    4.0                      4.0   \n",
       "\n",
       "                                   ...          b'hamedaly doulkifly'  \\\n",
       "1 et 2 Suivre le programme         ...                            2.0   \n",
       "3 Renverser le programme           ...                            0.0   \n",
       "4 Toujours la même chose           ...                            0.0   \n",
       "4 Développer F                     ...                            0.0   \n",
       "1 Fraction réponse                 ...                            3.0   \n",
       "\n",
       "                            b'ibrahim chaharzade'  b'ibrahim nassur'  \\\n",
       "1 et 2 Suivre le programme                    3.0                6.0   \n",
       "3 Renverser le programme                      0.0                1.5   \n",
       "4 Toujours la même chose                      0.0                0.0   \n",
       "4 Développer F                                1.5                0.0   \n",
       "1 Fraction réponse                            4.0                4.0   \n",
       "\n",
       "                            b'inoussa anchoura'  b'mohamed nadia'  \\\n",
       "1 et 2 Suivre le programme                  NaN               1.0   \n",
       "3 Renverser le programme                    NaN               0.0   \n",
       "4 Toujours la même chose                    NaN               0.0   \n",
       "4 Développer F                              NaN               1.5   \n",
       "1 Fraction réponse                          NaN               4.0   \n",
       "\n",
       "                            b'mouhoudhoire izak'  b'moussri bakari'  \\\n",
       "1 et 2 Suivre le programme                     4                  0   \n",
       "3 Renverser le programme                       0                  0   \n",
       "4 Toujours la même chose                       0                  0   \n",
       "4 Développer F                                 1                  2   \n",
       "1 Fraction réponse                             4                  4   \n",
       "\n",
       "                            b'said fatoumia'  b'sakotra claudiana'  \\\n",
       "1 et 2 Suivre le programme                 0                     2   \n",
       "3 Renverser le programme                   0                     2   \n",
       "4 Toujours la même chose                   0                     0   \n",
       "4 Développer F                             0                     3   \n",
       "1 Fraction réponse                         4                     4   \n",
       "\n",
       "                            b'toufail salahou'  \n",
       "1 et 2 Suivre le programme                 1.0  \n",
       "3 Renverser le programme                   0.0  \n",
       "4 Toujours la même chose                   0.0  \n",
       "4 Développer F                             1.0  \n",
       "1 Fraction réponse                         4.0  \n",
       "\n",
       "[5 rows x 27 columns]"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = df[list(~df.reset_index()[\"index\"].apply(lambda x: x.startswith(\"Ex\") or x.startswith(\"DNB\")))]\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>b'abdallah allaoui taiassima'</th>\n",
       "      <th>b'adani ismou'</th>\n",
       "      <th>b'ahamada dhoulkamal'</th>\n",
       "      <th>b'ahamadi asbahati'</th>\n",
       "      <th>b'ahamadi ousseni ansufiddine'</th>\n",
       "      <th>b'ahamed fayadhi'</th>\n",
       "      <th>b'ahmed said hadaita'</th>\n",
       "      <th>b'ali madi anissa'</th>\n",
       "      <th>b'ali raydel'</th>\n",
       "      <th>...</th>\n",
       "      <th>b'hamedaly doulkifly'</th>\n",
       "      <th>b'ibrahim chaharzade'</th>\n",
       "      <th>b'ibrahim nassur'</th>\n",
       "      <th>b'inoussa anchoura'</th>\n",
       "      <th>b'mohamed nadia'</th>\n",
       "      <th>b'mouhoudhoire izak'</th>\n",
       "      <th>b'moussri bakari'</th>\n",
       "      <th>b'said fatoumia'</th>\n",
       "      <th>b'sakotra claudiana'</th>\n",
       "      <th>b'toufail salahou'</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1 et 2 Suivre le programme</td>\n",
       "      <td>3</td>\n",
       "      <td>6.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>6.0</td>\n",
       "      <td>...</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3 Renverser le programme</td>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.5</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4 Toujours la même chose</td>\n",
       "      <td>0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4 Développer F</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.5</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1 Fraction réponse</td>\n",
       "      <td>4</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4.0</td>\n",
       "      <td>...</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 28 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                        index  b'abdallah allaoui taiassima'  b'adani ismou'  \\\n",
       "0  1 et 2 Suivre le programme                              3             6.0   \n",
       "1    3 Renverser le programme                              0             3.0   \n",
       "2    4 Toujours la même chose                              0             2.0   \n",
       "3              4 Développer F                              0             0.0   \n",
       "4          1 Fraction réponse                              4             4.0   \n",
       "\n",
       "   b'ahamada dhoulkamal'  b'ahamadi asbahati'  b'ahamadi ousseni ansufiddine'  \\\n",
       "0                    2.0                    0                             0.0   \n",
       "1                    0.0                    0                             0.0   \n",
       "2                    0.0                    0                             0.0   \n",
       "3                    1.0                    0                             1.0   \n",
       "4                    4.0                    4                             3.0   \n",
       "\n",
       "   b'ahamed fayadhi'  b'ahmed said hadaita'  b'ali madi anissa'  \\\n",
       "0                0.0                      2                   6   \n",
       "1                0.0                      0                   0   \n",
       "2                0.0                      0                   3   \n",
       "3                0.0                      1                   1   \n",
       "4                4.0                      4                   4   \n",
       "\n",
       "   b'ali raydel'         ...          b'hamedaly doulkifly'  \\\n",
       "0            6.0         ...                            2.0   \n",
       "1            3.0         ...                            0.0   \n",
       "2            0.0         ...                            0.0   \n",
       "3            0.0         ...                            0.0   \n",
       "4            4.0         ...                            3.0   \n",
       "\n",
       "   b'ibrahim chaharzade'  b'ibrahim nassur'  b'inoussa anchoura'  \\\n",
       "0                    3.0                6.0                  NaN   \n",
       "1                    0.0                1.5                  NaN   \n",
       "2                    0.0                0.0                  NaN   \n",
       "3                    1.5                0.0                  NaN   \n",
       "4                    4.0                4.0                  NaN   \n",
       "\n",
       "   b'mohamed nadia'  b'mouhoudhoire izak'  b'moussri bakari'  \\\n",
       "0               1.0                     4                  0   \n",
       "1               0.0                     0                  0   \n",
       "2               0.0                     0                  0   \n",
       "3               1.5                     1                  2   \n",
       "4               4.0                     4                  4   \n",
       "\n",
       "   b'said fatoumia'  b'sakotra claudiana'  b'toufail salahou'  \n",
       "0                 0                     2                 1.0  \n",
       "1                 0                     2                 0.0  \n",
       "2                 0                     0                 0.0  \n",
       "3                 0                     3                 1.0  \n",
       "4                 4                     4                 4.0  \n",
       "\n",
       "[5 rows x 28 columns]"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = df.reset_index()\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>b'abdallah allaoui taiassima'</th>\n",
       "      <th>b'adani ismou'</th>\n",
       "      <th>b'ahamada dhoulkamal'</th>\n",
       "      <th>b'ahamadi asbahati'</th>\n",
       "      <th>b'ahamadi ousseni ansufiddine'</th>\n",
       "      <th>b'ahamed fayadhi'</th>\n",
       "      <th>b'ahmed said hadaita'</th>\n",
       "      <th>b'ali madi anissa'</th>\n",
       "      <th>b'ali raydel'</th>\n",
       "      <th>...</th>\n",
       "      <th>b'ibrahim chaharzade'</th>\n",
       "      <th>b'ibrahim nassur'</th>\n",
       "      <th>b'inoussa anchoura'</th>\n",
       "      <th>b'mohamed nadia'</th>\n",
       "      <th>b'mouhoudhoire izak'</th>\n",
       "      <th>b'moussri bakari'</th>\n",
       "      <th>b'said fatoumia'</th>\n",
       "      <th>b'sakotra claudiana'</th>\n",
       "      <th>b'toufail salahou'</th>\n",
       "      <th>q_name</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1 et 2 Suivre le programme</td>\n",
       "      <td>3</td>\n",
       "      <td>6.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>6.0</td>\n",
       "      <td>...</td>\n",
       "      <td>3.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>b'1 et 2 suivre le programme'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3 Renverser le programme</td>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.5</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.0</td>\n",
       "      <td>b'3 renverser le programme'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4 Toujours la même chose</td>\n",
       "      <td>0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>b'4 toujours la meme chose'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4 Développer F</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.5</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1.0</td>\n",
       "      <td>b'4 developper f'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1 Fraction réponse</td>\n",
       "      <td>4</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4.0</td>\n",
       "      <td>...</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4.0</td>\n",
       "      <td>b'1 fraction reponse'</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 29 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                        index  b'abdallah allaoui taiassima'  b'adani ismou'  \\\n",
       "0  1 et 2 Suivre le programme                              3             6.0   \n",
       "1    3 Renverser le programme                              0             3.0   \n",
       "2    4 Toujours la même chose                              0             2.0   \n",
       "3              4 Développer F                              0             0.0   \n",
       "4          1 Fraction réponse                              4             4.0   \n",
       "\n",
       "   b'ahamada dhoulkamal'  b'ahamadi asbahati'  b'ahamadi ousseni ansufiddine'  \\\n",
       "0                    2.0                    0                             0.0   \n",
       "1                    0.0                    0                             0.0   \n",
       "2                    0.0                    0                             0.0   \n",
       "3                    1.0                    0                             1.0   \n",
       "4                    4.0                    4                             3.0   \n",
       "\n",
       "   b'ahamed fayadhi'  b'ahmed said hadaita'  b'ali madi anissa'  \\\n",
       "0                0.0                      2                   6   \n",
       "1                0.0                      0                   0   \n",
       "2                0.0                      0                   3   \n",
       "3                0.0                      1                   1   \n",
       "4                4.0                      4                   4   \n",
       "\n",
       "   b'ali raydel'              ...                b'ibrahim chaharzade'  \\\n",
       "0            6.0              ...                                  3.0   \n",
       "1            3.0              ...                                  0.0   \n",
       "2            0.0              ...                                  0.0   \n",
       "3            0.0              ...                                  1.5   \n",
       "4            4.0              ...                                  4.0   \n",
       "\n",
       "   b'ibrahim nassur'  b'inoussa anchoura'  b'mohamed nadia'  \\\n",
       "0                6.0                  NaN               1.0   \n",
       "1                1.5                  NaN               0.0   \n",
       "2                0.0                  NaN               0.0   \n",
       "3                0.0                  NaN               1.5   \n",
       "4                4.0                  NaN               4.0   \n",
       "\n",
       "   b'mouhoudhoire izak'  b'moussri bakari'  b'said fatoumia'  \\\n",
       "0                     4                  0                 0   \n",
       "1                     0                  0                 0   \n",
       "2                     0                  0                 0   \n",
       "3                     1                  2                 0   \n",
       "4                     4                  4                 4   \n",
       "\n",
       "   b'sakotra claudiana'  b'toufail salahou'                         q_name  \n",
       "0                     2                 1.0  b'1 et 2 suivre le programme'  \n",
       "1                     2                 0.0    b'3 renverser le programme'  \n",
       "2                     0                 0.0    b'4 toujours la meme chose'  \n",
       "3                     3                 1.0              b'4 developper f'  \n",
       "4                     4                 4.0          b'1 fraction reponse'  \n",
       "\n",
       "[5 rows x 29 columns]"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = df.assign(\n",
    "    q_name = df[\"index\"].apply(normalize_str),\n",
    "        )\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>q_name</th>\n",
       "      <th>level_2</th>\n",
       "      <th>0</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1 et 2 Suivre le programme</td>\n",
       "      <td>b'1 et 2 suivre le programme'</td>\n",
       "      <td>b'abdallah allaoui taiassima'</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1 et 2 Suivre le programme</td>\n",
       "      <td>b'1 et 2 suivre le programme'</td>\n",
       "      <td>b'adani ismou'</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1 et 2 Suivre le programme</td>\n",
       "      <td>b'1 et 2 suivre le programme'</td>\n",
       "      <td>b'ahamada dhoulkamal'</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1 et 2 Suivre le programme</td>\n",
       "      <td>b'1 et 2 suivre le programme'</td>\n",
       "      <td>b'ahamadi asbahati'</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1 et 2 Suivre le programme</td>\n",
       "      <td>b'1 et 2 suivre le programme'</td>\n",
       "      <td>b'ahamadi ousseni ansufiddine'</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                        index                         q_name  \\\n",
       "0  1 et 2 Suivre le programme  b'1 et 2 suivre le programme'   \n",
       "1  1 et 2 Suivre le programme  b'1 et 2 suivre le programme'   \n",
       "2  1 et 2 Suivre le programme  b'1 et 2 suivre le programme'   \n",
       "3  1 et 2 Suivre le programme  b'1 et 2 suivre le programme'   \n",
       "4  1 et 2 Suivre le programme  b'1 et 2 suivre le programme'   \n",
       "\n",
       "                          level_2    0  \n",
       "0   b'abdallah allaoui taiassima'  3.0  \n",
       "1                  b'adani ismou'  6.0  \n",
       "2           b'ahamada dhoulkamal'  2.0  \n",
       "3             b'ahamadi asbahati'  0.0  \n",
       "4  b'ahamadi ousseni ansufiddine'  0.0  "
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = df.set_index([\"index\", \"q_name\"]).stack().reset_index()\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "df = df.rename(columns={0:\"value\", \"level_2\": \"norm_surname\"})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Il ne reste plus qu'à trouver les correspondances avec la base de données."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "sqlite_datas = pull_sqlite(34, conn)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Les élèves"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>name</th>\n",
       "      <th>surname</th>\n",
       "      <th>mail</th>\n",
       "      <th>commment</th>\n",
       "      <th>tribe_id</th>\n",
       "      <th>norm_surname</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>ABDALLAH ALLAOUI</td>\n",
       "      <td>Taiassima</td>\n",
       "      <td></td>\n",
       "      <td>None</td>\n",
       "      <td>1</td>\n",
       "      <td>b'abdallah allaoui taiassima'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>ADANI</td>\n",
       "      <td>Ismou</td>\n",
       "      <td></td>\n",
       "      <td>None</td>\n",
       "      <td>1</td>\n",
       "      <td>b'adani ismou'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>AHAMADA</td>\n",
       "      <td>Dhoulkamal</td>\n",
       "      <td></td>\n",
       "      <td>None</td>\n",
       "      <td>1</td>\n",
       "      <td>b'ahamada dhoulkamal'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>AHAMADI</td>\n",
       "      <td>Asbahati</td>\n",
       "      <td></td>\n",
       "      <td>None</td>\n",
       "      <td>1</td>\n",
       "      <td>b'ahamadi asbahati'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>AHAMADI OUSSENI</td>\n",
       "      <td>Ansufiddine</td>\n",
       "      <td></td>\n",
       "      <td>None</td>\n",
       "      <td>1</td>\n",
       "      <td>b'ahamadi ousseni ansufiddine'</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   id              name      surname mail commment  tribe_id  \\\n",
       "0   1  ABDALLAH ALLAOUI    Taiassima          None         1   \n",
       "1   2             ADANI        Ismou          None         1   \n",
       "2   3           AHAMADA   Dhoulkamal          None         1   \n",
       "3   4           AHAMADI     Asbahati          None         1   \n",
       "4   5   AHAMADI OUSSENI  Ansufiddine          None         1   \n",
       "\n",
       "                     norm_surname  \n",
       "0   b'abdallah allaoui taiassima'  \n",
       "1                  b'adani ismou'  \n",
       "2           b'ahamada dhoulkamal'  \n",
       "3             b'ahamadi asbahati'  \n",
       "4  b'ahamadi ousseni ansufiddine'  "
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def tmp(x):\n",
    "    return normalize_str(\" \".join([x[\"name\"], x['surname']]))\n",
    "st_df = sqlite_datas[\"students\"]\n",
    "st_df = st_df.assign(\n",
    "    norm_surname = st_df[[\"surname\", \"name\"]].apply(tmp,1)\n",
    ")\n",
    "st_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "set()"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "set(df['norm_surname'].unique()).difference(set(st_df['norm_surname'].unique()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{b'inoussa anchoura'}"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "set(st_df['norm_surname'].unique()).difference(set(df['norm_surname'].unique()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "df = pd.merge(df, st_df, left_on='norm_surname', right_on=\"norm_surname\")[[\"q_name\", \"id\", \"value\"]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>q_name</th>\n",
       "      <th>id</th>\n",
       "      <th>value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>b'1 et 2 suivre le programme'</td>\n",
       "      <td>1</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>b'3 renverser le programme'</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>b'4 toujours la meme chose'</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>b'4 developper f'</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>b'1 fraction reponse'</td>\n",
       "      <td>1</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                          q_name  id  value\n",
       "0  b'1 et 2 suivre le programme'   1    3.0\n",
       "1    b'3 renverser le programme'   1    0.0\n",
       "2    b'4 toujours la meme chose'   1    0.0\n",
       "3              b'4 developper f'   1    0.0\n",
       "4          b'1 fraction reponse'   1    4.0"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Les questions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>name</th>\n",
       "      <th>score_rate</th>\n",
       "      <th>is_leveled</th>\n",
       "      <th>exercise_id</th>\n",
       "      <th>competence</th>\n",
       "      <th>domain</th>\n",
       "      <th>comment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>400</td>\n",
       "      <td>1 et 2</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>122</td>\n",
       "      <td>Cal</td>\n",
       "      <td>Programme de calculs</td>\n",
       "      <td>Suivre le programme</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>401</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>122</td>\n",
       "      <td>Rai</td>\n",
       "      <td>Programme de calculs</td>\n",
       "      <td>Renverser le programme</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>402</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>122</td>\n",
       "      <td>Rai</td>\n",
       "      <td>Programme de calculs</td>\n",
       "      <td>Toujours la même chose</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>403</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>122</td>\n",
       "      <td>Cal</td>\n",
       "      <td>Programme de calculs</td>\n",
       "      <td>Développer F</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>404</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>123</td>\n",
       "      <td>Com</td>\n",
       "      <td>Probablilité</td>\n",
       "      <td>Notation et vocabulaire</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    id    name  score_rate  is_leveled  exercise_id competence  \\\n",
       "0  400  1 et 2           6           0          122        Cal   \n",
       "1  401       3           3           0          122        Rai   \n",
       "2  402       4           3           0          122        Rai   \n",
       "3  403       4           3           0          122        Cal   \n",
       "0  404       1           8           0          123        Com   \n",
       "\n",
       "                 domain                  comment  \n",
       "0  Programme de calculs      Suivre le programme  \n",
       "1  Programme de calculs   Renverser le programme  \n",
       "2  Programme de calculs   Toujours la même chose  \n",
       "3  Programme de calculs             Développer F  \n",
       "0          Probablilité  Notation et vocabulaire  "
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q_df = sqlite_datas[\"questions\"]\n",
    "q_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def tmp(x):\n",
    "    return normalize_str(\" \".join([x[\"name\"], x['comment']]))\n",
    "q_df = q_df.assign(\n",
    "    q_name = q_df.apply(tmp, 1)\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "set()"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "set(q_df[\"q_name\"].unique()).difference(set(df[\"q_name\"].unique()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([b'1 et 2 suivre le programme', b'3 renverser le programme',\n",
       "       b'4 toujours la meme chose', b'4 developper f',\n",
       "       b'1 fraction reponse', b'1 notation et vocabulaire',\n",
       "       b'2 arbre de probabilite', b'1 et 2 raisonnement pour choisir',\n",
       "       b'1 et 2 decomposer le probleme',\n",
       "       b'1 et 2 choix des operations et calculs',\n",
       "       b'3 composition des reductions', b'1 logique de la reponse',\n",
       "       b'1 calculs des indicateurs', b'1 clarte des explications',\n",
       "       b'2 calculs', b'2 validite des reponses',\n",
       "       b'2 tests des possibilites', b' reconnaitre les theoremes',\n",
       "       b' validite des calculs', b' suivi du raisonnement geometrique',\n",
       "       b'1 quantite de sucre', b'2 calcul du volume', b'2 nombre de pots',\n",
       "       b\"3 dessin de l'etiquette\", b\"3 mise a l'echelle\",\n",
       "       b\"3 longueur de l'etiquette\", b' presentation'], dtype=object)"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[\"q_name\"].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "df = pd.merge(df, q_df, left_on=\"q_name\", right_on=\"q_name\")[[\"id_x\", \"id_y\", \"value\"]]\\\n",
    "    .rename(columns={\"id_x\": \"student_id\", \"id_y\": \"question_id\"})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Yes ça y est je dois les avoir!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>student_id</th>\n",
       "      <th>question_id</th>\n",
       "      <th>value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>400</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>400</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>400</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>400</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>400</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   student_id  question_id  value\n",
       "0           1          400    3.0\n",
       "1           2          400    6.0\n",
       "2           3          400    2.0\n",
       "3           4          400    0.0\n",
       "4           5          400    0.0"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Et maintenant on sauvegarde tout!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "df.to_sql(\"score\", conn, if_exists='append', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'fdsqfdsq' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-30-a7adbbdd0ac1>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mfdsqfdsq\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m: name 'fdsqfdsq' is not defined"
     ]
    }
   ],
   "source": [
    "fdsqfdsq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Fait au DNB blanc 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "wb = xlsxwriter.Workbook(\"DNB_BLANC_pro1.xlsx\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Formatages"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "eval_format = wb.add_format({'bold': True, 'font_color': 'red'})\n",
    "eval_cell = wb.add_format()\n",
    "eval_cell.set_bg_color(\"red\")\n",
    "# exo_cell"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "La feuille de calcul"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "wb = xlsxwriter.Workbook(\"DS4_302.xlsx\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "ws = wb.add_worksheet()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "En tête du tableau"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "ws.write(0,1,\"Competence\")\n",
    "ws.write(0,2,\"Barème\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Toutes les questions et exercices"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def q_line(q, row, ws):\n",
    "    ws.write(row, 0, f\"{q.name} - {q.comment}\")\n",
    "    ws.write(row, 1, f\"{q.competence}\")\n",
    "    ws.write(row, 2, q.score_rate)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def exo_block(exo, row, ws):\n",
    "    qrow = row\n",
    "    for q in exo[\"questions\"]:\n",
    "        qrow += 1\n",
    "        q_line(q, qrow, ws)\n",
    "    ws.write(row, 0, f\"Ex {exo['name']}\")\n",
    "    row_range = \", \".join([f\"C{i}\" for i in range(row+2, qrow+2)])\n",
    "    for i in range(30):\n",
    "        ws.write(row, i+2, f\"=SUM({row_range})\")\n",
    "    return qrow"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true,
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "row = 2\n",
    "exo_rows = []\n",
    "for exo in ev.exercises:\n",
    "    exo_rows.append(row)\n",
    "    row = exo_block(exo, row, ws) + 1\n",
    "ws.write(1,0, ev.name, eval_format)\n",
    "exo_xls_range = \", \".join([f\"C{i+1}\" for i in exo_rows])\n",
    "for i in range(30):\n",
    "    ws.write(1,i+2, f\"=SUM({exo_xls_range})\", eval_format)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "wb.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Avec openpyxl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from openpyxl import Workbook\n",
    "from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font, colors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "colors.RED"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "wb = Workbook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "ws = wb.create_sheet(ev.name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "ws.cell(1,2,\"Competence\")\n",
    "ws.cell(1,3,\"Barème\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def q_line(q, row, ws):\n",
    "    ws.cell(row, 1, f\"{q.name} - {q.comment}\")\n",
    "    ws.cell(row, 2, f\"{q.competence}\")\n",
    "    ws.cell(row, 3, q.score_rate)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def exo_block(exo, row, ws):\n",
    "    qrow = row\n",
    "    for q in exo[\"questions\"]:\n",
    "        qrow += 1\n",
    "        q_line(q, qrow, ws)\n",
    "    ws.cell(row, 1, f\"Ex {exo['name']}\")\n",
    "    row_range = \", \".join([f\"C{i}\" for i in range(row+1, qrow+1)])\n",
    "    ws.cell(row, 3, f\"=SUM({row_range})\")\n",
    "    return qrow"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "row = 3\n",
    "exo_rows = []\n",
    "for exo in ev.exercises:\n",
    "    exo_rows.append(row)\n",
    "    row = exo_block(exo, row, ws) + 1\n",
    "eval_row = ws.row_dimensions[2]\n",
    "eval_row.fill = PatternFill(bgColor=colors.RED)\n",
    "ws.cell(2,1, ev.name)\n",
    "exo_xls_range = \", \".join([f\"C{i}\" for i in exo_rows])\n",
    "ws.cell(2,3, f\"=SUM({exo_xls_range})\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "ev.tribe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "wb.save(f\"./{ev.name}-{ev.tribe}.xlsx\")"
   ]
  },
  {
   "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.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}