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)

Remarque, cet exemple fonctionne avec le jeu de données 11 disponible dans la rubrique database du site Aide à l'utilisation de R.

A développer : la fonction load pour les données numpy