170 votes

Lecture d'un fichier Excel en python à l'aide de pandas

J'essaie de lire un fichier Excel de cette manière :

newFile = pd.ExcelFile(PATH\FileName.xlsx)
ParsedData = pd.io.parsers.ExcelFile.parse(newFile)

Je ne sais pas ce qu'est le deuxième argument et ce que j'essaie de faire ici, c'est de convertir un fichier Excel en un DataFrame. Est-ce que je le fais de la bonne façon ? ou y a-t-il une autre façon de le faire en utilisant pandas ?

257voto

DSM Points 71975

Fermer : vous appelez d'abord ExcelFile mais ensuite vous appelez le .parse et lui transmettre le nom de la feuille.

>>> xl = pd.ExcelFile("dummydata.xlsx")
>>> xl.sheet_names
[u'Sheet1', u'Sheet2', u'Sheet3']
>>> df = xl.parse("Sheet1")
>>> df.head()
                  Tid  dummy1    dummy2    dummy3    dummy4    dummy5  \
0 2006-09-01 00:00:00       0  5.894611  0.605211  3.842871  8.265307   
1 2006-09-01 01:00:00       0  5.712107  0.605211  3.416617  8.301360   
2 2006-09-01 02:00:00       0  5.105300  0.605211  3.090865  8.335395   
3 2006-09-01 03:00:00       0  4.098209  0.605211  3.198452  8.170187   
4 2006-09-01 04:00:00       0  3.338196  0.605211  2.970015  7.765058   

     dummy6  dummy7    dummy8    dummy9  
0  0.623354       0  2.579108  2.681728  
1  0.554211       0  7.210000  3.028614  
2  0.567841       0  6.940000  3.644147  
3  0.581470       0  6.630000  4.016155  
4  0.595100       0  6.350000  3.974442  

Ce que vous faites, c'est appeler la méthode qui vit sur la classe elle-même, plutôt que sur l'instance, ce qui est correct (bien que pas très idiomatique), mais si vous faites cela, vous devrez également passer le nom de la feuille :

>>> parsed = pd.io.parsers.ExcelFile.parse(xl, "Sheet1")
>>> parsed.columns
Index([u'Tid', u'dummy1', u'dummy2', u'dummy3', u'dummy4', u'dummy5', u'dummy6', u'dummy7', u'dummy8', u'dummy9'], dtype=object)

109voto

Murali Points 298

C'est un moyen très simple et facile.

import pandas
df = pandas.read_excel(open('your_xls_xlsx_filename','rb'), sheetname='Sheet 1')
# or using sheet index starting 0
df = pandas.read_excel(open('your_xls_xlsx_filename','rb'), sheetname=2)

consultez la documentation pour plus de détails http://pandas.pydata.org/pandas-docs/version/0.17.1/generated/pandas.read_excel.html

FutureWarning : Le site sheetname est obsolète pour les nouvelles versions de Pandas, utilisez le mot-clé sheet_name à la place.

22voto

Dr Manhattan Points 4796

J'ai pensé que je devais ajouter ici que si vous voulez accéder à des lignes ou des colonnes pour les parcourir en boucle, vous devez faire ceci :

import pandas as pd

# open the file
xlsx = pd.ExcelFile("PATH\FileName.xlsx")

# get the first sheet as an object
sheet1 = xlsx.parse(0)

# get the first column as a list you can loop through
# where the is 0 in the code below change to the row or column number you want    
column = sheet1.icol(0).real

# get the first row as a list you can loop through
row = sheet1.irow(0).real

Editar:

Les méthodes icol(i) y irow(i) sont désormais dépréciés. Vous pouvez utiliser sheet1.iloc[:,i] pour obtenir le i-ième col et sheet1.iloc[i,:] pour obtenir la i-ième ligne.

18voto

Ajay Sant Points 407

Je pense que cela devrait satisfaire votre besoin :

import pandas as pd

# Read the excel sheet to pandas dataframe
df = pd.read_excel("PATH\FileName.xlsx", sheet_name=0) #corrected argument name

2voto

Quinn Points 11

Voici une méthode mise à jour avec une syntaxe plus courante dans le code python. Elle vous évite également d'ouvrir le même fichier plusieurs fois.

import pandas as pd

sheet1, sheet2 = None, None
with pd.ExcelFile("PATH\FileName.xlsx") as reader:
    sheet1 = pd.read_excel(reader, sheet_name='Sheet1')
    sheet2 = pd.read_excel(reader, sheet_name='Sheet2')

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X