diff --git a/donnees_structurees/tp_decouverte_csv/liste_descripteurs.png b/donnees_structurees/tp_decouverte_csv/liste_descripteurs.png new file mode 100644 index 0000000..cf61d89 Binary files /dev/null and b/donnees_structurees/tp_decouverte_csv/liste_descripteurs.png differ diff --git a/donnees_structurees/tp_decouverte_csv/programme.py b/donnees_structurees/tp_decouverte_csv/programme.py index d489dae..4dac1fd 100644 --- a/donnees_structurees/tp_decouverte_csv/programme.py +++ b/donnees_structurees/tp_decouverte_csv/programme.py @@ -3,7 +3,8 @@ import csv def afficher_descripteurs (): """ Cette fonction affiche la première ligne du fichier csv """ with open('centres-vaccination.csv', 'r', encoding='utf8') as f: - print(f.readline()) + for champs in f.readline().strip().split(';'): + print(champs) def compter_les_colonnes (): """ Cette fonction compte le nombre d’entrées renseignées pour chaque colonne """ @@ -13,15 +14,31 @@ def compter_les_colonnes (): for ligne in f.readlines(): for (index, element) in zip(title,ligne.strip().split(';')): if index not in compte: - compte[index] = 0 + compte[index] = [] if element.strip() != '': - compte[index] += 1 + compte[index].append(element) return compte def afficher_compte_colonnes (): + """ Cette fonction affiche le nombre d’élément d’une colonne """ colonnes = compter_les_colonnes() for index in colonnes: - print(index, ' : ', colonnes[index]) + print(index, ' : ', len(colonnes[index])) + +def afficher_contenu_colonne (colonne): + """ Cette fonction affiche les différentes valeurs d’une colonne """ + colonnes = compter_les_colonnes() + resultat = {} + for element in colonnes[colonne]: + if element not in resultat: + resultat[element] = 0 + resultat[element] += 1 + for element in resultat: + print(element, ' : ', resultat[element]) + + +# ------------------------------------------------------------------------------------------------------ +# Écrivez votre code en dessous de cette ligne +# ------------------------------------------------------------------------------------------------------ -afficher_compte_colonnes() diff --git a/donnees_structurees/tp_decouverte_csv/sujet.pdf b/donnees_structurees/tp_decouverte_csv/sujet.pdf new file mode 100644 index 0000000..705e340 Binary files /dev/null and b/donnees_structurees/tp_decouverte_csv/sujet.pdf differ diff --git a/donnees_structurees/tp_decouverte_csv/sujet.tex b/donnees_structurees/tp_decouverte_csv/sujet.tex new file mode 100644 index 0000000..e431d73 --- /dev/null +++ b/donnees_structurees/tp_decouverte_csv/sujet.tex @@ -0,0 +1,155 @@ +\documentclass[11pt,a4paper]{../../template_cours} +\usepackage{listings} + +\usepackage{minted} + +\title{Introduction aux données structurées — Le format CSV} +\author{Adrian Amaglio} +\def\thesequence{Données structurées} + +\begin{document} +Durée : 1h + +% Retours: +% Les élèves galèrent, ça ne les passionne pas, ils ont du mal à copier le CSV en ligne (il vaudrait mieux laisser tomber pandas et leur fournir le python complèt à télécharger). +% Il n’y a rien à « faire » dans le TP, juste des copier-coller sans intérêt et de la réflexion. Ça doit être rageant de bloquer sur des copier-coller +% UPDATE : + + +% --- +\section{Préparation} +Faire chaque activité dans un nouveau dossier est une bonne pratique dans toutes les matières et en dehors du lycée. +Prenez l’habitude de bien organiser vos dossiers pour retrouver vos documents plus tard. +\begin{exercice} + Créez un dossier nomé « tp-csv » dans votre zone personnelle. + \\ + Téléchargez-y le fichier à l’adresse : \url{https://git.jean-cloud.net/adrian/cours-snt/raw/branch/master/donnees_structurees/tp_decouverte_csv/programme.py}. + \\ + Ouvrez ce programme avec pyzo ou edupython. +\end{exercice} + +%\begin{exercice} +% Dans ce dossier, téléchargez le fichier « noms.csv » disponible à cette adresse : +% \url{https://git.jean-cloud.net/adrian/cours-snt/raw/branch/master/donnees_structurees/tp_decouverte_csv/noms.csv} +%\end{exercice} + + +% --- +%\section{Découverte du format CSV} +%Un fichier CSV contient des données structurées. +%\begin{exercice} +% Ouvrez le fichier « noms.csv » avec un éditeur de texte (notepad++ ou bloc-note) puis ouvrez le avec le tableur libreoffice calc.\\ +% Comparez le rendu dans les deux logiciels. +% Comment est structurée l’information ? +%\end{exercice} + + +% --- +%\section{Avec Python} +%Il est également possible d’écrire un programme Python qui lit un fichier CSV. +%\begin{exercice} +% Ouvrez l’éditeur de python à l’adresse \url{https://www.online-python.com}. +% Créez un nouveau fichier « noms.csv » grâce au bouton « + » : +% \includegraphics[width=\textwidth]{screen_ide.png} +% Dans ce fichier CSV, insérez le contenu du fichier CSV précédent. +%\end{exercice} +% +%\begin{exercice} +% Sur votre IDE, dans le fichier python, supprimer le code et remplacez-le par le suivant : +% \begin{minted}{Python} +%import pandas +%noms=pandas.read_csv("noms.csv") +%print(noms) +% \end{minted} +% Vous éxécuterez ensuite votre programme à l’aide du bouton « run ». +% Vous devriez avoir un affichage similaire à celui-ci :\\ +% \includegraphics[]{affichage_noms.png} +%\end{exercice} +% +%\begin{exercice} +% Ajoutez à votre programme la ligne suivante : +% \begin{minted}{Python} +%print(noms.loc[1,'prenom']) +% \end{minted} +% Que fait cette instruction ? +%\end{exercice} +% +%\begin{exercice} +% Modifiez votre programme pour qu’il affiche la date de naissance de Janelle Monáe du fichier « noms.csv ». +%\end{exercice} + + +% --- +Depuis quelques années, l’état et les collectivités locales sont tenues de mettre des données relatives à leurs activités en libre accès. +Cette données sont dites « ouvertes » car libre d’accès pour tous et toutes. +%\begin{exercice} +% Allez à l’adresse suivante pour ouvrir un environnement python :\\\url{https://www.online-python.com}. +% \\Créez un nouveau fichier nommé exactement « centres-vaccination.csv » grâce au bouton « + » : +% \includegraphics[width=\textwidth]{screen_ide.png} +%\end{exercice} + +\begin{exercice} + Rendez-vous à cette adresse : + \url{https://www.data.gouv.fr/fr/datasets/lieux-de-vaccination-contre-la-covid-19/} + \\Téléchargez le fichier CSV « centres-vaccination.csv » et copiez son contenu dans le fichier CSV « centres-vaccination.csv ». + \\Téléchargez la documentation de ce fichier, disponible sur la même page web, et essayez de comprendre la signification des trois premiers descripteurs. +\end{exercice} + +Ce fichier CSV n’utilise pas la virgule comme séparateur, car c’est un caractère trop commun en français, il utilise le point virgule. +Avoir un séparateur dans un champs empêcherait un programme de le lire correctement, il aurait l’impression qu’il y a plus de valeurs que prévu. +\begin{exercice} + En bas du fichier python que vous avez téléchargé, appellez la fonction « afficher\_descripteurs » comme suit : + \begin{minted}{python} +afficher_descripteurs() + \end{minted} + Vérifiez que vous avez bien une liste de champs qui s’affiche comme sur l’exemple suivant : + \includegraphics{liste_descripteurs.png} +\end{exercice} + +%\begin{exercice} +% Pour lire ce nouveau fichier, copiez ces lignes de Python dans le fichier « main.py » de l’environnement, en ayant supprimé son contenu avant. +% Puis exécutez le en cliquant sur « Run ». +% \begin{minted}{Python} +%import pandas +%centres=pandas.read_csv("centres-vaccination.csv", sep=";") +%print(centres) +% \end{minted} +%\end{exercice} +%Vous pouvez constater que l’affichage est tronqué pour éviter d’envahir l’écran. + +% --- +\section{Identifier un problème social} + +\begin{exercice} + La ligne suivante permet de compter le nombre de valeurs renseignées pour chaque champs : + \begin{minted}{Python} +afficher_compte_colonnes() + \end{minted} + Quels sont les trois champs les moins renseignés ? Cela vous semble t’il normal ? +\end{exercice} + + +% --- +\section{Identifier les incohérences techniques} + +% --- +\begin{exercice} + Remplacez votre affichage par le code suivant : + \begin{minted}{Python} +afficher_contenu_colonne('lieu_accessibilite') + \end{minted} + Il permet d’afficher les différentes valeurs reseignées dans le champs « lieu\_accessibilite » et le nombre de fois qu’elles apparaissent dans le fichier CSV. + \\Selon vous, pourquoi les valeurs sont aussi hétérogènes ? Quelles valeurs devrait-on pouvoir trouver dans ce champs selon la documentation disponible avec le fichier CSV ? +\end{exercice} + +\begin{exercice} + L’URL suivante est extraite du fichier CSV et permet de réserver dans un centre de vaccination : + \\\url{https://partners.doctolib.fr/centre-depistage-covid/chateauroux/centre-de-vaccination-covid-ssr-chateauroux-36?speciality_id=5494&enable_cookies_consent=1} + \\Les paramètres qui sont passés à la page via cette url sont les suivants : + \\speciality\_id=5494 + \\enable\_cookies\_consent=1 + \\Que peut signifier le dernier paramètre ? Quelles implications peut-il avoir ? +\end{exercice} + + +\end{document}