Communes françaises

Le fichier communes-francaises.csv est un fichier de texte au format CSV :

In [ ]:
!head communes-francaises.csv
insee, nom, wikipedia, surf_m2, lon_centro, lat_centro, statut, z_moyen, population, code_dept, nom_dept, code_reg, nom_region
2114, Brasles, fr:Brasles, 7453763.000000000000000, 3.424209572460830, 49.057115513229498, Commune simple,131, 1.3,2, AISNE,22, PICARDIE
2292, Étampes-sur-Marne, fr:Étampes-sur-Marne, 2207607.000000000000000, 3.418950315195310, 49.031578363504998, Commune simple,110, 1.2,2, AISNE,22, PICARDIE
2120, Brenelle, fr:Brenelle, 4352642.000000000000000, 3.544405244060090, 49.368235118447302, Commune simple,133, 0.2,2, AISNE,22, PICARDIE
2064, Belleu, fr:Belleu, 4537814.000000000000000, 3.340255589293650, 49.357059130647897, Commune simple,105, 3.9,2, AISNE,22, PICARDIE
5180, Les Vigneaux, fr:Les Vigneaux, 16155360.000000000000000, 6.537108600918880, 44.821554317801201, Commune simple,1498, 0.5,5, HAUTES-ALPES,93, PROVENCE-ALPES-COTE D'AZUR
2263, Dhuizel, fr:Dhuizel, 6846127.000000000000000, 3.614677728478280, 49.360648577000298, Commune simple,151, 0.1,2, AISNE,22, PICARDIE
2781, Verdilly, fr:Verdilly, 5092646.000000000000000, 3.421774456538220, 49.074322334006503, Commune simple,183, 0.4,2, AISNE,22, PICARDIE
2347, Gland, fr:Gland (Aisne), 5618063.000000000000000, 3.457188175762870, 49.057522755284701, Commune simple,154, 0.5,2, AISNE,22, PICARDIE
2245, Cuffies, fr:Cuffies, 5047339.000000000000000, 3.322636307828110, 49.408821528644800, Commune simple,111, 1.6,2, AISNE,22, PICARDIE

Ce fichier contient la liste de toutes les communes françaises en indiquant pour chacune d'elles :

  • Son numéro INSEE,
  • son nom,
  • sa page wikipedia,
  • sa surface en mètres carrés,
  • la latitude du centre de la commune,
  • la longitude du centre de la comune,
  • son statut (Commune simple, Chef-lieu de canton, Sous-préfecture ou Préfecture),
  • son altitude moyenne en mètres,
  • sa population en milliers d'habitants,
  • le code départment
  • le nom du département
  • le code région,
  • le nom de la région.

Chaque ligne du fichier correspond à une commune. Les champs sont séparés par une virgule. La première ligne contient les mnémoniques de chaque champ.

Un fichier CSV peut être lu et modifié avec un tableur tel que Libreoffice. En tant que fichier de texte, il peut aussi bien sûr être lu et modifié avec un simple simple éditeur de texte.

Le travail demandé ci-dessous consiste à manipuler ce type de fichier à l'aide d'un programme Python.

Les méthodes str.split() et str.strip() vous seront certainement utiles pour répondre aux questions ci-dessous.

Par ailleurs, la fonction float permet de convertir une chaîne de caractères en nombre flottant.

Question 1

Écrire la fonction nbCommunes qui retourne le nombre de communes d'un département.

Il y a 353 communes en Ille-et-Vilaine.

In [ ]:
def nbCommunes(code_dept): 
    """ Retourne le nombre de communes dans le département
        *code_dept*
        
        L'argument *code_dept* est de type str.
    """
    ### À COMPLÉTER
In [ ]:
nbCommunes("35")
Out[ ]:
353

Question 2

Écrire la fonction densite qui retourne la densité d'un département en habitants par kilomètre carré, arrondie au dixième.

La densité de l'Ille-et-Vilaine est de 142.9 hab/km².

In [ ]:
def densite(code_dept): 
    """ Retourne la densité du département *code_dept*
        
        L'argument *code_dept* est de type str.
    """
    ### À COMPLÉTER
In [ ]:
densite("35")
Out[ ]:
142.9

Question 3

Écrire la fonction distance qui donne la distance séparant deux communes.

Le calcul de la distance en fonction des longitudes et latitudes est décrit dans ce document.

In [ ]:
def distance(nomA, nomB):
    """ Retourne la distance en kilomètre séparant la commune
        *nomA* de la commune *nomB*.
        
        La distance retournée est arrondie au dixième de kilomètre.
    """
    ### À COMPLÉTER
In [ ]:
distance("Rennes", "Saint-Brieuc")
Out[ ]:
91.8

Question 4

Créer le fichier regions-fancaises.csv qui indique pour chaque region :

  • son code,
  • son nom,
  • sa population en milliers d'habitants,
  • sa densité.

Conseil : Découpez le code avec des fonctions pour le rendre plus lisible.

Le programme grep permet de rechercher des lignes particulières dans un fichier. Plus précisément, la commande grep text file affiche les lignes du fichier file qui contiennent la chaîne de caractères text.

Pour tester votre programme vous pouvez ainsi exécuter la commande

!grep BRETAGNE regions-francaises.csv

Elle devrait afficher :

53, BRETAGNE, 3174900.0, 115.41

In [ ]:
### À COMPLÉTER

Question 5

Modifier le programme précédent pour que le fichier regions-francaises.csv contienne également le nombre de départements de chacune des régions.

La commande

!grep BRETAGNE regions-francaises.csv

devrait afficher :

53, BRETAGNE, 3174900.0, 115.41, 4

In [ ]:
### À COMPLÉTER