diff --git a/Notes/DB vers xlsx.ipynb b/Notes/DB vers xlsx.ipynb index e2376f0..eaefe56 100644 --- a/Notes/DB vers xlsx.ipynb +++ b/Notes/DB vers xlsx.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 6, + "execution_count": 2, "metadata": { "collapsed": true }, @@ -13,20 +13,19 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": true - }, + "execution_count": 39, + "metadata": {}, "outputs": [], "source": [ - "from repytex.tools.evaluation import Evaluation\n", - "from repytex.tools.sqlite_getters import all_ev_description\n", + "from repytex.worksheets.worksheet import pull_datas\n", + "import pandas as pd\n", + "import numpy as np\n", "import sqlite3" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 4, "metadata": { "collapsed": true }, @@ -37,7 +36,177 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, + "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": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "datas = pull_datas(1, conn)\n", + "datas" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'DS1 mise en jambe'" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "datas['evaluation'][\"name\"][0]" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "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": 65, "metadata": {}, "outputs": [ { @@ -63,220 +232,108 @@ " \n", " id\n", " name\n", - " term\n", - " t_id\n", + " score_rate\n", + " is_leveled\n", + " exercise_id\n", + " competence\n", + " domain\n", + " comment\n", + " Nom\n", " \n", " \n", " \n", " \n", " 0\n", " 1\n", - " DS1 mise en jambe\n", + " 1\n", + " 0\n", " 1\n", " 1\n", + " Cher\n", + " Grandeurs\n", + " Lecture du thermomètre\n", + " 1 Lecture du thermomètre\n", " \n", " \n", " 1\n", " 2\n", - " DS1\n", - " 1\n", " 2\n", + " 0\n", + " 1\n", + " 1\n", + " Cal\n", + " Grandeurs\n", + " Suivre programme de calculs\n", + " 2 Suivre programme de calculs\n", " \n", " \n", " 2\n", " 3\n", - " DS1\n", + " 2.c\n", + " 0\n", " 1\n", - " 3\n", + " 1\n", + " Cal\n", + " Grandeurs\n", + " Renverser un programme de calculs\n", + " 2.c Renverser un programme de calculs\n", " \n", " \n", - " 3\n", + " 0\n", " 4\n", - " DS2\n", + " \n", + " 0\n", " 1\n", " 2\n", + " Cher\n", + " 4opérations\n", + " Lire le tableau et le graphique\n", + " Lire le tableau et le graphique\n", " \n", " \n", - " 4\n", + " 1\n", " 5\n", - " DS2\n", - " 1\n", - " 1\n", - " \n", - " \n", - " 5\n", - " 6\n", - " DS2\n", - " 1\n", - " 3\n", - " \n", - " \n", - " 6\n", - " 7\n", - " DS3\n", - " 1\n", - " 3\n", - " \n", - " \n", - " 7\n", - " 8\n", - " Pyramide de pièces\n", - " 1\n", - " 1\n", - " \n", - " \n", - " 8\n", - " 9\n", - " DS3\n", + " \n", + " 0\n", " 1\n", " 2\n", - " \n", - " \n", - " 9\n", - " 10\n", - " DS3\n", - " 1\n", - " 1\n", - " \n", - " \n", - " 10\n", - " 11\n", - " DS4\n", - " 2\n", - " 3\n", - " \n", - " \n", - " 11\n", - " 13\n", - " DS5\n", - " 2\n", - " 3\n", - " \n", - " \n", - " 12\n", - " 14\n", - " DM noel\n", - " 2\n", - " 1\n", - " \n", - " \n", - " 13\n", - " 15\n", - " DM noel\n", - " 2\n", - " 2\n", - " \n", - " \n", - " 14\n", - " 16\n", - " DS4\n", - " 2\n", - " 1\n", - " \n", - " \n", - " 15\n", - " 17\n", - " DS4\n", - " 2\n", - " 2\n", - " \n", - " \n", - " 16\n", - " 18\n", - " DS6\n", - " 2\n", - " 3\n", - " \n", - " \n", - " 17\n", - " 19\n", - " CM1\n", - " 2\n", - " 2\n", - " \n", - " \n", - " 18\n", - " 20\n", - " DNB blanc1\n", - " 2\n", - " 2\n", - " \n", - " \n", - " 19\n", - " 21\n", - " DNB blanc1\n", - " 2\n", - " 1\n", + " Cher\n", + " 4opérations\n", + " Décomposer le problème\n", + " Décomposer le problème\n", " \n", " \n", "\n", "" ], "text/plain": [ - " id name term t_id\n", - "0 1 DS1 mise en jambe 1 1\n", - "1 2 DS1 1 2\n", - "2 3 DS1 1 3\n", - "3 4 DS2 1 2\n", - "4 5 DS2 1 1\n", - "5 6 DS2 1 3\n", - "6 7 DS3 1 3\n", - "7 8 Pyramide de pièces 1 1\n", - "8 9 DS3 1 2\n", - "9 10 DS3 1 1\n", - "10 11 DS4 2 3\n", - "11 13 DS5 2 3\n", - "12 14 DM noel 2 1\n", - "13 15 DM noel 2 2\n", - "14 16 DS4 2 1\n", - "15 17 DS4 2 2\n", - "16 18 DS6 2 3\n", - "17 19 CM1 2 2\n", - "18 20 DNB blanc1 2 2\n", - "19 21 DNB blanc1 2 1" + " 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": 9, + "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "all_ev_description(conn)" + "q_df.head()" ] }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "ev = Evaluation.from_sqlite(21, conn)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'DNB blanc1'" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ev.name" - ] - }, - { - "cell_type": "code", - "execution_count": 12, + "execution_count": 66, "metadata": {}, "outputs": [ { @@ -310,58 +367,18 @@ " \n", " \n", " 0\n", - " 64\n", - " 1 - QCM\n", - " 21\n", - " 2018-02-07 00:00:00.000000\n", + " 1\n", + " 1 - Prendre la température\n", + " 1\n", + " 2017-09-05 00:00:00.000000\n", " \n", " \n", " \n", " 1\n", - " 65\n", - " 2 - Boite de chocolat\n", - " 21\n", - " 2018-02-07 00:00:00.000000\n", - " \n", - " \n", - " \n", - " 2\n", - " 66\n", - " 3 - Scratch\n", - " 21\n", - " 2018-02-07 00:00:00.000000\n", - " \n", - " \n", - " \n", - " 3\n", - " 67\n", - " 4 - Programme de calcul\n", - " 21\n", - " 2018-02-07 00:00:00.000000\n", - " \n", - " \n", - " \n", - " 4\n", - " 68\n", - " 5 - Macaron\n", - " 21\n", - " 2018-02-07 00:00:00.000000\n", - " \n", - " \n", - " \n", - " 5\n", - " 69\n", - " 6 - Inspecteur\n", - " 21\n", - " 2018-02-07 00:00:00.000000\n", - " \n", - " \n", - " \n", - " 6\n", - " 70\n", - " 7 - La tache\n", - " 21\n", - " 2018-02-07 00:00:00.000000\n", + " 2\n", + " 2 - Maladroite!\n", + " 1\n", + " 2017-09-05 00:00:00.000000\n", " \n", " \n", " \n", @@ -369,23 +386,347 @@ "" ], "text/plain": [ - " id name eval_id date comment\n", - "0 64 1 - QCM 21 2018-02-07 00:00:00.000000 \n", - "1 65 2 - Boite de chocolat 21 2018-02-07 00:00:00.000000 \n", - "2 66 3 - Scratch 21 2018-02-07 00:00:00.000000 \n", - "3 67 4 - Programme de calcul 21 2018-02-07 00:00:00.000000 \n", - "4 68 5 - Macaron 21 2018-02-07 00:00:00.000000 \n", - "5 69 6 - Inspecteur 21 2018-02-07 00:00:00.000000 \n", - "6 70 7 - La tache 21 2018-02-07 00:00:00.000000 " + " 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": 12, + "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "ev.ex_df" + "datas[\"exercises\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
score_ratecompetenceidnameeval_iddatecommentNomexercise_id
00Cher-Cal-Cal11 - Prendre la température12017-09-05 00:00:00.000000Ex 1 - Prendre la température1
10Cher-Cher-Rai-Cal-Com22 - Maladroite!12017-09-05 00:00:00.000000Ex 2 - Maladroite!2
\n", + "
" + ], + "text/plain": [ + " score_rate competence id name eval_id \\\n", + "0 0 Cher-Cal-Cal 1 1 - Prendre la température 1 \n", + "1 0 Cher-Cher-Rai-Cal-Com 2 2 - Maladroite! 1 \n", + "\n", + " date comment Nom \\\n", + "0 2017-09-05 00:00:00.000000 Ex 1 - Prendre la température \n", + "1 2017-09-05 00:00:00.000000 Ex 2 - Maladroite! \n", + "\n", + " exercise_id \n", + "0 1 \n", + "1 2 " + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "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": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Nomcompetencescore_rateexercise_id
0Ex 1 - Prendre la températureCher-Cal-Cal01
01 Lecture du thermomètreCher01
12 Suivre programme de calculsCal01
22.c Renverser un programme de calculsCal01
1Ex 2 - Maladroite!Cher-Cher-Rai-Cal-Com02
0Lire le tableau et le graphiqueCher02
1Décomposer le problèmeCher02
2Manipuler les grandeursRai02
3Mener à bien les calculsCal02
4RédactionCom02
\n", + "
" + ], + "text/plain": [ + " Nom competence score_rate \\\n", + "0 Ex 1 - Prendre la température Cher-Cal-Cal 0 \n", + "0 1 Lecture du thermomètre Cher 0 \n", + "1 2 Suivre programme de calculs Cal 0 \n", + "2 2.c Renverser un programme de calculs Cal 0 \n", + "1 Ex 2 - Maladroite! Cher-Cher-Rai-Cal-Com 0 \n", + "0 Lire le tableau et le graphique Cher 0 \n", + "1 Décomposer le problème Cher 0 \n", + "2 Manipuler les grandeurs Rai 0 \n", + "3 Mener à bien les calculs Cal 0 \n", + "4 Rédaction Com 0 \n", + "\n", + " exercise_id \n", + "0 1 \n", + "0 1 \n", + "1 1 \n", + "2 1 \n", + "1 2 \n", + "0 2 \n", + "1 2 \n", + "2 2 \n", + "3 2 \n", + "4 2 " + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "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": 86, + "metadata": {}, + "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": 87, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "workbook = writer.book\n", + "worksheet = writer.sheets['DNB blanc 2']" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "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": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "writer.save()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fait au DNB blanc 1" ] }, {