Python permet d'extraire des données contenues dans un CSV et donc d'un fichier tableur (Excel ou Libre Office)
Après avoir récupéré des données dans le cadre de l'OpenData, les élèves vont pouvoir traiter ces données lors d'activités de statistiques ou de probabilités.
Dans un tableur on crée un tableau de notes.
On remarque tout d'abord que les valeurs contenues dans ce tableau sont entières. Lorsqu'elles seront décimales, il faudra peut-être utiliser la fonction replace(',','.')
qui permet de remplacer une virgule par un point. En effet, le séparateur décimale dans un tableur est la virgule alors que c'est le point en Python. On pourra lire à ce sujet la page 10bis qui explique comment gérer cette situation. Voir le bouton vert en bas de page.
On souhaite enregistrer ce fichier sous le format csv en le nommant Tableur1.csv
Pour cela, il suffit de faire Fichier/Enregistrer sous/ puis de choisir le type csv et de le nommer Tableur1.
Si on ouvre ce fichier, on obtient dans la première colonne les 7 lignes que nous avons entrées dans le tableur, les différents données étant séparées par des virgules.
Noms,Maths,Français,Histoire Achille,12,14,15 Bertille,17,11,9 Carole,15,15,16 Damien,11,13,12 Eric,19,15,18 Fabrice,14,17,17
Nous allons récupérer, ces données avec Python, les traités puis créer un nouveau fichier dans lequel on aura ajouter une ligne avec un nouvel élève et une colonne dans laquelle on aura les moyennes des élèves.
Pour plus de renseignements sur le la manipulation des fichiers csv :
Ouverture d'un fichier CSV
#ouverture d'un fichier CSV...
#... création de la liste des lignes nommée tableau...
#... et affichage des lignes.
import csv
with open('tableur.csv',newline='') as f: #Ouverture du fichier CSV
tableau=[]
lire=csv.reader(f) #chargement des lignes du fichier csv
print('',end='\n')
print('Affichage des lignes du tableau',end='\n')
for ligne in lire: #Pour chaque ligne...
print(ligne, end='\n') #...affichage de la ligne dans la console ...
tableau.append(ligne) #...on ajoute la ligne dans la liste ...
#...de liste nommée tableau
Création d'un fichier à partir de la liste tableau
#Création d'un fichier à partir de la liste tableau
with open('tableur1.csv','w',newline='') as f: #Ouverture du fichier CSV en écriture
ecrire=csv.writer(f) # préparation à l'écriture
for i in tableau: # Pour chaque ligne du tableau...
ecrire.writerow(i) # Mettre dans la variable ecrire cette nouvelle ligne
print('',end='\n')
print('longueur du tableau : ',len(tableau))
Ajout d'une ligne
#Ajout d'une ligne
with open('tableur1.csv','a',newline='') as f: #Ajout d'une ligne dans le fichier csv
ecrire=csv.writer(f) # préparation à l'écriture
ecrire.writerow(['Gilles','15','13','9']) # Mettre dans écrire cette nouvelle ligne
Fonction moyenne
#Fonction moyenne
def moy(list):
s=0
n=len(list)
for k in range(0,n):
s=s+int(list[k])
#print('s=',s,'n=',n,'moyenne=',s/n)
return s/n
Récupération des notes de chaque élève et calcul de la moyenne des notes des élèves
tab_moy=[]
for i in range(1,len(tableau)): #Pour chaque élève..
liste=tableau[i][1:] #...on crée une liste avec ses notes...
tab_moy.append(moy(liste)) # ...on calcule sa moyenne et on la met dans tab_moy...
tableau[i].append(moy(liste)) #...puis ajoute cette moyenne à la liste de ses notes...
tableau[0].append('Moyenne') #Ajout du libélé de la colonne moyenne
print('',end='\n')
print('colonne des moyennes : ',end='\n')
print(tab_moy)
print(tableau)
return s/n
Ajout de la moyenne des élèves dans le fichiers tableur qui vient d'être créé
with open('tableur3.csv','w',newline='') as f: #Ouverture du fichier CSV en écriture
ecrire=csv.writer(f)
for i in tableau:
ecrire.writerow(i)
Certains fichiers CSV peuvent contenir des valeurs décimales. Dans la page suivante on explique la méthode qui permet de gérer cette situation. Cette page sera utilise notamment pour un usage en sciences physiques.