Open Datas
Un exemple de données ouvertes
Le Répertoire National des Élus (RNE) a pour finalité le suivi des titulaires d’un mandat électoral. Il est renseigné et tenu à jour par les préfectures et hauts commissariats et par les services du ministère de l’intérieur, notamment sur la base des éléments fournis par les élus lors de la phase d’enregistrement des candidatures.
Les données du RNE sont structurées par mandat. Neuf fichiers sont publiés ici :
1. les conseillers municipaux ;
- les conseillers communautaires ;
- les conseillers départementaux ;
- les conseillers régionaux ;
- les membres des assemblées des collectivités à statut particulier ;
- les représentants au Parlement européen ;
- les sénateurs ;
- les députés ;
- les maires.
En bas de page, vous pourrez observer les réutilisations de ces documents:
Ouvrir les données jugées d’intérêt public, c’est encourager leur réutilisation par tout un chacun. Cela permet d’encourager la transparence démocratique, de bénéficier de services au quotidien ou de prendre des décisions plus éclairées.
Exploration et traitement de données
Télécharger sur le site gouvernemental le fichier
ldes élus municipaux ;
, au format .csv
Ouvrir un nouveau notebook, ou bien un nouveau fichier dans votre IDE python (Spyder ou Pyzo). Déplacer le fichier *.csv
dans le même dossier que le notebook/fichier python.
Lire et stocker le contenu du fichier dans une liste python que vous appelerez table
.
On pourra s’aider:
- du dernier paragraphe de la page Python > entrées / sorties pour importer le fichier csv.
- du TP sur les algorithmes de recherche dans un dictionnaire: voir TP ici
Une fois la liste des élus importée dans une liste python:
Dans votre editeur python, explorer la liste table pour qu’elle affiche les informations sur la longueur, sur les premiers élus.
Si vous choisissez le bon caractère de séparation des données, vous devriez obtenir quelque chose d’approchant (la mise à jour est régulière, et les données peuvent différer):
> len(table)
490805
> table[1]
['32',
'Gers',
'',
'',
'32249',
'Mauvezin',
'MASAROTTI',
'Sylvie',
'F',
...
Si par contre, vous identifiez mal le caractère de séparation, vous allez obtenir quelque chose comme cela:
> len(table)
1
> table[1]
['32\tGers\t\t\t32249\tMauvezin\tMASAROTTI\tSylvie\tF']
ou peut-être:
> len(table)
1
> table[1]
['32;Gers;;;32249;Mauvezin;MASAROTTI;Sylvie;F']
Question 1: Quels sont les rangs auxquels se trouvent le numero de departement, ainsi que celui du sexe de l’élu ‘H’/‘F’?
Explorer pour définir l’ordre dans lequel sont classés les élus.
Question 2: Les élus du Gers, occupent-ils les premiers rangs? Et si oui, jusqu’à quel rang? Ecrire un script python qui recherche cette information.
Fonction recherche
Ecrire une fonction
recherche
qui recherche le premier élu dans un departement donné. La fonction recherche aura pour seul argument la variable textuelledpt
correspondant au departement recherché.
Cette fonction prend les éléments du tableau un par un, en commençant par le debut, et recherche la premiere occurence (le premier élu de ce departement).
Par exemple:
> recherche('06')
363891
Question 3: Donner le script de cette fonction.
Fonction pariteHF
Ecrire une fonction pariteHF qui compte le nombre d’élus Hommes et le nombre d’élues Femmes pour un departement donné. La fonction renvoie alors le couple de valeurs H/F.
Exemple:
> score_M,score_F = pariteHF('34')
> score_M,score_F
(3143, 2646)
Question 4: Donner le script de cette fonction.
Graphique
Représenter alors cette parité dans votre notebook sur un diagramme circulaire.
On s’aidera du lien suivant pour représenter des diagrammes avec Matplolib.
Prolongement
Rechercher si, pour l’un des departements, le ratio ‘F’/‘M’ est supérieur à 1.
Faire un compte rendu avec les réponses, les scripts et graphiques. Utiliser un editeur de texte.
Suggestion de projet
Utiliser une API en python avec le module request
, et charger directement le fichier de données. Une API est une interface logicielle qui permet de se « connecter » à un service, ou un serveur.
Exemple issu de realpython.com
>>> import requests
>>> response = requests.get("https://randomuser.me/api/")
>>> response.text
'{"results":[{"gender":"female",
"name":{"title":"Ms","first":"Isobel","last":"Wang"}...'
Cette méthode permet de consulter la version la plus recente, mise à jour sur le serveur. On peut imaginer de nombreuses applications (météo, prix du carburant, …)