diff --git a/2gt1/221214_DS2.csv b/2gt1/221214_DS2.csv new file mode 100644 index 0000000..1def4cb --- /dev/null +++ b/2gt1/221214_DS2.csv @@ -0,0 +1,35 @@ +Copie;A:Nom;Nom;Note;Image_f;Image_g;antecedents;calculer_proba_5;calculer_proba_fille_betedeville;calculer_proba_garcon;comparaison_fonction;def_equalite;egalite;equation;inequation;mult_vecteurs;nombre_issues;somme_3_vecteurs;somme_debut_different;somme_debut_different_hors;somme_meme_debut;tracer_somme_complexe;tracer_somme_simple;translation +21;ACHOUR Ilyes;ACHOUR Ilyes;8;0;0;0.2;0;0;1;0;0.68;0.68;0;0;1;0;1;0.048;0.6;0.996;0;0;1 +22;BELARBI Islem;BELARBI Islem;8.5;0;1;0.6;1;1;1;1;0;0.68;0;0;0.55;0;0;0;0;0;0;1;1 +27;BEN ELALLID Hajar;BEN ELALLID Hajar;5;0;0;0;1;0;1;0;0.68;0.996;1;0;0.1;0;0;0;0;0;0;0;0 +6;BISWAS Lina;BISWAS Lina;14;0;0;1;1;1;1;1;0;0.68;1;0;1;0;0;0.996;0.2;0.996;1;1;1 +8;BOULAABA Rayan;BOULAABA Rayan;16.5;0;0;1;0;0;1;1;0.996;0.996;1;0;1;1;1;0.996;1;0.996;1;1;1 +32;BREZUN Ines;BREZUN Ines;13.5;0;0;0.6;0;1;1;1;0.68;0.996;1;0;1;0;1;0.048;0.2;0.68;1;1;1 +17;BUGNON Enzo;BUGNON Enzo;10;0;0;0;1;0;1;1;0.68;0.996;1;0;1;0;0;0.996;0;0.68;0;1;0 +2;CALLEWAERT Idaline;CALLEWAERT Idaline;9.5;1;0;1;1;0;1;0;0.364;0.68;1;0;0.1;0;0.2;0.364;0;0;0;1;1 +25;CATTIN Clément;CATTIN Clément;17;1;0;1;1;1;1;1;0.68;0.996;0;0;1;0;1;0.996;1;0.996;1;1;1 +18;CHRISTMANN Nathan;CHRISTMANN Nathan;6.5;1;0;0;0;0;0;0;0.364;0.996;1;0;0.1;0;0;0;0;0.68;0;1;1 +24;DECOSTER Clément;DECOSTER Clément;18.5;1;0;1;1;1;1;1;0.364;0.996;1;0;1;1;1;0.68;1;0.996;1;1;1 +30;DUPONT Jessica;DUPONT Jessica;15;0;0;1;1;1;1;1;0.364;0.996;0;0;1;0;1;0.68;1;0.68;1;1;1 +26;GASAN Jéssica;GASAN Jéssica;16.5;0;0;1;1;1;1;1;0.364;0.996;1;0;0.55;0;1;0.996;1;0.996;1;1;1 +15;GEORGET Raphaël;GEORGET Raphaël;19.5;1;0;1;1;1;1;1;0.68;0.996;1;0;1;1;1;0.996;1;0.996;1;1;1 +23;HABBAZ Hajar;HABBAZ Hajar;14.5;1;0;1;1;1;1;1;0.68;0.68;1;0;1;0;0;0.364;1;0.364;0;1;1 +10;JACQUEMIER Samuel;JACQUEMIER Samuel;17;1;0;1;0;1;1;1;0.68;0.996;1;0;1;0;1;0.996;1;0.996;1;1;1 +16;JACQUIER Juliette;JACQUIER Juliette;10;1;0;1;0;0;1;1;0.68;0.68;0;0;1;0;0.2;0.048;0.2;0.364;0;1;1 +20;JOVIC Atanase;JOVIC Atanase;12.5;0;0;1;1;1;1;1;0.364;0.68;0;0;1;0;1;0.364;0.2;0.68;0;1;1 +34;KASSI Cheïma;KASSI Cheïma;14;1;0;0.2;0;1;1;1;0;0.68;1;0;1;0;0.2;0.996;1;0.68;1;1;1 +1;KICHENASSAMY Sanjay;KICHENASSAMY Sanjay;10;0;0;0.6;1;0;1;0;0.68;0.996;1;0;1;0;0;0;0.2;0.68;0;1;1 +14;LE VEUZIT Adrien;LE VEUZIT Adrien;18;1;0;1;1;1;1;1;0.048;0.68;1;0;1;1;1;0.68;1;0.996;1;1;1 +36;LETIF Ilef;LETIF Ilef;11.5;1;0;1;1;1;1;1;0.364;0.996;1;0;0.55;0;0.2;0.048;0.2;0;0;0;1 +3;MANJALI Hiba;MANJALI Hiba;11.5;0;0;0.6;0;0;1;1;0.68;0.68;1;0;0.55;1;0;0;0.2;0.996;1;1;1 +9;MUTTONI Lou;MUTTONI Lou;14;1;0;0.2;1;1;1;1;0.364;0.996;0;0;0.55;0;0.6;0.68;0.6;0.68;1;1;1 +4;NEIVA Hugo;NEIVA Hugo;17.5;1;0;0.6;1;1;1;1;0.68;0.68;1;0;1;0;1;0.996;1;0.996;1;1;1 +12;OLLIET Gioia;OLLIET Gioia;9.5;1;0;0;0;1;1;1;0.364;0.996;0;0;1;0;0.2;0.048;0;0.364;0;1;1 +5;PERNOT Gabin;PERNOT Gabin;13;0;0;0.2;1;1;1;1;0.68;0.996;1;0;0.55;0;1;0.68;0;0.996;0;1;1 +31;RIZZI Elisa;RIZZI Elisa;14.5;1;0;0.2;0;1;1;1;0.68;0.68;1;0;1;1;0;0.68;0.2;0.996;1;1;1 +33;ROSTANT Emma;ROSTANT Emma;7.5;1;0;0;1;0;1;1;0.364;0.996;0;0;1;0;0.2;0;0.2;0;0;0;0 +13;SIBABA Moaad;SIBABA Moaad;8;0;0;0.2;0;1;1;0;0.68;0.996;0;0;0.1;1;0;0;0.2;0.364;1;1;0 +19;SOUJOL Damien;SOUJOL Damien;12;1;0;1;1;1;1;1;0.048;0.68;0;0;1;0;0.2;0.048;0;0.048;1;1;1 +35;THORAL Fanny;THORAL Fanny;6.5;1;0;0.2;0;0;1;0;0.68;0.68;0;0;1;0;0;0.364;0.2;0;0;1;0 +11;TOURRETTE Elise;TOURRETTE Elise;12.5;1;0;0.2;0;1;1;0;0.364;0.68;0;1;1;0;1;0.68;1;0.68;1;1;1 +7;TROPHARDY Eline;TROPHARDY Eline;18;1;0;0.2;1;1;1;1;0.364;0.996;1;0;1;1;1;0.996;1;0.996;1;1;1 diff --git a/2gt1/221214_DS2/Ds2.ipynb b/2gt1/221214_DS2/Ds2.ipynb new file mode 100644 index 0000000..e9fb8af --- /dev/null +++ b/2gt1/221214_DS2/Ds2.ipynb @@ -0,0 +1,3603 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 38, + "id": "25b1d95f", + "metadata": { + "execution": { + "iopub.execute_input": "2022-09-27T11:48:07.404860Z", + "iopub.status.busy": "2022-09-27T11:48:07.404445Z", + "iopub.status.idle": "2022-09-27T11:48:07.901434Z", + "shell.execute_reply": "2022-09-27T11:48:07.901038Z" + }, + "extensions": { + "jupyter_dashboards": { + "version": 1, + "views": { + "grid_default": {}, + "report_default": { + "hidden": true + } + } + } + }, + "papermill": { + "duration": 0.551055, + "end_time": "2022-09-27T11:48:07.901510", + "exception": false, + "start_time": "2022-09-27T11:48:07.350455", + "status": "completed" + }, + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + " \n", + " " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import Markdown as md\n", + "from IPython.display import display, HTML\n", + "import pandas as pd\n", + "import numpy as np\n", + "import ipywidgets as widgets\n", + "from pathlib import Path\n", + "from datetime import datetime\n", + "from recopytex import flat_df_students, pp_q_scores\n", + "from datetime import datetime\n", + "\n", + "\n", + "import chart_studio.plotly as py\n", + "import plotly.graph_objects as go\n", + "import plotly.figure_factory as ff\n", + "import plotly.express as px\n", + "\n", + "\n", + "from plotly.offline import iplot, init_notebook_mode\n", + "init_notebook_mode()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "05307eef", + "metadata": { + "execution": { + "iopub.execute_input": "2022-09-27T11:48:08.209887Z", + "iopub.status.busy": "2022-09-27T11:48:08.209511Z", + "iopub.status.idle": "2022-09-27T11:48:08.210992Z", + "shell.execute_reply": "2022-09-27T11:48:08.211278Z" + }, + "papermill": { + "duration": 0.081194, + "end_time": "2022-09-27T11:48:08.211363", + "exception": false, + "start_time": "2022-09-27T11:48:08.130169", + "status": "completed" + }, + "tags": [ + "injected-parameters" + ] + }, + "outputs": [], + "source": [ + "# Parameters\n", + "tribe = \"2gt1\"\n", + "assessment = \"Ds2 - QCM\"\n", + "date = \"14/12/22\"\n", + "scores_file = \"../221214_DS2.csv\"" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "2a41f502", + "metadata": { + "execution": { + "iopub.execute_input": "2022-09-27T11:48:08.528130Z", + "iopub.status.busy": "2022-09-27T11:48:08.527692Z", + "iopub.status.idle": "2022-09-27T11:48:08.530503Z", + "shell.execute_reply": "2022-09-27T11:48:08.530107Z" + }, + "extensions": { + "jupyter_dashboards": { + "version": 1, + "views": { + "grid_default": {}, + "report_default": { + "hidden": false + } + } + } + }, + "papermill": { + "duration": 0.086523, + "end_time": "2022-09-27T11:48:08.530574", + "exception": false, + "start_time": "2022-09-27T11:48:08.444051", + "status": "completed" + }, + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "# Ds2 - QCM (14/12/22) pour 2gt1" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "if date is None:\n", + " display(md(f\"# {assessment} pour {tribe}\"))\n", + "else:\n", + " display(md(f\"# {assessment} ({date}) pour {tribe}\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "24ff9733", + "metadata": { + "papermill": { + "duration": 0.166951, + "end_time": "2022-09-27T11:48:19.360034", + "exception": false, + "start_time": "2022-09-27T11:48:19.193083", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Index(['Nom', 'Note', 'Image_f', 'Image_g', 'antecedents', 'calculer_proba_5',\n", + " 'calculer_proba_fille_betedeville', 'calculer_proba_garcon',\n", + " 'comparaison_fonction', 'def_equalite', 'egalite', 'equation',\n", + " 'inequation', 'mult_vecteurs', 'nombre_issues', 'somme_3_vecteurs',\n", + " 'somme_debut_different', 'somme_debut_different_hors',\n", + " 'somme_meme_debut', 'tracer_somme_complexe', 'tracer_somme_simple',\n", + " 'translation'],\n", + " dtype='object')\n", + "Nom object\n", + "Note float64\n", + "Image_f int64\n", + "Image_g int64\n", + "antecedents float64\n", + "calculer_proba_5 int64\n", + "calculer_proba_fille_betedeville int64\n", + "calculer_proba_garcon int64\n", + "comparaison_fonction int64\n", + "def_equalite float64\n", + "egalite float64\n", + "equation int64\n", + "inequation int64\n", + "mult_vecteurs float64\n", + "nombre_issues int64\n", + "somme_3_vecteurs float64\n", + "somme_debut_different float64\n", + "somme_debut_different_hors float64\n", + "somme_meme_debut float64\n", + "tracer_somme_complexe int64\n", + "tracer_somme_simple int64\n", + "translation int64\n", + "dtype: object\n" + ] + } + ], + "source": [ + "df = pd.read_csv(scores_file, delimiter=\";\")\n", + "df.drop(columns=[\"Copie\", \"A:Nom\"], inplace=True)\n", + "print(df.columns)\n", + "print(df.dtypes)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "77b62a99", + "metadata": {}, + "outputs": [], + "source": [ + "questions_col = ['Image_f', 'Image_g', 'antecedents', 'calculer_proba_5',\n", + " 'calculer_proba_fille_betedeville', 'calculer_proba_garcon',\n", + " 'comparaison_fonction', 'def_equalite', 'egalite', 'equation',\n", + " 'inequation', 'mult_vecteurs', 'nombre_issues', 'somme_3_vecteurs',\n", + " 'somme_debut_different', 'somme_debut_different_hors',\n", + " 'somme_meme_debut', 'tracer_somme_complexe', 'tracer_somme_simple',\n", + " 'translation']" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "b3e44bfa", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "alignmentgroup": "True", + "bingroup": "x", + "hovertemplate": "Note=%{x}
count=%{y}", + "legendgroup": "", + "marker": { + "color": "#636efa", + "pattern": { + "shape": "" + } + }, + "name": "", + "nbinsx": 40, + "offsetgroup": "", + "orientation": "v", + "showlegend": false, + "type": "histogram", + "x": [ + 8, + 8.5, + 5, + 14, + 16.5, + 13.5, + 10, + 9.5, + 17, + 6.5, + 18.5, + 15, + 16.5, + 19.5, + 14.5, + 17, + 10, + 12.5, + 14, + 10, + 18, + 11.5, + 11.5, + 14, + 17.5, + 9.5, + 13, + 14.5, + 7.5, + 8, + 12, + 6.5, + 12.5, + 18 + ], + "xaxis": "x", + "yaxis": "y" + } + ], + "layout": { + "barmode": "relative", + "legend": { + "tracegroupgap": 0 + }, + "margin": { + "t": 60 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Note" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "count" + } + } + } + }, + "text/html": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = px.histogram(df, x=\"Note\", nbins=40)\n", + "fig.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "e3e0e9bb", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "dimensions": [ + { + "label": "Note", + "values": [ + 8, + 8.5, + 5, + 14, + 16.5, + 13.5, + 10, + 9.5, + 17, + 6.5, + 18.5, + 15, + 16.5, + 19.5, + 14.5, + 17, + 10, + 12.5, + 14, + 10, + 18, + 11.5, + 11.5, + 14, + 17.5, + 9.5, + 13, + 14.5, + 7.5, + 8, + 12, + 6.5, + 12.5, + 18 + ] + }, + { + "label": "Image_f", + "values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1 + ] + }, + { + "label": "Image_g", + "values": [ + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "label": "antecedents", + "values": [ + 0.2, + 0.6, + 0, + 1, + 1, + 0.6, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0.2, + 0.6, + 1, + 1, + 0.6, + 0.2, + 0.6, + 0, + 0.2, + 0.2, + 0, + 0.2, + 1, + 0.2, + 0.2, + 0.2 + ] + }, + { + "label": "calculer_proba_5", + "values": [ + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 1 + ] + }, + { + "label": "calculer_proba_fille_betedeville", + "values": [ + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1 + ] + }, + { + "label": "calculer_proba_garcon", + "values": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "label": "comparaison_fonction", + "values": [ + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 1 + ] + }, + { + "label": "def_equalite", + "values": [ + 0.68, + 0, + 0.68, + 0, + 0.996, + 0.68, + 0.68, + 0.364, + 0.68, + 0.364, + 0.364, + 0.364, + 0.364, + 0.68, + 0.68, + 0.68, + 0.68, + 0.364, + 0, + 0.68, + 0.048, + 0.364, + 0.68, + 0.364, + 0.68, + 0.364, + 0.68, + 0.68, + 0.364, + 0.68, + 0.048, + 0.68, + 0.364, + 0.364 + ] + }, + { + "label": "egalite", + "values": [ + 0.68, + 0.68, + 0.996, + 0.68, + 0.996, + 0.996, + 0.996, + 0.68, + 0.996, + 0.996, + 0.996, + 0.996, + 0.996, + 0.996, + 0.68, + 0.996, + 0.68, + 0.68, + 0.68, + 0.996, + 0.68, + 0.996, + 0.68, + 0.996, + 0.68, + 0.996, + 0.996, + 0.68, + 0.996, + 0.996, + 0.68, + 0.68, + 0.68, + 0.996 + ] + }, + { + "label": "equation", + "values": [ + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 1 + ] + }, + { + "label": "inequation", + "values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ] + }, + { + "label": "mult_vecteurs", + "values": [ + 1, + 0.55, + 0.1, + 1, + 1, + 1, + 1, + 0.1, + 1, + 0.1, + 1, + 1, + 0.55, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0.55, + 0.55, + 0.55, + 1, + 1, + 0.55, + 1, + 1, + 0.1, + 1, + 1, + 1, + 1 + ] + }, + { + "label": "nombre_issues", + "values": [ + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 1 + ] + }, + { + "label": "somme_3_vecteurs", + "values": [ + 1, + 0, + 0, + 0, + 1, + 1, + 0, + 0.2, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 0.2, + 1, + 0.2, + 0, + 1, + 0.2, + 0, + 0.6, + 1, + 0.2, + 1, + 0, + 0.2, + 0, + 0.2, + 0, + 1, + 1 + ] + }, + { + "label": "somme_debut_different", + "values": [ + 0.048, + 0, + 0, + 0.996, + 0.996, + 0.048, + 0.996, + 0.364, + 0.996, + 0, + 0.68, + 0.68, + 0.996, + 0.996, + 0.364, + 0.996, + 0.048, + 0.364, + 0.996, + 0, + 0.68, + 0.048, + 0, + 0.68, + 0.996, + 0.048, + 0.68, + 0.68, + 0, + 0, + 0.048, + 0.364, + 0.68, + 0.996 + ] + }, + { + "label": "somme_debut_different_hors", + "values": [ + 0.6, + 0, + 0, + 0.2, + 1, + 0.2, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0.2, + 0.2, + 1, + 0.2, + 1, + 0.2, + 0.2, + 0.6, + 1, + 0, + 0, + 0.2, + 0.2, + 0.2, + 0, + 0.2, + 1, + 1 + ] + }, + { + "label": "somme_meme_debut", + "values": [ + 0.996, + 0, + 0, + 0.996, + 0.996, + 0.68, + 0.68, + 0, + 0.996, + 0.68, + 0.996, + 0.68, + 0.996, + 0.996, + 0.364, + 0.996, + 0.364, + 0.68, + 0.68, + 0.68, + 0.996, + 0, + 0.996, + 0.68, + 0.996, + 0.364, + 0.996, + 0.996, + 0, + 0.364, + 0.048, + 0, + 0.68, + 0.996 + ] + }, + { + "label": "tracer_somme_complexe", + "values": [ + 0, + 0, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 1 + ] + }, + { + "label": "tracer_somme_simple", + "values": [ + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "label": "translation", + "values": [ + 1, + 1, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 1, + 1 + ] + } + ], + "domain": { + "x": [ + 0, + 1 + ], + "y": [ + 0, + 1 + ] + }, + "name": "", + "type": "parcoords" + } + ], + "layout": { + "legend": { + "tracegroupgap": 0 + }, + "margin": { + "t": 60 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + } + } + }, + "text/html": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "fig = px.parallel_coordinates(df, )\n", + "fig.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "dc83d959", + "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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NomNote
0ACHOUR Ilyes8.0
1BELARBI Islem8.5
2BEN ELALLID Hajar5.0
3BISWAS Lina14.0
4BOULAABA Rayan16.5
5BREZUN Ines13.5
6BUGNON Enzo10.0
7CALLEWAERT Idaline9.5
8CATTIN Clément17.0
9CHRISTMANN Nathan6.5
10DECOSTER Clément18.5
11DUPONT Jessica15.0
12GASAN Jéssica16.5
13GEORGET Raphaël19.5
14HABBAZ Hajar14.5
15JACQUEMIER Samuel17.0
16JACQUIER Juliette10.0
17JOVIC Atanase12.5
18KASSI Cheïma14.0
19KICHENASSAMY Sanjay10.0
20LE VEUZIT Adrien18.0
21LETIF Ilef11.5
22MANJALI Hiba11.5
23MUTTONI Lou14.0
24NEIVA Hugo17.5
25OLLIET Gioia9.5
26PERNOT Gabin13.0
27RIZZI Elisa14.5
28ROSTANT Emma7.5
29SIBABA Moaad8.0
30SOUJOL Damien12.0
31THORAL Fanny6.5
32TOURRETTE Elise12.5
33TROPHARDY Eline18.0
\n", + "
" + ], + "text/plain": [ + " Nom Note\n", + "0 ACHOUR Ilyes 8.0\n", + "1 BELARBI Islem 8.5\n", + "2 BEN ELALLID Hajar 5.0\n", + "3 BISWAS Lina 14.0\n", + "4 BOULAABA Rayan 16.5\n", + "5 BREZUN Ines 13.5\n", + "6 BUGNON Enzo 10.0\n", + "7 CALLEWAERT Idaline 9.5\n", + "8 CATTIN Clément 17.0\n", + "9 CHRISTMANN Nathan 6.5\n", + "10 DECOSTER Clément 18.5\n", + "11 DUPONT Jessica 15.0\n", + "12 GASAN Jéssica 16.5\n", + "13 GEORGET Raphaël 19.5\n", + "14 HABBAZ Hajar 14.5\n", + "15 JACQUEMIER Samuel 17.0\n", + "16 JACQUIER Juliette 10.0\n", + "17 JOVIC Atanase 12.5\n", + "18 KASSI Cheïma 14.0\n", + "19 KICHENASSAMY Sanjay 10.0\n", + "20 LE VEUZIT Adrien 18.0\n", + "21 LETIF Ilef 11.5\n", + "22 MANJALI Hiba 11.5\n", + "23 MUTTONI Lou 14.0\n", + "24 NEIVA Hugo 17.5\n", + "25 OLLIET Gioia 9.5\n", + "26 PERNOT Gabin 13.0\n", + "27 RIZZI Elisa 14.5\n", + "28 ROSTANT Emma 7.5\n", + "29 SIBABA Moaad 8.0\n", + "30 SOUJOL Damien 12.0\n", + "31 THORAL Fanny 6.5\n", + "32 TOURRETTE Elise 12.5\n", + "33 TROPHARDY Eline 18.0" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[[\"Nom\",\"Note\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "2b06575d", + "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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NomNote
2BEN ELALLID Hajar5.0
31THORAL Fanny6.5
9CHRISTMANN Nathan6.5
28ROSTANT Emma7.5
0ACHOUR Ilyes8.0
29SIBABA Moaad8.0
1BELARBI Islem8.5
25OLLIET Gioia9.5
7CALLEWAERT Idaline9.5
19KICHENASSAMY Sanjay10.0
16JACQUIER Juliette10.0
6BUGNON Enzo10.0
22MANJALI Hiba11.5
21LETIF Ilef11.5
30SOUJOL Damien12.0
32TOURRETTE Elise12.5
17JOVIC Atanase12.5
26PERNOT Gabin13.0
5BREZUN Ines13.5
3BISWAS Lina14.0
18KASSI Cheïma14.0
23MUTTONI Lou14.0
14HABBAZ Hajar14.5
27RIZZI Elisa14.5
11DUPONT Jessica15.0
4BOULAABA Rayan16.5
12GASAN Jéssica16.5
8CATTIN Clément17.0
15JACQUEMIER Samuel17.0
24NEIVA Hugo17.5
20LE VEUZIT Adrien18.0
33TROPHARDY Eline18.0
10DECOSTER Clément18.5
13GEORGET Raphaël19.5
\n", + "
" + ], + "text/plain": [ + " Nom Note\n", + "2 BEN ELALLID Hajar 5.0\n", + "31 THORAL Fanny 6.5\n", + "9 CHRISTMANN Nathan 6.5\n", + "28 ROSTANT Emma 7.5\n", + "0 ACHOUR Ilyes 8.0\n", + "29 SIBABA Moaad 8.0\n", + "1 BELARBI Islem 8.5\n", + "25 OLLIET Gioia 9.5\n", + "7 CALLEWAERT Idaline 9.5\n", + "19 KICHENASSAMY Sanjay 10.0\n", + "16 JACQUIER Juliette 10.0\n", + "6 BUGNON Enzo 10.0\n", + "22 MANJALI Hiba 11.5\n", + "21 LETIF Ilef 11.5\n", + "30 SOUJOL Damien 12.0\n", + "32 TOURRETTE Elise 12.5\n", + "17 JOVIC Atanase 12.5\n", + "26 PERNOT Gabin 13.0\n", + "5 BREZUN Ines 13.5\n", + "3 BISWAS Lina 14.0\n", + "18 KASSI Cheïma 14.0\n", + "23 MUTTONI Lou 14.0\n", + "14 HABBAZ Hajar 14.5\n", + "27 RIZZI Elisa 14.5\n", + "11 DUPONT Jessica 15.0\n", + "4 BOULAABA Rayan 16.5\n", + "12 GASAN Jéssica 16.5\n", + "8 CATTIN Clément 17.0\n", + "15 JACQUEMIER Samuel 17.0\n", + "24 NEIVA Hugo 17.5\n", + "20 LE VEUZIT Adrien 18.0\n", + "33 TROPHARDY Eline 18.0\n", + "10 DECOSTER Clément 18.5\n", + "13 GEORGET Raphaël 19.5" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[[\"Nom\",\"Note\"]].sort_values(by=\"Note\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2c5a98dc", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6ecdc892", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "raw", + "id": "9324eea9", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "7086e285", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df[questions_col].mean().plot(kind=\"bar\", figsize=(20,10))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "873d4198", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Diaporama", + "extensions": { + "jupyter_dashboards": { + "activeView": "grid_default", + "version": 1, + "views": { + "grid_default": { + "cellMargin": 10, + "defaultCellHeight": 20, + "maxColumns": 12, + "name": "grid", + "type": "grid" + }, + "report_default": { + "name": "report", + "type": "report" + } + } + } + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.8" + }, + "papermill": { + "duration": 13.463594, + "end_time": "2022-09-27T11:48:19.827083", + "environment_variables": {}, + "exception": null, + "input_path": "templates/tpl_evaluation.ipynb", + "output_path": "2gt1/220922_DS1/Ds1.ipynb", + "parameters": { + "assessment": "Ds1", + "csv_file": "/home/lafrite/Cours/2022-2023/Notes/2gt1/220922_DS1.csv", + "date": "22/09/22", + "tribe": "2gt1" + }, + "start_time": "2022-09-27T11:48:06.363489", + "version": "1.2.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/2gt1/221214_DS2/correction/ACHOUR_Ilyes.pdf b/2gt1/221214_DS2/correction/ACHOUR_Ilyes.pdf new file mode 100644 index 0000000..06aa179 Binary files /dev/null and b/2gt1/221214_DS2/correction/ACHOUR_Ilyes.pdf differ diff --git a/2gt1/221214_DS2/correction/BELARBI_Islem.pdf b/2gt1/221214_DS2/correction/BELARBI_Islem.pdf new file mode 100644 index 0000000..427b25c Binary files /dev/null and b/2gt1/221214_DS2/correction/BELARBI_Islem.pdf differ diff --git a/2gt1/221214_DS2/correction/BEN_ELALLID_Hajar.pdf b/2gt1/221214_DS2/correction/BEN_ELALLID_Hajar.pdf new file mode 100644 index 0000000..8d7d878 Binary files /dev/null and b/2gt1/221214_DS2/correction/BEN_ELALLID_Hajar.pdf differ diff --git a/2gt1/221214_DS2/correction/BISWAS_Lina.pdf b/2gt1/221214_DS2/correction/BISWAS_Lina.pdf new file mode 100644 index 0000000..5339dcf Binary files /dev/null and b/2gt1/221214_DS2/correction/BISWAS_Lina.pdf differ diff --git a/2gt1/221214_DS2/correction/BOULAABA_Rayan.pdf b/2gt1/221214_DS2/correction/BOULAABA_Rayan.pdf new file mode 100644 index 0000000..f4aabb4 Binary files /dev/null and b/2gt1/221214_DS2/correction/BOULAABA_Rayan.pdf differ diff --git a/2gt1/221214_DS2/correction/BREZUN_Ines.pdf b/2gt1/221214_DS2/correction/BREZUN_Ines.pdf new file mode 100644 index 0000000..1a38a79 Binary files /dev/null and b/2gt1/221214_DS2/correction/BREZUN_Ines.pdf differ diff --git a/2gt1/221214_DS2/correction/BUGNON_Enzo.pdf b/2gt1/221214_DS2/correction/BUGNON_Enzo.pdf new file mode 100644 index 0000000..124a49f Binary files /dev/null and b/2gt1/221214_DS2/correction/BUGNON_Enzo.pdf differ diff --git a/2gt1/221214_DS2/correction/CALLEWAERT_Idaline.pdf b/2gt1/221214_DS2/correction/CALLEWAERT_Idaline.pdf new file mode 100644 index 0000000..be506b0 Binary files /dev/null and b/2gt1/221214_DS2/correction/CALLEWAERT_Idaline.pdf differ diff --git a/2gt1/221214_DS2/correction/CATTIN_Clement.pdf b/2gt1/221214_DS2/correction/CATTIN_Clement.pdf new file mode 100644 index 0000000..19c6aba Binary files /dev/null and b/2gt1/221214_DS2/correction/CATTIN_Clement.pdf differ diff --git a/2gt1/221214_DS2/correction/CHRISTMANN_Nathan.pdf b/2gt1/221214_DS2/correction/CHRISTMANN_Nathan.pdf new file mode 100644 index 0000000..c907100 Binary files /dev/null and b/2gt1/221214_DS2/correction/CHRISTMANN_Nathan.pdf differ diff --git a/2gt1/221214_DS2/correction/DECOSTER_Clement.pdf b/2gt1/221214_DS2/correction/DECOSTER_Clement.pdf new file mode 100644 index 0000000..a24f538 Binary files /dev/null and b/2gt1/221214_DS2/correction/DECOSTER_Clement.pdf differ diff --git a/2gt1/221214_DS2/correction/DUPONT_Jessica.pdf b/2gt1/221214_DS2/correction/DUPONT_Jessica.pdf new file mode 100644 index 0000000..0ad4750 Binary files /dev/null and b/2gt1/221214_DS2/correction/DUPONT_Jessica.pdf differ diff --git a/2gt1/221214_DS2/correction/GASAN_Jessica.pdf b/2gt1/221214_DS2/correction/GASAN_Jessica.pdf new file mode 100644 index 0000000..9df82bd Binary files /dev/null and b/2gt1/221214_DS2/correction/GASAN_Jessica.pdf differ diff --git a/2gt1/221214_DS2/correction/GEORGET_Raphael.pdf b/2gt1/221214_DS2/correction/GEORGET_Raphael.pdf new file mode 100644 index 0000000..94daf9b Binary files /dev/null and b/2gt1/221214_DS2/correction/GEORGET_Raphael.pdf differ diff --git a/2gt1/221214_DS2/correction/HABBAZ_Hajar.pdf b/2gt1/221214_DS2/correction/HABBAZ_Hajar.pdf new file mode 100644 index 0000000..c6ef341 Binary files /dev/null and b/2gt1/221214_DS2/correction/HABBAZ_Hajar.pdf differ diff --git a/2gt1/221214_DS2/correction/JACQUEMIER_Samuel.pdf b/2gt1/221214_DS2/correction/JACQUEMIER_Samuel.pdf new file mode 100644 index 0000000..b5cfecf Binary files /dev/null and b/2gt1/221214_DS2/correction/JACQUEMIER_Samuel.pdf differ diff --git a/2gt1/221214_DS2/correction/JACQUIER_Juliette.pdf b/2gt1/221214_DS2/correction/JACQUIER_Juliette.pdf new file mode 100644 index 0000000..be23a9f Binary files /dev/null and b/2gt1/221214_DS2/correction/JACQUIER_Juliette.pdf differ diff --git a/2gt1/221214_DS2/correction/JOVIC_Atanase.pdf b/2gt1/221214_DS2/correction/JOVIC_Atanase.pdf new file mode 100644 index 0000000..943411c Binary files /dev/null and b/2gt1/221214_DS2/correction/JOVIC_Atanase.pdf differ diff --git a/2gt1/221214_DS2/correction/KASSI_Cheima.pdf b/2gt1/221214_DS2/correction/KASSI_Cheima.pdf new file mode 100644 index 0000000..16b769e Binary files /dev/null and b/2gt1/221214_DS2/correction/KASSI_Cheima.pdf differ diff --git a/2gt1/221214_DS2/correction/KICHENASSAMY_Sanjay.pdf b/2gt1/221214_DS2/correction/KICHENASSAMY_Sanjay.pdf new file mode 100644 index 0000000..621a76a Binary files /dev/null and b/2gt1/221214_DS2/correction/KICHENASSAMY_Sanjay.pdf differ diff --git a/2gt1/221214_DS2/correction/LETIF_Ilef.pdf b/2gt1/221214_DS2/correction/LETIF_Ilef.pdf new file mode 100644 index 0000000..ca58d33 Binary files /dev/null and b/2gt1/221214_DS2/correction/LETIF_Ilef.pdf differ diff --git a/2gt1/221214_DS2/correction/LE_VEUZIT_Adrien.pdf b/2gt1/221214_DS2/correction/LE_VEUZIT_Adrien.pdf new file mode 100644 index 0000000..012500b Binary files /dev/null and b/2gt1/221214_DS2/correction/LE_VEUZIT_Adrien.pdf differ diff --git a/2gt1/221214_DS2/correction/MANJALI_Hiba.pdf b/2gt1/221214_DS2/correction/MANJALI_Hiba.pdf new file mode 100644 index 0000000..ef3b145 Binary files /dev/null and b/2gt1/221214_DS2/correction/MANJALI_Hiba.pdf differ diff --git a/2gt1/221214_DS2/correction/MUTTONI_Lou.pdf b/2gt1/221214_DS2/correction/MUTTONI_Lou.pdf new file mode 100644 index 0000000..a463e64 Binary files /dev/null and b/2gt1/221214_DS2/correction/MUTTONI_Lou.pdf differ diff --git a/2gt1/221214_DS2/correction/NEIVA_Hugo.pdf b/2gt1/221214_DS2/correction/NEIVA_Hugo.pdf new file mode 100644 index 0000000..08e2db2 Binary files /dev/null and b/2gt1/221214_DS2/correction/NEIVA_Hugo.pdf differ diff --git a/2gt1/221214_DS2/correction/OLLIET_Gioia.pdf b/2gt1/221214_DS2/correction/OLLIET_Gioia.pdf new file mode 100644 index 0000000..0f0769a Binary files /dev/null and b/2gt1/221214_DS2/correction/OLLIET_Gioia.pdf differ diff --git a/2gt1/221214_DS2/correction/PERNOT_Gabin.pdf b/2gt1/221214_DS2/correction/PERNOT_Gabin.pdf new file mode 100644 index 0000000..3426672 Binary files /dev/null and b/2gt1/221214_DS2/correction/PERNOT_Gabin.pdf differ diff --git a/2gt1/221214_DS2/correction/RIZZI_Elisa.pdf b/2gt1/221214_DS2/correction/RIZZI_Elisa.pdf new file mode 100644 index 0000000..761a5bc Binary files /dev/null and b/2gt1/221214_DS2/correction/RIZZI_Elisa.pdf differ diff --git a/2gt1/221214_DS2/correction/ROSTANT_Emma.pdf b/2gt1/221214_DS2/correction/ROSTANT_Emma.pdf new file mode 100644 index 0000000..a454bdb Binary files /dev/null and b/2gt1/221214_DS2/correction/ROSTANT_Emma.pdf differ diff --git a/2gt1/221214_DS2/correction/SIBABA_Moaad.pdf b/2gt1/221214_DS2/correction/SIBABA_Moaad.pdf new file mode 100644 index 0000000..24fc271 Binary files /dev/null and b/2gt1/221214_DS2/correction/SIBABA_Moaad.pdf differ diff --git a/2gt1/221214_DS2/correction/SOUJOL_Damien.pdf b/2gt1/221214_DS2/correction/SOUJOL_Damien.pdf new file mode 100644 index 0000000..bb616f6 Binary files /dev/null and b/2gt1/221214_DS2/correction/SOUJOL_Damien.pdf differ diff --git a/2gt1/221214_DS2/correction/THORAL_Fanny.pdf b/2gt1/221214_DS2/correction/THORAL_Fanny.pdf new file mode 100644 index 0000000..eeb0551 Binary files /dev/null and b/2gt1/221214_DS2/correction/THORAL_Fanny.pdf differ diff --git a/2gt1/221214_DS2/correction/TOURRETTE_Elise.pdf b/2gt1/221214_DS2/correction/TOURRETTE_Elise.pdf new file mode 100644 index 0000000..a358bf6 Binary files /dev/null and b/2gt1/221214_DS2/correction/TOURRETTE_Elise.pdf differ diff --git a/2gt1/221214_DS2/correction/TROPHARDY_Eline.pdf b/2gt1/221214_DS2/correction/TROPHARDY_Eline.pdf new file mode 100644 index 0000000..ac5d2ab Binary files /dev/null and b/2gt1/221214_DS2/correction/TROPHARDY_Eline.pdf differ diff --git a/2gt1/221214_DS2/envoi_correction.ipynb b/2gt1/221214_DS2/envoi_correction.ipynb new file mode 100644 index 0000000..da49c06 --- /dev/null +++ b/2gt1/221214_DS2/envoi_correction.ipynb @@ -0,0 +1,640 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "id": "25b1d95f", + "metadata": { + "execution": { + "iopub.execute_input": "2022-09-27T11:48:07.404860Z", + "iopub.status.busy": "2022-09-27T11:48:07.404445Z", + "iopub.status.idle": "2022-09-27T11:48:07.901434Z", + "shell.execute_reply": "2022-09-27T11:48:07.901038Z" + }, + "extensions": { + "jupyter_dashboards": { + "version": 1, + "views": { + "grid_default": {}, + "report_default": { + "hidden": true + } + } + } + }, + "papermill": { + "duration": 0.551055, + "end_time": "2022-09-27T11:48:07.901510", + "exception": false, + "start_time": "2022-09-27T11:48:07.350455", + "status": "completed" + }, + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + " \n", + " " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import Markdown as md\n", + "from IPython.display import display, HTML\n", + "import pandas as pd\n", + "import numpy as np\n", + "import ipywidgets as widgets\n", + "from pathlib import Path\n", + "from datetime import datetime\n", + "from recopytex import flat_df_students, pp_q_scores\n", + "from datetime import datetime\n", + "\n", + "\n", + "import chart_studio.plotly as py\n", + "import plotly.graph_objects as go\n", + "import plotly.figure_factory as ff\n", + "\n", + "from plotly.offline import iplot, init_notebook_mode\n", + "init_notebook_mode()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "05307eef", + "metadata": { + "execution": { + "iopub.execute_input": "2022-09-27T11:48:08.209887Z", + "iopub.status.busy": "2022-09-27T11:48:08.209511Z", + "iopub.status.idle": "2022-09-27T11:48:08.210992Z", + "shell.execute_reply": "2022-09-27T11:48:08.211278Z" + }, + "papermill": { + "duration": 0.081194, + "end_time": "2022-09-27T11:48:08.211363", + "exception": false, + "start_time": "2022-09-27T11:48:08.130169", + "status": "completed" + }, + "tags": [ + "injected-parameters" + ] + }, + "outputs": [], + "source": [ + "# Parameters\n", + "tribe = \"2gt1\"\n", + "assessment = \"Ds2 - QCM\"\n", + "date = \"14/12/22\"\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "2a41f502", + "metadata": { + "execution": { + "iopub.execute_input": "2022-09-27T11:48:08.528130Z", + "iopub.status.busy": "2022-09-27T11:48:08.527692Z", + "iopub.status.idle": "2022-09-27T11:48:08.530503Z", + "shell.execute_reply": "2022-09-27T11:48:08.530107Z" + }, + "extensions": { + "jupyter_dashboards": { + "version": 1, + "views": { + "grid_default": {}, + "report_default": { + "hidden": false + } + } + } + }, + "papermill": { + "duration": 0.086523, + "end_time": "2022-09-27T11:48:08.530574", + "exception": false, + "start_time": "2022-09-27T11:48:08.444051", + "status": "completed" + }, + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "# Ds2 - QCM (22/12/14) pour 2gt1" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "if date is None:\n", + " display(md(f\"# {assessment} pour {tribe}\"))\n", + "else:\n", + " display(md(f\"# {assessment} ({date:%y/%m/%d}) pour {tribe}\"))" + ] + }, + { + "cell_type": "markdown", + "id": "dfaf5d3d", + "metadata": { + "papermill": { + "duration": 0.211414, + "end_time": "2022-09-27T11:48:16.462524", + "exception": false, + "start_time": "2022-09-27T11:48:16.251110", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Envoie des bilans par mail" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "76384db8", + "metadata": { + "execution": { + "iopub.execute_input": "2022-09-27T11:48:16.782829Z", + "iopub.status.busy": "2022-09-27T11:48:16.781664Z", + "iopub.status.idle": "2022-09-27T11:48:16.784344Z", + "shell.execute_reply": "2022-09-27T11:48:16.784663Z" + }, + "papermill": { + "duration": 0.164784, + "end_time": "2022-09-27T11:48:16.784751", + "exception": false, + "start_time": "2022-09-27T11:48:16.619967", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Correction du Ds2 - QCM\n", + "Bonjour,\n", + " \n", + "\n", + "En pièce jointe, vous trouverez un document détaillant la note du devoir.\n", + "\n", + "B.Bertrand\n", + "\n" + ] + } + ], + "source": [ + "mailfrom = \"benjamin.bertrand@ac-lyon.fr\"\n", + "subject = f\"Correction du {assessment}\"\n", + "message = \"\"\"Bonjour,\n", + " \n", + "\n", + "En pièce jointe, vous trouverez un document détaillant la note du devoir.\n", + "\n", + "B.Bertrand\n", + "\"\"\"\n", + "print(subject)\n", + "print(message)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "71eb9a2b", + "metadata": { + "execution": { + "iopub.execute_input": "2022-09-27T11:48:17.100522Z", + "iopub.status.busy": "2022-09-27T11:48:17.100107Z", + "iopub.status.idle": "2022-09-27T11:48:17.102673Z", + "shell.execute_reply": "2022-09-27T11:48:17.103005Z" + }, + "papermill": { + "duration": 0.163488, + "end_time": "2022-09-27T11:48:17.103104", + "exception": false, + "start_time": "2022-09-27T11:48:16.939616", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import smtplib\n", + "import os\n", + "import sys\n", + "from email.message import EmailMessage\n", + "import mimetypes\n", + "import time\n", + "import random" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "f2834e6b", + "metadata": { + "execution": { + "iopub.execute_input": "2022-09-27T11:48:17.420901Z", + "iopub.status.busy": "2022-09-27T11:48:17.420509Z", + "iopub.status.idle": "2022-09-27T11:48:17.421953Z", + "shell.execute_reply": "2022-09-27T11:48:17.422265Z" + }, + "papermill": { + "duration": 0.164253, + "end_time": "2022-09-27T11:48:17.422351", + "exception": false, + "start_time": "2022-09-27T11:48:17.258098", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "def build_msg(subj, to_addr, from_addr, body, att):\n", + " msg = EmailMessage()\n", + " msg[\"Subject\"] = subj\n", + " msg[\"To\"] = to_addr\n", + " #msg[\"To\"] = \"lafrite26@gmail.com\"\n", + " msg[\"From\"] = from_addr\n", + " msg.set_content(body)\n", + "\n", + " if att != []:\n", + " ctype, encoding = mimetypes.guess_type(att)\n", + " if ctype is None or encoding is not None:\n", + " ctype = 'application/octet-stream'\n", + " maintype, subtype = ctype.split('/', 1)\n", + " with open(att, \"rb\") as f:\n", + " msg.add_attachment(f.read(),\n", + " maintype=maintype,\n", + " subtype=subtype,\n", + " filename=att.name)\n", + " return msg\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "30311066", + "metadata": { + "execution": { + "iopub.execute_input": "2022-09-27T11:48:17.745613Z", + "iopub.status.busy": "2022-09-27T11:48:17.745207Z", + "iopub.status.idle": "2022-09-27T11:48:17.747015Z", + "shell.execute_reply": "2022-09-27T11:48:17.746650Z" + }, + "papermill": { + "duration": 0.16894, + "end_time": "2022-09-27T11:48:17.747088", + "exception": false, + "start_time": "2022-09-27T11:48:17.578148", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "send = 1\n", + "fake = 0" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "d31598c3", + "metadata": { + "execution": { + "iopub.execute_input": "2022-09-27T11:48:18.064312Z", + "iopub.status.busy": "2022-09-27T11:48:18.063922Z", + "iopub.status.idle": "2022-09-27T11:48:18.066069Z", + "shell.execute_reply": "2022-09-27T11:48:18.065585Z" + }, + "papermill": { + "duration": 0.1633, + "end_time": "2022-09-27T11:48:18.066161", + "exception": false, + "start_time": "2022-09-27T11:48:17.902861", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "if send:\n", + " if fake:\n", + " server = smtplib.SMTP(\"localhost\", 8025)\n", + " server.ehlo()\n", + " else:\n", + " server = smtplib.SMTP(\"smtps.ac-lyon.fr\", 587)\n", + " server.ehlo()\n", + " server.starttls()\n", + " server.ehlo()\n", + " server.login(\"bbertrand\", os.popen(\"pass Prof/Lyon/bbertrand\").read()[:-1]) " + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "ca5690d7", + "metadata": { + "execution": { + "iopub.execute_input": "2022-09-27T11:48:18.388603Z", + "iopub.status.busy": "2022-09-27T11:48:18.388156Z", + "iopub.status.idle": "2022-09-27T11:48:18.389976Z", + "shell.execute_reply": "2022-09-27T11:48:18.389545Z" + }, + "papermill": { + "duration": 0.168321, + "end_time": "2022-09-27T11:48:18.390057", + "exception": false, + "start_time": "2022-09-27T11:48:18.221736", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "try:\n", + " eleves_data = pd.read_csv(f\"../../{tribe}.csv\")\n", + "except FileNotFoundError:\n", + " try:\n", + " eleves_data = pd.read_csv(f\"../{tribe}.csv\")\n", + " except FileNotFoundError:\n", + " eleves_data = pd.read_csv(f\"{tribe}.csv\")\n", + "eleves_data.fillna(\"\", inplace=True)\n", + "#eleves_data" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "b676f878", + "metadata": { + "execution": { + "iopub.execute_input": "2022-09-27T11:48:18.712395Z", + "iopub.status.busy": "2022-09-27T11:48:18.711804Z", + "iopub.status.idle": "2022-09-27T11:48:18.718564Z", + "shell.execute_reply": "2022-09-27T11:48:18.718888Z" + }, + "papermill": { + "duration": 0.170407, + "end_time": "2022-09-27T11:48:18.718993", + "exception": false, + "start_time": "2022-09-27T11:48:18.548586", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\tBilan envoyé à ACHOUR Ilyes\n", + "\tBilan envoyé à BELARBI Islem\n", + "\tBilan envoyé à BEN ELALLID Hajar\n", + "\tBilan envoyé à BISWAS Lina\n", + "\tBilan envoyé à BOULAABA Rayan\n", + "\tBilan envoyé à BREZUN Ines\n", + "\tBilan envoyé à BUGNON Enzo\n", + "\tBilan envoyé à CALLEWAERT Idaline\n", + "\tBilan envoyé à CATTIN Clément\n", + "\tBilan envoyé à CHRISTMANN Nathan\n", + "\tBilan envoyé à DECOSTER Clément\n", + "Pas de rapport pour DEHIMAT Launy\n", + "\tBilan envoyé à DUPONT Jessica\n", + "\tBilan envoyé à GASAN Jéssica\n", + "\tBilan envoyé à GEORGET Raphaël\n", + "\tBilan envoyé à HABBAZ Hajar\n", + "\tBilan envoyé à JACQUEMIER Samuel\n", + "\tBilan envoyé à JACQUIER Juliette\n", + "\tBilan envoyé à JOVIC Atanase\n", + "\tBilan envoyé à KASSI Cheïma\n", + "\tBilan envoyé à KICHENASSAMY Sanjay\n", + "\tBilan envoyé à LE VEUZIT Adrien\n", + "\tBilan envoyé à LETIF Ilef\n", + "\tBilan envoyé à MANJALI Hiba\n", + "\tBilan envoyé à MUTTONI Lou\n", + "\tBilan envoyé à NEIVA Hugo\n", + "\tBilan envoyé à OLLIET Gioia\n", + "\tBilan envoyé à PERNOT Gabin\n", + "\tBilan envoyé à RIZZI Elisa\n", + "\tBilan envoyé à ROSTANT Emma\n", + "\tBilan envoyé à SIBABA Moaad\n", + "\tBilan envoyé à SOUJOL Damien\n", + "\tBilan envoyé à THORAL Fanny\n", + "\tBilan envoyé à TOURRETTE Elise\n", + "\tBilan envoyé à TROPHARDY Eline\n" + ] + } + ], + "source": [ + "\n", + "from unidecode import unidecode\n", + "for e in eleves_data.iterrows():\n", + " formated_name = unidecode(e[1]['Nom'].replace(' ', '_'))\n", + " reportfilename = Path(f\"correction/{formated_name}.pdf\")\n", + " try:\n", + " assert reportfilename.exists()\n", + " except:\n", + " print(f\"Pas de rapport pour {e[1]['Nom']}\")\n", + " else:\n", + " if e[1][\"mail\"] != \"\":\n", + " if send:\n", + " msg = build_msg(subject, e[1][\"mail\"], mailfrom, message, reportfilename)\n", + " server.send_message(msg)\n", + " print(f\"\\tBilan envoyé à {e[1]['Nom']}\")\n", + " else:\n", + " print(f\"Pas de mail pour {e[1]['Nom']}\")\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "78e914c1", + "metadata": { + "papermill": { + "duration": 0.158787, + "end_time": "2022-09-27T11:48:19.033692", + "exception": false, + "start_time": "2022-09-27T11:48:18.874905", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "24ff9733", + "metadata": { + "papermill": { + "duration": 0.166951, + "end_time": "2022-09-27T11:48:19.360034", + "exception": false, + "start_time": "2022-09-27T11:48:19.193083", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Diaporama", + "extensions": { + "jupyter_dashboards": { + "activeView": "grid_default", + "version": 1, + "views": { + "grid_default": { + "cellMargin": 10, + "defaultCellHeight": 20, + "maxColumns": 12, + "name": "grid", + "type": "grid" + }, + "report_default": { + "name": "report", + "type": "report" + } + } + } + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.8" + }, + "papermill": { + "duration": 13.463594, + "end_time": "2022-09-27T11:48:19.827083", + "environment_variables": {}, + "exception": null, + "input_path": "templates/tpl_evaluation.ipynb", + "output_path": "2gt1/220922_DS1/Ds1.ipynb", + "parameters": { + "assessment": "Ds1", + "csv_file": "/home/lafrite/Cours/2022-2023/Notes/2gt1/220922_DS1.csv", + "date": "22/09/22", + "tribe": "2gt1" + }, + "start_time": "2022-09-27T11:48:06.363489", + "version": "1.2.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}