\n",
"Écrire votre nom ici \n",
"\n",
"Nom : \n",
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Objectif :\n",
"\n",
"***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.***\n",
"\n",
"***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.***\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Le fichier reg2018.txt\n",
"\n",
"On récupère le fichier reg2018.txt\n",
"\n",
"**Ses descripteurs sont décrit ci-dessous :**\n",
"\n",
"\n",
"\n",
"\n",
"Comme vous le constatez le chef-lieu d'une région est précisé par un code (INSEE) ( vous trouverez davantage d'informations sur les code ici )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Le fichier des communes de France : comsimp2018.txt\n",
"\n",
"On récupère le fichier comsimp2018.txt\n",
"\n",
"**Ses descripteurs sont décrit ci-dessous :**\n",
"\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"***Ces deux collections ont un descripteur en commun (REG) et (REGION)***\n",
"\n",
"***De plus : Une commune dont le code CHEFLIEU est 4 est chef lieu de région***\n",
"\n",
"## La méthode :\n",
"\n",
"* Parcourir la liste des communes\n",
"* Si son code CHEFLIEU est égal à 4\n",
" * Parcourir la liste des régions\n",
" * Si les codes régions sont égaux\n",
" \n",
" **On a trouvé la région et son chef-lieu**\n",
"\n",
"\n",
"**En d'autre termes:**\n",
"\n",
" * 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,\n",
"\n",
" * Pour chacune de ces communes, parcourir l'ensemble des régions et,\n",
" * 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),\n",
" * afficher dans la console de Python la valeur du descripteur 3 (=NCC) de la région suivie de celle du descripteur 9 (=NCC) de la commune, c'est à dire le nom de la région et celui de la commune."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## Manipuler des fichiers (txt ou csv)\n",
"\n",
"*****Placez le fichier reg2018.txt dans le même dossier que ce notebook*****\n",
"\n",
"Le code ci-dessous : \n",
"* Charge le fichier\n",
"* Stocke dans la liste datas_regions, les lignes du fichier ( sauf celle des desripteurs)\n",
"* Affiche la première ligne : ['01', '97105', '3', 'GUADELOUPE', 'Guadeloupe']"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import csv\n",
"with open('reg2018.txt', 'r', encoding='latin1') as f:\n",
" dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())# repère le type de séparateurs (',')(';')etc..\n",
" datas_regions = list(csv.reader(f, dialect=dialecte_fichier_csv))\n",
"\n",
"print(datas_regions[0]) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Pour avoir accès à 'GUADELOUPE' il faut écrire : print(datas_regions[0][3])**\n",
"\n",
"***C'est à dire la 3ème valeur de la liste : datas_regions[0]***"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"### Faire des boucles sur la liste datas_regions\n",
"\n",
"**Ce programme affiche les données de toutes les régions :**\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import csv\n",
"with open('reg2018.txt', 'r', encoding='latin1') as f:\n",
" dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())\n",
" datas_regions = list(csv.reader(f, dialect=dialecte_fichier_csv))\n",
" \n",
"# On parcourt la liste avec une boucle\n",
"for region in datas_regions:\n",
" print(region)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Et celui-ci affiche seulement les noms**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import csv\n",
"with open('reg2018.txt', 'r', encoding='latin1') as f:\n",
" dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())\n",
" datas_regions = list(csv.reader(f, dialect=dialecte_fichier_csv))\n",
" \n",
"# On parcourt la liste avec une boucle\n",
"for region in datas_regions:\n",
" print(region[4])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Cette instruction affiche la longueur de la liste datas_regions**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import csv\n",
"with open('reg2018.txt', 'r', encoding='latin1') as f:\n",
" dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())\n",
" datas_regions = list(csv.reader(f, dialect=dialecte_fichier_csv))\n",
" \n",
"print(len(datas_regions))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## À faire :\n",
"\n",
"* **Placez les deux fichiers (reg2018.txt) et (commsimp2018.txt) dans le dossier de ce notebook**\n",
"* **Le code ci-dessous charge les deux fichiers dans les listes (datas_regions) et datas_communes)**\n",
"\n",
"**Il faut le compléter pour qu'il affiche chaque région avec son chef-lieu**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import csv\n",
"\n",
"with open('reg2018.txt', 'r', encoding='latin1') as f:\n",
" dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())\n",
" datas_regions = list(csv.reader(f, dialect=dialecte_fichier_csv))\n",
"\n",
"with open('comsimp2018.txt', 'r', encoding='latin1') as f:\n",
" dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())\n",
" datas_communes = list(csv.reader(f, dialect=dialecte_fichier_csv))\n",
" \n",
"print(\"Les régions avec le nom de leur chefs-lieux de Région\")\n",
"for commune in datas_communes:\n",
" if commune[1]=='...':\n",
" for region in datas_regions:\n",
" if commune[...]==region[...]:\n",
" print(region[...], ' : ', commune[...])\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"\n",
"## Faire afficher ces résultats sur une carte\n",
"\n",
"\n",
"Reprenons le programme précédent en y intégrant les éléments nécessaires pour un affichage sur une carte:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import csv\n",
"import geopy\n",
"import folium\n",
"\n",
"with open('reg2018.txt', 'r', encoding='latin1') as f:\n",
" dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())\n",
" datas_regions = list(csv.reader(f, dialect=dialecte_fichier_csv))\n",
"\n",
"with open('comsimp2018.txt', 'r', encoding='latin1') as f:\n",
" dialecte_fichier_csv = csv.Sniffer().sniff(f.readline())\n",
" datas_communes = list(csv.reader(f, dialect=dialecte_fichier_csv))\n",
"\n",
"# fonctionnel (sans clé api)\n",
"from geopy.geocoders import ArcGIS\n",
"geolocator = ArcGIS()\n",
"\n",
"# on récupère les coordonnées GPS de Paris\n",
"location = geolocator.geocode(\"Paris\")\n",
"gps_ville = [location.latitude, location.longitude]\n",
"# initialisation de la carte : on prend Paris comme centre\n",
"# avoir choisi zoom_start=1 signifie qu'on va voir le monde entier\n",
"# des boutons +/- permettrons de zoomer sur la carte au besoin.\n",
"carte = folium.Map(location=gps_ville, zoom_start=1,tiles='Stamen Toner') \n",
" \n",
" \n",
"print(\"Les régions avec le nom de leur chefs-lieux de Région\")\n",
"for commune in datas_communes:\n",
" if commune[1]=='...':\n",
" # nom de la commune\n",
" nom = commune[9]\n",
" # géolocalisation de la commune\n",
" location = geolocator.geocode(nom)\n",
" coordonnees_gps = [location.latitude, location.longitude]\n",
" # ajout à la carte de la commune\n",
" folium.Marker(coordonnees_gps,popup=nom,).add_to(carte)\n",
" for region in datas_regions:\n",
" if commune[...]==region[...]:\n",
" print(region[...], ' : ', commune[...]) \n",
"display(carte)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# À faire :\n",
"\n",
"Récupérer le fichier depts2018.txt\n",
"\n",
"Voici sa structure :\n",
"\n",
"\n",
"\n",
"***É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.***\n",
"\n",
"***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.***\n",
"\n",
"***On fera attention à ce qu'une commune chef-lieu de région est aussi chef-lieu de département.***"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Écrire le script ici"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.6.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}