Traitement de données avec python

Dans ce TP, vous allez explorer concernant la population de toutes les villes française dans un premier temps puis les festivals.

Villes de France

À côté de ce document, vous trouverez un document villes.csv . Le copier dans son dossier personnel puis l'ouvrir avec notepad++

Description des données

  1. Décrire le format du fichier.
  2. Quelles sont les informations stockées dans ce fichier?
  3. À quoi correspond chaque ligne?
  4. Combien de lignes va-t-on pouvoir étudier?

  5. Rédiger deux questions qui pourrait être répondu en utilisant ce tableau.

Ouverture et manipulation avec python

Ouvrir pythonedu, copier/coller le programme ci-dessous et sauvegarder votre script (vide) dans le même dossier où vous avez mis le fichier villes.csv.

In [1]:
import pandas as pd
villes = pd.read_csv("villes.csv")
print(villes)
  1. Executer ce programme. Que fait-il? Commenter ce qui s'est écrit dans la console.

Festivals en France

  1. Aller sur la plateforme d'opendata de l'état français et trouver des données sur les festivals de France
  2. Décrire les données trouvée
  3. Trouver 2 questions et essayer d'y répondre en utilisant Python

Mémo Python et pandas

Séléctionner une information

  • Séléctionner une ligne (ici la ligne 2)
In [2]:
villes.iloc[2]
Out[2]:
dep                  1
nom             Plagne
cp                1130
nb_hab_2010        129
nb_hab_1999         83
nb_hab_2012        100
dens                20
surf               6.2
long           5.73333
lat            46.1833
alt_min            560
alt_max            922
Name: 2, dtype: object
  • Séléctionner une seule information (ici cp de la ligne 2)
In [3]:
villes.loc[2,'cp']
Out[3]:
'1130'
  • Séléctionner tout une colonne (ici nom)
In [4]:
villes["nom"]
Out[4]:
0                            Ozan
1           Cormoranche-sur-Saône
2                          Plagne
3                         Tossiat
4                        Pouillat
                   ...           
36695                        Sada
36696                    Tsingoni
36697            Saint-Barthélemy
36698                Saint-Martin
36699    Saint-Pierre-et-Miquelon
Name: nom, Length: 36700, dtype: object
  • Séléctionner les lignes suivant une caractéristique (ici les villes avec une altitude minimum supérieur à 1500)
In [5]:
villes[villes["alt_min"]>1500]
Out[5]:
dep nom cp nb_hab_2010 nb_hab_1999 nb_hab_2012 dens surf long lat alt_min alt_max
1618 4 Larche 4540 74 83 100 1 68.86 6.85000 44.4500 1606.0 3165.0
1790 5 Ristolas 5460 90 78 100 1 82.18 6.95000 44.7667 1571.0 3294.0
1798 5 Saint-Véran 5350 257 265 300 5 44.75 6.86667 44.7000 1756.0 3175.0
1847 5 Molines-en-Queyras 5350 315 322 300 5 53.62 6.85000 44.7333 1625.0 3160.0
1904 5 Abriès 5460 365 358 400 4 77.13 6.93333 44.7833 1513.0 3305.0
1923 5 Villar-d'Arêne 5480 287 217 300 3 77.51 6.33711 45.0423 1519.0 3883.0
26927 66 La Llagonne 66210 242 264 300 10 23.09 2.11667 42.5333 1546.0 2196.0
26943 66 Caudiès-de-Conflent 66360 13 6 0 2 6.50 2.16139 42.5673 1616.0 2045.0
27039 66 Porté-Puymorens 66760 131 147 100 2 49.42 1.83333 42.5500 1557.0 2827.0
27125 66 Mont-Louis 66210 247 272 300 633 0.39 2.11667 42.5167 1516.0 1608.0
27134 66 Angles 66210 566 589 600 13 43.20 2.07445 42.5778 1531.0 2808.0
29970 73 Bessans 73480 343 310 300 2 128.08 6.99167 45.3167 1673.0 3754.0
30114 73 Val-d'Isère 73150 1563 1628 1600 16 94.39 6.98333 45.4500 1785.0 3599.0
30127 73 Bonneval-sur-Arc 73480 241 239 200 2 82.72 7.05000 45.3667 1759.0 3642.0

Analyser des données

  • Compter le nombre de ligne
In [6]:
villes.count()
Out[6]:
dep            36700
nom            36700
cp             36700
nb_hab_2010    36700
nb_hab_1999    36700
nb_hab_2012    36700
dens           36700
surf           36700
long           36700
lat            36700
alt_min        36568
alt_max        36568
dtype: int64
  • Calculer une moyenne (ici la moyenne des habitants en 2010)
In [7]:
villes["nb_hab_2010"].mean()
Out[7]:
1768.0113079019075
  • Trouver un minimum (ici des habitants en 2010)
In [8]:
villes["nb_hab_2010"].min()
Out[8]:
0
  • Trouver un maximum (ici des habitants en 2010)
In [9]:
villes["nb_hab_2010"].max()
Out[9]:
2243833

Trier les données

  • Trier en ordre croissant de la population en 2010
In [10]:
villes.sort_values(by="nb_hab_2010")
Out[10]:
dep nom cp nb_hab_2010 nb_hab_1999 nb_hab_2012 dens surf long lat alt_min alt_max
21096 55 Bezonvaux 55100 0 0 0 0 9.23 5.46750 49.2367 226.0 367.0
21155 55 Louvemont-Côte-du-Poivre 55100 0 0 0 0 8.25 5.39834 49.2378 214.0 375.0
21038 55 Fleury-devant-Douaumont 55100 0 0 0 0 10.27 5.43445 49.1950 227.0 390.0
21051 55 Haumont-près-Samogneux 55100 0 0 0 0 10.81 5.35251 49.2728 194.0 355.0
21300 55 Beaumont-en-Verdunois 55100 0 0 0 0 7.87 5.40778 49.2587 233.0 372.0
... ... ... ... ... ... ... ... ... ... ... ... ...
2049 6 Nice 06000-06100-06200-06300 343304 343123 344900 4773 71.92 7.25000 43.7000 0.0 520.0
11718 31 Toulouse 31000-31100-31200-31300-31400-31500 441802 390301 439600 3734 118.30 1.43333 43.6000 115.0 263.0
28152 69 Lyon 69001-69002-69003-69004-69005-69006-69007-6900... 484344 445274 474900 10117 47.87 4.84139 45.7589 162.0 312.0
4439 13 Marseille 13001-13002-13003-13004-13005-13006-13007-1300... 850726 797491 851400 3535 240.62 5.37639 43.2967 0.0 640.0
30437 75 Paris 75001-75002-75003-75004-75005-75006-75007-7500... 2243833 2125851 2211000 21288 105.40 2.34445 48.8600 27.0 127.0

36700 rows × 12 columns

  • Trie en ordre décroissant (ici de l'altitude)
In [11]:
villes.sort_values(by="alt_min", ascending=False)
Out[11]:
dep nom cp nb_hab_2010 nb_hab_1999 nb_hab_2012 dens surf long lat alt_min alt_max
30114 73 Val-d'Isère 73150 1563 1628 1600 16 94.39 6.98333 45.45000 1785.0 3599.0
30127 73 Bonneval-sur-Arc 73480 241 239 200 2 82.72 7.05000 45.36670 1759.0 3642.0
1798 5 Saint-Véran 5350 257 265 300 5 44.75 6.86667 44.70000 1756.0 3175.0
29970 73 Bessans 73480 343 310 300 2 128.08 6.99167 45.31670 1673.0 3754.0
1847 5 Molines-en-Queyras 5350 315 322 300 5 53.62 6.85000 44.73330 1625.0 3160.0
... ... ... ... ... ... ... ... ... ... ... ... ...
36695 976 Sada 97640 10195 10195 10195 933 10.92 45.10470 -12.84860 NaN NaN
36696 976 Tsingoni 97680 10454 10454 10454 300 34.76 45.10700 -12.78970 NaN NaN
36697 971 Saint-Barthélemy 97133 8938 8938 8938 372 24.00 -62.83330 17.91670 NaN NaN
36698 971 Saint-Martin 97150 36979 36979 36979 695 53.20 18.09130 -63.08290 NaN NaN
36699 975 Saint-Pierre-et-Miquelon 97500 6080 6080 6080 25 242.00 46.71070 1.71819 NaN NaN

36700 rows × 12 columns

Faire des opérations avec les données

On pourrait vouloir calculer la différence entre la population en 2010 et en 2012 et ajouter le résultat dans une nouvelle colonne On peut le faire ainsi

In [12]:
villes["diff_10_12"] = villes["nb_hab_2012"] - villes["nb_hab_2010"]
villes
Out[12]:
dep nom cp nb_hab_2010 nb_hab_1999 nb_hab_2012 dens surf long lat alt_min alt_max diff_10_12
0 1 Ozan 1190 618 469 500 93 6.60 4.91667 46.38330 170.0 205.0 -118
1 1 Cormoranche-sur-Saône 1290 1058 903 1000 107 9.85 4.83333 46.23330 168.0 211.0 -58
2 1 Plagne 1130 129 83 100 20 6.20 5.73333 46.18330 560.0 922.0 -29
3 1 Tossiat 1250 1406 1111 1400 138 10.17 5.31667 46.13330 244.0 501.0 -6
4 1 Pouillat 1250 88 58 100 14 6.23 5.43333 46.33330 333.0 770.0 12
... ... ... ... ... ... ... ... ... ... ... ... ... ...
36695 976 Sada 97640 10195 10195 10195 933 10.92 45.10470 -12.84860 NaN NaN 0
36696 976 Tsingoni 97680 10454 10454 10454 300 34.76 45.10700 -12.78970 NaN NaN 0
36697 971 Saint-Barthélemy 97133 8938 8938 8938 372 24.00 -62.83330 17.91670 NaN NaN 0
36698 971 Saint-Martin 97150 36979 36979 36979 695 53.20 18.09130 -63.08290 NaN NaN 0
36699 975 Saint-Pierre-et-Miquelon 97500 6080 6080 6080 25 242.00 46.71070 1.71819 NaN NaN 0

36700 rows × 13 columns

In [ ]: