TP2 Sujet
TP2 Sujet
TP2 Sujet
Les tableurs sont des outils puissants mais pouvant être limités. Nous allons utiliser Python pour
traiter des données et obtenir les caractéristiques d’une variable statistique.
Nous allons étudier différentes caractéristiques sur les ponts en France. Les
données utilisées durant ce TP sont disponibles gratuitement à cette adresse :
https://www.data.gouv.fr/fr/datasets/programme-national-ponts-donnees-publiques/
Nous utiliserons en particulier 2 bibliothèques Python qui permettent respectivement le traitement
des données et leur représentation : numpy et matplotlib
[ ]: # Import des libraries python
import numpy as np
import matplotlib.pyplot as plt
Les régions d’implantation des ponts recensées sont données dans le fichier region_pont.npy.
[ ]: # Import des données
serie_r = np.load('region_pont.npy',allow_pickle=True)
print('Les 10 premiers éléments de la série sont :')
[ ]: # Taille de la population
N = len(serie_r)
# Modalités
regions = ['Auvergne Rhone Alpes',
'Hauts de France',
'Occitanie',
1
'Nouvelle Aquitaine',
'Pays de la Loire',
'Grand Est',
'Ile de France',
'Provence Alpes Cote d azur',
'Normandie',
'Centre Val de Loire',
'Bourgogne Franche Comte',
'Bretagne',
'Corse']
# ???
xxx_r = []
for i in range(13):
ni=0
for j in range(N):
if serie_r[j]==regions[i]:
ni+=1
xxx_r.append(ni)
xxx_r=np.array(xxx_r)
print(xxx_r)
3. Donner la signification de la variable xxx_r. Renommer cette variable avec un nom plus
explicite.
4. Donner le nombre de ponts recensés dans la région Nouvelle-Aquitaine.
3)
4)
effectifs_r est un array de numpy. Il s’agit d’une liste sur lesquelles les opérations sont déjà définies.
Ainsi, effectifs_r+5 renvoie un array où l’on a ajouté 5 à tous les éléments de effectifs_r.
5. Compléter la ligne ci-dessous
[ ]: # Calcul des fréquences
frequences_r =
2
'blue','indigo','violet','darkorange'],
radius=2)
plt.legend(labels=regions,title='Région',loc='center left',bbox_to_anchor=(1,-0.
↪5,2,2))
plt.show()
print(frequences_r)
7. Commmenter la série
7)
On étudie à présent la longueur des ponts recensés, et plus particulièrement ceux dont la longueur
est comprise entre 50 m et 200 m.
[ ]: # Import des données
serie_l = np.load('longueur_pont.npy')
print('La série comporte '+str(0)+' éléments.')
# Taille de la population
N =
9)
10)
3
print(b_reg)
# l'argument bins défini les classes sur lesquels l'histogramme est calculé.␣
↪L'argument density
# précise que l'on veut un histogramme en fréquence unitaire. Par défaut, le␣
↪diagramme tracera
[ ]: # Tracé de l'histogramme
plt.figure()
plt.hist(serie_l,bins=b_reg,density=True,ec='black')
plt.xlabel('Longueur du pont (m)')
plt.ylabel('Fréquence unitaire (m$^{-1}$)')
plt.show()
13)
On définit à présent 10 classes de même effectif. On montre que les classes sont telles que :
[ ]: # Définition des classes à effectifs constants
b_effc = [50,
52.60000000000002,
55.30000000000006,
59.000000000000114,
63.00000000000017,
68.8999999999999,
76.19999999999949,
86.09999999999893,
101.09999999999808,
130.09999999999644,
198.4]
4
for i in range(10):
c_effc[i]=(b_effc[i]+b_effc[i+1])/2
print(n_effc)
14. En copiant et adaptant le précédent tracé, tracer l’histogramme associé à cette définition de
classe
[ ]: # Tracé de l'histogramme
[ ]: moyenne =
print('La moyenne exacte vaut '+str(moyenne) +' m.')
mediane =
print('La médiane exacte vaut '+str(mediane)+' m.')
5
[ ]: # Calcul de la moyenne approchée
moyenne_app = 0
for i in range(10):
moyenne_app = moyenne_app + #???
print('La moyenne approchée vaut '+str(moyenne_app)+' m.')
[ ]: # Calcul de la variance
variance = 0
for j in range(N):
variance = variance + #???
#Calcul de l'écart-type
ecarttype=np.sqrt(variance)