.. _simpleprocessingrst: ====================== Prétraitement des logs ====================== .. only:: html **Links:** :download:`notebook `, :downloadlink:`html `, :download:`PDF `, :download:`python `, :downloadlink:`slides `, :githublink:`GitHub|_doc/notebooks/simple_processing.ipynb|*` Traitements de logs générés par un QCM. .. code:: ipython3 from jyquickhelper import add_notebook_menu add_notebook_menu() .. contents:: :local: .. code:: ipython3 %matplotlib inline Observations brutes ------------------- .. code:: ipython3 import os names = [os.path.join("logs", _) for _ in os.listdir("logs") if '.log' in _] names = names[-1:] names .. parsed-literal:: ['logs\\QCMApp.log'] .. code:: ipython3 with open(names[0], 'r', encoding="utf-8") as f: lines = f.readlines() lines[5:7] .. parsed-literal:: ['2018-12-12 17:56:29,989,INFO,[DATA],{"msg":"qcm","session":{"alias":"xavierd"},"client":["167.220.197.38",6274],"game":"simple_french_qcm","qn":"0"}\n', '2018-12-12 17:56:33,130,INFO,[DATA],{"msg":"event","session":{"alias":"xavierd"},"client":["167.220.197.38",6274],"events":["focus:true,game:simple_french_qcm,qn:0"]}\n'] Let’s retrieve the expected answers from the QCM. .. code:: ipython3 from mathenjeu.tests import simple_french_qcm qcm = simple_french_qcm() expected = qcm.expected_answers() expected .. parsed-literal:: [['simple_french_qcm-0-a0'], ['simple_french_qcm-1-a2'], ['simple_french_qcm-2-a2'], ['simple_french_qcm-3-a3'], ['simple_french_qcm-4-a2'], ['simple_french_qcm-5-a0', 'simple_french_qcm-5-a2'], ['simple_french_qcm-6-a5'], ['simple_french_qcm-7-a2'], ['simple_french_qcm-8-Thalès']] .. code:: ipython3 import pandas from mathenjeu.datalog import enumerate_qcmlogdf dfs = pandas.concat(list(enumerate_qcmlogdf(names, expected))) dfs.T .. raw:: html
person_id c241c15008614ea67480 32606f02fa0df6aac111 5bd96adafa694996027d 753a507a9205e4c196fa 8a8c40ad28eb1206efd5
simple_french_qcm-0-a0 1 NaN 1 1 NaN
simple_french_qcm-0-b 1 NaN 1 1 1
simple_french_qcm-0-duration 0 days 00:00:04.266000 NaT 0 days 00:00:06.904000 0 days 00:00:16.530000 0 days 00:00:02.920000
simple_french_qcm-0-good 1 NaN 1 1 0
simple_french_qcm-0-nbvisit 1 NaN 1 1 1
simple_french_qcm-5-a0 1 NaN NaN 1 NaN
simple_french_qcm-5-a1 1 NaN 1 NaN NaN
simple_french_qcm-5-a2 1 NaN NaN NaN NaN
simple_french_qcm-5-b 1 NaN 1 1 1000
simple_french_qcm-5-duration 1 days 00:00:00 NaT 0 days 00:00:10.153000 0 days 00:00:11.740000 0 days 00:00:02.247000
simple_french_qcm-5-good 1 NaN 0 1 0
simple_french_qcm-5-nbvisit 0.5 NaN 1 1 2
simple_french_qcm-8-ANS thalès NaN Astérix et Cléopâtre Prout
simple_french_qcm-8-b 1 NaN 1 1 1
simple_french_qcm-8-duration 0 days 00:00:04.390000 NaT 0 days 00:03:02.506000 0 days 00:00:14.483000 0 days 00:00:01.422000
simple_french_qcm-8-good 0 NaN 0 0 0
simple_french_qcm-8-nbvisit 1 NaN 1 1 1
simple_french_qcm-1-a2 NaN 1 2 NaN NaN
simple_french_qcm-1-b NaN 1 1001 1 NaN
simple_french_qcm-1-duration NaT 0 days 00:00:03.343000 0 0 days 00:00:14.010000 NaT
simple_french_qcm-1-good NaN 1 2 0 NaN
simple_french_qcm-1-nbvisit NaN 1 3 1 NaN
simple_french_qcm-2-a2 NaN 1 1 1 NaN
simple_french_qcm-2-b NaN 1 1 1 NaN
simple_french_qcm-2-duration NaT 0 days 00:00:06.750000 0 days 00:00:31.978000 0 days 00:00:28.765000 NaT
simple_french_qcm-2-good NaN 1 1 1 NaN
simple_french_qcm-2-nbvisit NaN 1 2 1 NaN
simple_french_qcm-3-a2 NaN 1 NaN NaN 1
simple_french_qcm-3-a3 NaN 1 NaN NaN 1
simple_french_qcm-3-b NaN 1 1 1 1000
simple_french_qcm-3-duration NaT 1 days 00:00:00 0 days 00:00:19.246000 0 days 00:00:19.492000 0 days 00:00:09.323000
simple_french_qcm-3-good NaN 1 0 0 1
simple_french_qcm-3-nbvisit NaN 0.5 1 1 3
simple_french_qcm-4-a2 NaN 1 1 NaN 1
simple_french_qcm-4-b NaN 1 1 1 2
simple_french_qcm-4-duration NaT 0 days 00:00:09.688000 0 days 00:00:21.230000 0 days 00:03:19.593000 0
simple_french_qcm-4-good NaN 1 1 0 1
simple_french_qcm-4-nbvisit NaN 1 1 1 5
simple_french_qcm-6-a3 NaN 1 NaN NaN NaN
simple_french_qcm-6-b NaN 1 1 1 1
simple_french_qcm-6-duration NaT 1 days 00:00:00 0 days 00:00:20.314000 0 days 00:00:21.868000 0 days 00:00:00.750000
simple_french_qcm-6-good NaN 0 0 1 0
simple_french_qcm-6-nbvisit NaN 0.5 1 1 1
simple_french_qcm-7-a2 NaN 1 1 NaN NaN
simple_french_qcm-7-b NaN 1 1 1 1
simple_french_qcm-7-duration NaT 0 days 00:00:06.390000 0 days 00:00:17.141000 0 days 00:00:20.923000 0 days 00:00:01.188000
simple_french_qcm-7-good NaN 1 1 0 0
simple_french_qcm-7-nbvisit NaN 1 1 1 1
simple_french_qcm-3-a0 NaN NaN 1 1 NaN
simple_french_qcm-6-a2 NaN NaN 1 NaN NaN
simple_french_qcm-1-a1 NaN NaN NaN 1 NaN
simple_french_qcm-4-a0 NaN NaN NaN 1 NaN
simple_french_qcm-6-a5 NaN NaN NaN 1 NaN
simple_french_qcm-7-a0 NaN NaN NaN 1 NaN
-a1 NaN NaN NaN NaN NaN
on-a2 NaN NaN NaN NaN NaN
simple_french_qcm-0-a1 NaN NaN NaN NaN 1
simple_french_qcm-4-a3 NaN NaN NaN NaN 1