Importer un fichier .CSV dans Python
Ouvrir votre IDE Python:
Copier le programme complexe (voir ci-dessous) qui permet d'importer les données d'un fichier CSV et de les placer dans une variable Python de type tableau.
Il faut réutiliser le fichier CSV sur les communes du 87. Récupérer votre fichier précédent ou celui donné en PJ.
1
from tkinter.filedialog import askopenfilename
2
from tkinter import Tk
3
4
Mafenetre = Tk() #on ouvre la fenêtre Tk
5
Mafenetre.withdraw() #on cache la fenêtre
6
7
#on peut donner le chemin d'accès vers le fichier ou la fonction askopenfilename
8
name = askopenfilename(parent=Mafenetre,filetypes =(("Fichier CSV", "*.csv"),("Fichier Texte","*.txt"),("Tous les fichiers","*.*")),title = "Choisir un fichier")
9
#on definit explicitement cette fenêtre comme objet parent de askopenfilename
10
11
sep = "***A COMPLETER***" #caractère séparateur du csv -peut être une virgule, un point-virgule ou une tabulation noté \t
12
entete = ***A COMPLETER*** #nombre de lignes d'entete
13
14
f = open(name,"r",encoding='utf-8')
15
data = f.readlines() #on lit toutes les lignes et on met ça dans une liste -un élément par ligne-
16
f.close() #on referme le fichier
17
Mafenetre.destroy() #on ferme la fenêtre Tk
18
19
data = data[ entete : ] #on supprime les lignes d'en-tête qui ne nous intéressent pas
20
21
tableau=[]
22
for ligne in data:
23
ligne = ligne.replace("," , ".") #change les virgules en point => format numérique différent sur python
24
ligne = ligne.strip().split(sep) #on sépare les différents élément en utilisant le caractère séparateur défini
25
tableau.append(ligne)
26
27
print(tableau[0:2])
Compléter les lignes 11 et 12 en remplaçant les codes ***A COMPLETER*** afin d'importer l'intégralité des données.
Si la modification du fichier s'est correctement déroulé sur ces 2 lignes, la console affiche ceci :
1
[['87077', '87800', 'JANAILHAC', 'Commune simple', '368', '1866', '0.5', '45.653878347', '1.24126604964'], ['87112', '87230', 'PAGEAS', 'Commune simple', '391', '2781', '0.6', '45.6827360451', '1.01676119087']]