Nom :
*On dispose d'un fichier (reg2018.txt) qui permet uniquement de connaître le code INSEE des chefs-lieux de région, et pas leur nom.*
*Le but de l'activité va consister à croiser les données de ce fichier avec les données sur les communes de France afin d'afficher au final la liste des régions avec le nom de leur chef-lieu.*
*Ces deux collections ont un descripteur en commun (REG) et (REGION)*
*De plus : Une commune dont le code CHEFLIEU est 4 est chef lieu de région*
On a trouvé la région et son chef-lieu
En d'autre termes:
Parcourir l'ensemble des communes dont la valeur du descripteur 1 (=CHEFLIEU) est égal à '4' de façon à ne retenir que les communes chef-lieu de région,
Pour chacune de ces communes, parcourir l'ensemble des régions et,
Si le descripteur 0 (=REGION) de l'une des régions est identique au descripteur 2 (=REG) de la commune (ce qui veut dire qu'on a trouvé la région de la commune concernée),
***Placez le fichier reg2018.txt dans le même dossier que ce notebook***
Le code ci-dessous :
import csv
with open('reg2018.txt', 'r', encoding='latin1') as f:
dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())# repère le type de séparateurs (',')(';')etc..
datas_regions = list(csv.reader(f, dialect=dialecte_fichier_csv))
print(datas_regions[0])
Pour avoir accès à 'GUADELOUPE' il faut écrire : print(datas_regions[0][3])
*C'est à dire la 3ème valeur de la liste : datas_regions[0]*
Ce programme affiche les données de toutes les régions :
import csv
with open('reg2018.txt', 'r', encoding='latin1') as f:
dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())
datas_regions = list(csv.reader(f, dialect=dialecte_fichier_csv))
# On parcourt la liste avec une boucle
for region in datas_regions:
print(region)
Et celui-ci affiche seulement les noms
import csv
with open('reg2018.txt', 'r', encoding='latin1') as f:
dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())
datas_regions = list(csv.reader(f, dialect=dialecte_fichier_csv))
# On parcourt la liste avec une boucle
for region in datas_regions:
print(region[4])
Cette instruction affiche la longueur de la liste datas_regions
import csv
with open('reg2018.txt', 'r', encoding='latin1') as f:
dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())
datas_regions = list(csv.reader(f, dialect=dialecte_fichier_csv))
print(len(datas_regions))
Il faut le compléter pour qu'il affiche chaque région avec son chef-lieu
import csv
with open('reg2018.txt', 'r', encoding='latin1') as f:
dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())
datas_regions = list(csv.reader(f, dialect=dialecte_fichier_csv))
with open('comsimp2018.txt', 'r', encoding='latin1') as f:
dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())
datas_communes = list(csv.reader(f, dialect=dialecte_fichier_csv))
print("Les régions avec le nom de leur chefs-lieux de Région")
for commune in datas_communes:
if commune[1]=='...':
for region in datas_regions:
if commune[...]==region[...]:
print(region[...], ' : ', commune[...])
Reprenons le programme précédent en y intégrant les éléments nécessaires pour un affichage sur une carte:
import csv
import geopy
import folium
with open('reg2018.txt', 'r', encoding='latin1') as f:
dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())
datas_regions = list(csv.reader(f, dialect=dialecte_fichier_csv))
with open('comsimp2018.txt', 'r', encoding='latin1') as f:
dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())
datas_communes = list(csv.reader(f, dialect=dialecte_fichier_csv))
# fonctionnel (sans clé api)
from geopy.geocoders import ArcGIS
geolocator = ArcGIS()
# on récupère les coordonnées GPS de Paris
location = geolocator.geocode("Paris")
gps_ville = [location.latitude, location.longitude]
# initialisation de la carte : on prend Paris comme centre
# avoir choisi zoom_start=1 signifie qu'on va voir le monde entier
# des boutons +/- permettrons de zoomer sur la carte au besoin.
carte = folium.Map(location=gps_ville, zoom_start=1,tiles='Stamen Toner')
print("Les régions avec le nom de leur chefs-lieux de Région")
for commune in datas_communes:
if commune[1]=='...':
# nom de la commune
nom = commune[9]
# géolocalisation de la commune
location = geolocator.geocode(nom)
coordonnees_gps = [location.latitude, location.longitude]
# ajout à la carte de la commune
folium.Marker(coordonnees_gps,popup=nom,).add_to(carte)
for region in datas_regions:
if commune[...]==region[...]:
print(region[...], ' : ', commune[...])
display(carte)
Récupérer le fichier depts2018.txt
Voici sa structure :
*Écrire un script en Python permettant, à partir des fichiers depts2018.txt et comsimp2018.txt d'afficher la liste des noms de département avec celui de leur chefs-lieux.*
*On utilisera les deux collections dont le descripteur DEP est en commun et on procédera en adaptant la méthode employée pour les régions.*
*On fera attention à ce qu'une commune chef-lieu de région est aussi chef-lieu de département.*
# Écrire le script ici