Ouvrir des données en python
L'essentiel de cette page
Ouvrir des données, c'est, pour du traitement de données, avant tout ouvrir des tableaux. L'idéal est une ouverture au format data.frame (tableau de données) avec le module pandas de n'importe quel jeu de données (excel, csv, html, sas...)
1- Gérer les répertoires sources
Changer le répertoire source et l'afficher : on peut ainsi se dispenser d'indiquer le chemin complet d'un fichier lorsqu'on voudra l'ouvrir mais uniquement son nom.
import os as os
os.chdir("C:/Users/apcma/Google Drive/IUT/LP") # remplacer \ par /
print("Current Working Directory " , os.getcwd())
2- Ouvrir des data.frame (tableaux de données) avec le module pandas
Ligne de code à coller dans la console windows pour installer les modules nécessaires
python -m pip install --user easygui pandas
pandas, permet de gérer les data.frames (tableaux de données classiques type base de données ou tableur Excel)
easygui, permet d'ouvrir automatiquement une fenêtre pour aller chercher le fichier là où il est
Ouvrir un tableau excel au format data.frame avec le module pandas
import easygui
import pandas as pd
df2 = pd.read_excel(easygui.fileopenbox()) # On peut remplacer easygui.fileopenbox() par le nom du fichier.
# équivalent de la fonction file.choose() de R
Remarque : pensez à l'argument skiprows pour sauter les premières lignes du tableau si elles sont vides ou non pertinentes.
Ouvrir un fichier texte avec pandas
import easygui ; import pandas as pd
df2 = pd.read_table("C:/mon_fichier.txt")
Ouvrir un fichier CSV avec pandas
import easygui ; import pandas as pd
df2 = pd.read_csv("C:/mon_fichier.csv")
Ouvrir le fichier en sautant la première ligne
df2 = pd.read_csv("C:/mon_fichier.csv",skiprows=[0])
Charger des données de type texte avec numpy
import numpy as np
data = np.loadtxt(easygui.fileopenbox()) # On peut remplacer la partie en gras par le nom du fichier
Ouvrir un autre format avec pandas (html, sas...)
import pandas as df
dir(df) # Toutes les commandes commençant par read permettent d'ouvrir un fichier : on peut donc ouvrir html, sas...
3- Gérer les tableaux excel non data.frame, de structure complexe avec le module xlrd
Ligne de code à coller dans la console windows pour installer les modules nécessaires
python -m pip install --user xlrd easygui
xlrd, permet de gérer les tableaux excel de tous les format
easygui, permet d'ouvrir automatiquement une fenêtre pour aller chercher le fichier là où il est
1) Ouvrir le tableau excel
import easygui ; import xlrd
document = xlrd.open_workbook(easygui.fileopenbox())
2) Décrire le tableau ainsi ouvert
print("Nombre de feuilles: "+str(document.nsheets))
print("Noms des feuilles: "+str(document.sheet_names()))
feuille_1 = document.sheet_by_index(0) # Récupérer la feuille (onglet) 1 du tableau
print("Format de la feuille 1:")
print("Nom: "+str(feuille_1.name))
print("Nombre de lignes: "+str(feuille_1.nrows))
print("Nombre de colonnes: "+str(feuille_1.ncols))
3) Afficher le contenu d'une cellule
feuille_1 = document.sheet_by_index(0)
cellule = feuille_1.cell_value(rowx=1, colx=3)
print(cellule)
4) Afficher les titres des colonnes en définissant où les trouver
feuille_1 = document.sheet_by_index(0) # Récupérer la feuille (onglet) 1 du tableau
cols = feuille_1.ncols # Nombre total de colonnes
rows = feuille_1.nrows # Nombre total de lignes
# Affichage des titres : ici dans la première ligne
for titre in range(cols) :
titre = feuille_1.cell_value(rowx=0, colx=titre)
print(titre)
5) Récupérer les valeurs d'une petite colonne grâce à une petite fonction que l'on nommera ici colonne
# La fonction colonne va récupérer toutes les lignes (rows) d'une colonne donnée (col) pour un tableau (tableau)
def colonne(col, tableau, rows):
liste_temp = []
for ligne in range(1,rows,1) :
liste_temp.append(tableau.cell_value(rowx=ligne, colx=col))
return liste_temp
# Exemple d'utilisation
hematies = colonne(1, feuille_1, rows) # rows ici indique le nombre max de lignes. cf. 4) ci-dessus. On peut mettre une valeur plus petite
vgm = colonne(2, feuille_1, rows)
A développer : la fonction load pour les données numpy