Aller au contenu

🦝 Populations des communes françaises (Métropole)⚓︎

On s'intéresse au fichier pop_hist.csv regroupant des informations sur la population des communes de France Métropolitaine à travers l'histoire.

Ce fichier a été adapté à partir de cette source. Les adaptations faites sont :

  • suppression des données de population pour certaines années,

  • suppression des communes pour lesquelles les données sont incomplètes (populations anciennes manquantes). Cette suppression explique que les communes listées soient toutes en métropole (hors Corse).

Fichier volumineux

Le fichier comporte 34 496 lignes !

On déconseille vivement d'afficher la totalité du tableau avec Python...

Les premières lignes de ce fichier sont :

📑 Données CSV
departement;nom;pop_2019;pop_2009;pop_1999;pop_1990;pop_1982;pop_1968;pop_1954;pop_1936;pop_1926;pop_1906;pop_1896;pop_1886;pop_1876
Ain;L'Abergement-Clémenciat;779;787;728;579;477;347;424;506;543;629;572;622;604

Les descripteurs sont explicités ci-dessous :

Descripteur Indice Type Python Contenu
departement 0 str département de la commune
nom 1 str nom de la commune
pop_2019 2 int population en 2019
pop_2009 3 int population en 2009
pop_1999 4 int population en 1999
pop_1990 5 int population en 1990
pop_1982 6 int population en 1982
pop_1968 7 int population en 1968
pop_1954 8 int population en 1954
pop_1936 9 int population en 1936
pop_1926 10 int population en 1926
pop_1906 11 int population en 1906
pop_1896 12 int population en 1896
pop_1886 13 int population en 1886
pop_1876 14 int population en 1876

On propose ci-dessous deux versions du même exercice selon le type de listes choisis : liste de listes ou de dictionnaires.

Requêtes dans une liste de listes

Compléter le script ci-dessous afin d'effectuer les requêtes demandées.

Il faudra tout d'abord importer et typer les données ici sous la forme d'une liste de listes.

La liste reprenant l'ensemble des informations sera communes.

Il y a beaucoup de données : le script met un peu de temps à s'exécuter

###
communespy-undcorr = []bksl-nlwith open(file="poppy-undhist.csv", mode="r", encoding="utf-8") as fichier:bksl-nl fichier.readline()bksl-nl for ligne in fichier:bksl-nl lignepy-undpropre = ligne.strip()bksl-nl valeurs = lignepy-undpropre.split(";")bksl-nl for i in range(2, len(valeurs)):bksl-nl valeurs[i] = int(valeurs[i])bksl-nl communespy-undcorr.append(valeurs)bksl-nlbksl-nl# thyez est la liste contenant les entrées dontbksl-nl# le nom de la commune est Thyez (en Haute-Savoie)bksl-nlthyezpy-undcorr = [entree for entree in communespy-undcorr if entree[1] == "Thyez"]bksl-nlassert thyez == thyezpy-undcorr, "Erreur sur thyez"bksl-nlbksl-nl# morbihan est la liste contenant les entrées concernantbksl-nl# des communes du Morbihanbksl-nlmorbihanpy-undcorr = [entree for entree in communespy-undcorr if entree[0] == "Morbihan"]bksl-nlassert morbihan == morbihanpy-undcorr, "Erreur sur morbihan"bksl-nlbksl-nl# grandespy-undvilles est la liste contenant les noms des communesbksl-nl# dont la population en 2019 dépasse 100 000 habitants (inclus)bksl-nlgandespy-undvillespy-undcorr = [entree[1] for entree in communespy-undcorr if entree[2] >= 100py-und000]bksl-nlassert gandespy-undvilles == gandespy-undvillespy-undcorr, "Erreur sur gandespy-undvilles"bksl-nlbksl-nl# petitespy-undvilles est la liste contenant les noms des communesbksl-nl# dont la population en 2019 est inférieure à 500 habitants (inclus)bksl-nlpetitespy-undvillespy-undcorr = [entree[1] for entree in communespy-undcorr if entree[2] <= 500]bksl-nlassert petitespy-undvilles == petitespy-undvillespy-undcorr, "Erreur sur petitespy-undvilles"bksl-nlbksl-nl# progression est la liste contenant les noms des communesbksl-nl# dont la population a strictement augmenté entre 2009 et 2019bksl-nlprogressionpy-undcorr = [entree[1] for entree in communespy-undcorr if entree[2] > entree[3]]bksl-nlassert progression == progressionpy-undcorr, "Erreur sur progression"bksl-nlbksl-nl# foispy-und10 est la liste contenant les noms des communesbksl-nl# dont la population a été multiplié par 10 (ou plus) entre 1876 et 2019bksl-nlfoispy-und10py-undcorr = [entree[1] for entree in communespy-undcorr if entree[2] >= 10 py-str entree[-1]]bksl-nlassert foispy-und10 == foispy-und10py-undcorr, "Erreur sur foispy-und10"bksl-nlbksl-nl# evolutions est la liste contenant les couples (nom de la commune, evolution)bksl-nl# où evolution est la différence Population en 2019 - Population en 1876bksl-nlevolutionspy-undcorr = [(entree[1], entree[2] - entree[-1]) for entree in communespy-undcorr]bksl-nlassert evolutions == evolutionspy-undcorr, "Erreur sur evolutions"bksl-nlbksl-nl 10/10
# --- HDR ---#bksl-nlurlpy-undfichier = "poppy-undhist.csv"bksl-nlencodage = "utf-8"bksl-nlbksl-nlfrom js import fetchbksl-nlbksl-nlreponse = await fetch(f"../{urlpy-undfichier}")bksl-nlcontenu = await reponse.text()bksl-nlbksl-nlwith open(file=urlpy-undfichier, mode="w", encoding=encodage) as fichier:bksl-nl fichier.write(contenu)bksl-nl# --- HDR ---#bksl-nl####################bksl-nl# Listes de listes #bksl-nl####################bksl-nl# Import et Typagebksl-nlcommunes = []bksl-nl...bksl-nlbksl-nl# Requêtesbksl-nlbksl-nl# thyez est la liste contenant les entrées dontbksl-nl# le nom de la commune est Thyez (en Haute-Savoie)bksl-nlthyez = ...bksl-nlbksl-nl# morbihan est la liste contenant les entrées concernantbksl-nl# des communes du Morbihanbksl-nlmorbihan = ...bksl-nlbksl-nl# grandespy-undvilles est la liste contenant les noms des communesbksl-nl# dont la population en 2019 dépasse 100 000 habitants (inclus)bksl-nlgandespy-undvilles = ...bksl-nlbksl-nl# petitespy-undvilles est la liste contenant les noms des communesbksl-nl# dont la population en 2019 est inférieure à 500 habitants (inclus)bksl-nlpetitespy-undvilles = ...bksl-nlbksl-nl# progression est la liste contenant les noms des communesbksl-nl# dont la population a strictement augmenté entre 2009 et 2019bksl-nlprogression = ...bksl-nlbksl-nl# foispy-und10 est la liste contenant les noms des communesbksl-nl# dont la population a été multiplié par 10 (ou plus) entre 1876 et 2019bksl-nlfoispy-und10 = ...bksl-nlbksl-nl# evolutions est la liste contenant les couples (nom de la commune, evolution)bksl-nl# où evolution est la différence Population en 2019 - Population en 1876bksl-nlevolutions = ...bksl-nlbksl-nlcommunes = []bksl-nlwith open(file="poppy-undhist.csv", mode="r", encoding="utf-8") as fichier:bksl-nl fichier.readline()bksl-nl for ligne in fichier:bksl-nl lignepy-undpropre = ligne.strip()bksl-nl valeurs = lignepy-undpropre.split(";")bksl-nl for i in range(2, len(valeurs)):bksl-nl valeurs[i] = int(valeurs[i])bksl-nl communes.append(valeurs)bksl-nlbksl-nl# thyez est la liste contenant les entrées dontbksl-nl# le nom de la commune est Thyez (en Haute-Savoie)bksl-nlthyez = [entree for entree in communes if entree[1] == "Thyez"]bksl-nlbksl-nl# morbihan est la liste contenant les entrées concernantbksl-nl# des communes du Morbihanbksl-nlmorbihan = [entree for entree in communes if entree[0] == "Morbihan"]bksl-nlbksl-nl# grandespy-undvilles est la liste contenant les noms des communesbksl-nl# dont la population en 2019 dépasse 100 000 habitants (inclus)bksl-nlgandespy-undvilles = [entree[1] for entree in communes if entree[2] >= 100py-und000]bksl-nlbksl-nl# petitespy-undvilles est la liste contenant les noms des communesbksl-nl# dont la population en 2019 est inférieure à 500 habitants (inclus)bksl-nlpetitespy-undvilles = [entree[1] for entree in communes if entree[2] <= 500]bksl-nlbksl-nl# progression est la liste contenant les noms des communesbksl-nl# dont la population a strictement augmenté entre 2009 et 2019bksl-nlprogression = [entree[1] for entree in communes if entree[2] > entree[3]]bksl-nlbksl-nl# foispy-und10 est la liste contenant les noms des communesbksl-nl# dont la population a été multiplié par 10 (ou plus) entre 1876 et 2019bksl-nlfoispy-und10 = [entree[1] for entree in communes if entree[2] >= 10 py-str entree[-1]]bksl-nlbksl-nl# evolutions est la liste contenant les couples (nom de la commune, evolution)bksl-nl# où evolution est la différence Population en 2019 - Population en 1876bksl-nlevolutions = [(entree[1], entree[2] - entree[-1]) for entree in communes]bksl-nlbksl-nl

A

Z

Requêtes dans une liste de dictionnaires

Compléter le script ci-dessous afin d'effectuer les requêtes demandées.

Il faudra tout d'abord importer et typer les données ici sous la forme d'une liste de dictionnaires.

La liste reprenant l'ensemble des informations sera communes.

Il y a beaucoup de données : le script met un peu de temps à s'exécuter

###
import csvbksl-nlcommunespy-undcorr = []bksl-nlwith open(file="poppy-undhist.csv", mode="r", encoding="utf-8") as fichier:bksl-nl lecteur = csv.DictReader(fichier, delimiter=";")bksl-nl for entree in lecteur:bksl-nl for descripteur in entree:bksl-nl if descripteur not in ["departement", "nom"]:bksl-nl entree[descripteur] = int(entree[descripteur])bksl-nl communespy-undcorr.append(entree)bksl-nlbksl-nl# thyez est la liste contenant les entrées dontbksl-nl# le nom de la commune est Thyez (en Haute-Savoie)bksl-nlthyezpy-undcorr = [entree for entree in communespy-undcorr if entree["nom"] == "Thyez"]bksl-nlassert thyez == thyezpy-undcorr, "Erreur sur thyez"bksl-nlbksl-nl# morbihan est la liste contenant les entrées concernantbksl-nl# des communes du Morbihanbksl-nlmorbihanpy-undcorr = [entree for entree in communespy-undcorr if entree["departement"] == "Morbihan"]bksl-nlassert morbihan == morbihanpy-undcorr, "Erreur sur morbihan"bksl-nlbksl-nl# grandespy-undvilles est la liste contenant les noms des communesbksl-nl# dont la population en 2019 dépasse 100 000 habitants (inclus)bksl-nlgandespy-undvillespy-undcorr = [entree["nom"] for entree in communespy-undcorr if entree["poppy-und2019"] >= 100py-und000]bksl-nlassert gandespy-undvilles == gandespy-undvillespy-undcorr, "Erreur sur gandespy-undvilles"bksl-nlbksl-nl# petitespy-undvilles est la liste contenant les noms des communesbksl-nl# dont la population en 2019 est inférieure à 500 habitants (inclus)bksl-nlpetitespy-undvillespy-undcorr = [entree["nom"] for entree in communespy-undcorr if entree["poppy-und2019"] <= 500]bksl-nlassert petitespy-undvilles == petitespy-undvillespy-undcorr, "Erreur sur petitespy-undvilles"bksl-nlbksl-nl# progression est la liste contenant les noms des communesbksl-nl# dont la population a strictement augmenté entre 2009 et 2019bksl-nlprogressionpy-undcorr = [entree["nom"] for entree in communespy-undcorr if entree["poppy-und2019"] > entree["poppy-und2009"]]bksl-nlassert progression == progressionpy-undcorr, "Erreur sur progression"bksl-nlbksl-nl# foispy-und10 est la liste contenant les noms des communesbksl-nl# dont la population a été multiplié par 10 (ou plus) entre 1876 et 2019bksl-nlfoispy-und10py-undcorr = [entree["nom"] for entree in communespy-undcorr if entree["poppy-und2019"] >= 10 py-str entree["poppy-und1876"]]bksl-nlassert foispy-und10 == foispy-und10py-undcorr, "Erreur sur foispy-und10"bksl-nlbksl-nl# evolutions est la liste contenant les couples (nom de la commune, evolution)bksl-nl# où evolution est la différence Population en 2019 - Population en 1876bksl-nlevolutionspy-undcorr = [(entree["nom"], entree["poppy-und2019"] - entree["poppy-und1876"]) for entree in communespy-undcorr]bksl-nlassert evolutions == evolutionspy-undcorr, "Erreur sur evolution"bksl-nlbksl-nl 10/10
# --- HDR ---#bksl-nlurlpy-undfichier = "poppy-undhist.csv"bksl-nlencodage = "utf-8"bksl-nlbksl-nlfrom js import fetchbksl-nlbksl-nlreponse = await fetch(f"../{urlpy-undfichier}")bksl-nlcontenu = await reponse.text()bksl-nlbksl-nlwith open(file=urlpy-undfichier, mode="w", encoding=encodage) as fichier:bksl-nl fichier.write(contenu)bksl-nl# --- HDR ---#bksl-nl###########################bksl-nl# Listes de dictionnaires #bksl-nl###########################bksl-nl# Import et Typagebksl-nlcommunes = []bksl-nl...bksl-nlbksl-nl# Requêtesbksl-nlbksl-nl# thyez est la liste contenant les entrées dontbksl-nl# le nom de la commune est Thyez (en Haute-Savoie)bksl-nlthyez = ...bksl-nlbksl-nl# morbihan est la liste contenant les entrées concernantbksl-nl# des communes du Morbihanbksl-nlmorbihan = ...bksl-nlbksl-nl# grandespy-undvilles est la liste contenant les noms des communesbksl-nl# dont la population en 2019 dépasse 100 000 habitants (inclus)bksl-nlgandespy-undvilles = ...bksl-nlbksl-nl# petitespy-undvilles est la liste contenant les noms des communesbksl-nl# dont la population en 2019 est inférieure à 500 habitants (inclus)bksl-nlpetitespy-undvilles = ...bksl-nlbksl-nl# progression est la liste contenant les noms des communesbksl-nl# dont la population a strictement augmenté entre 2009 et 2019bksl-nlprogression = ...bksl-nlbksl-nl# foispy-und10 est la liste contenant les noms des communesbksl-nl# dont la population a été multiplié par 10 (ou plus) entre 1876 et 2019bksl-nlfoispy-und10 = ...bksl-nlbksl-nl# evolutions est la liste contenant les couples (nom de la commune, evolution)bksl-nl# où evolution est la différence Population en 2019 - Population en 1876bksl-nlevolutions = ...bksl-nlbksl-nlimport csvbksl-nlcommunes = []bksl-nlwith open(file="poppy-undhist.csv", mode="r", encoding="utf-8") as fichier:bksl-nl lecteur = csv.DictReader(fichier, delimiter=";")bksl-nl for entree in lecteur:bksl-nl for descripteur in entree:bksl-nl if descripteur not in ["departement", "nom"]:bksl-nl entree[descripteur] = int(entree[descripteur])bksl-nl communes.append(entree)bksl-nlbksl-nl# thyez est la liste contenant les entrées dontbksl-nl# le nom de la commune est Thyez (en Haute-Savoie)bksl-nlthyez = [entree for entree in communes if entree["nom"] == "Thyez"]bksl-nlbksl-nl# morbihan est la liste contenant les entrées concernantbksl-nl# des communes du Morbihanbksl-nlmorbihan = [entree for entree in communes if entree["departement"] == "Morbihan"]bksl-nlbksl-nl# grandespy-undvilles est la liste contenant les noms des communesbksl-nl# dont la population en 2019 dépasse 100 000 habitants (inclus)bksl-nlgandespy-undvilles = [entree["nom"] for entree in communes if entree["poppy-und2019"] >= 100py-und000]bksl-nlbksl-nl# petitespy-undvilles est la liste contenant les noms des communesbksl-nl# dont la population en 2019 est inférieure à 500 habitants (inclus)bksl-nlpetitespy-undvilles = [entree["nom"] for entree in communes if entree["poppy-und2019"] <= 500]bksl-nlbksl-nl# progression est la liste contenant les noms des communesbksl-nl# dont la population a strictement augmenté entre 2009 et 2019bksl-nlprogression = [entree["nom"] for entree in communes if entree["poppy-und2019"] > entree["poppy-und2009"]]bksl-nlbksl-nl# foispy-und10 est la liste contenant les noms des communesbksl-nl# dont la population a été multiplié par 10 (ou plus) entre 1876 et 2019bksl-nlfoispy-und10 = [entree["nom"] for entree in communes if entree["poppy-und2019"] >= 10 py-str entree["poppy-und1876"]]bksl-nlbksl-nl# evolutions est la liste contenant les couples (nom de la commune, evolution)bksl-nl# où evolution est la différence Population en 2019 - Population en 1876bksl-nlevolutions = [(entree["nom"], entree["poppy-und2019"] - entree["poppy-und1876"]) for entree in communes]bksl-nlbksl-nl

A

Z