web-dev-qa-db-fra.com

Lecture d'un fichier Excel dans python en utilisant pandas

J'essaie de lire un fichier Excel de cette façon:

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

ce qui jette une erreur qui dit deux arguments attendus, je ne sais pas ce que le second argument est et aussi ce que j'essaye de réaliser ici est de convertir un fichier Excel en un DataFrame, est-ce que je le fais correctement? ou existe-t-il un autre moyen de le faire en utilisant des pandas?

129
Rakesh Adhikesavan

Close: vous appelez d'abord ExcelFile, puis vous appelez la méthode .parse et lui transmettez 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 réside dans la classe elle-même, plutôt que dans l'instance, ce qui est correct (bien que pas très idiomatique), mais si vous le faites, 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)
206
DSM

C'est beaucoup plus 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 mot clé sheetname est obsolète pour les nouvelles versions Pandas, utilisez sheet_name à la place.

86
Murali Mopuru

Je pensais que je devrais ajouter ici que si vous voulez accéder à des lignes ou des colonnes pour les parcourir en boucle, procédez comme suit:

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

Edit:

Les méthodes icol(i) et irow(i) sont maintenant obsolètes. Vous pouvez utiliser sheet1.iloc[:,i] pour obtenir le i-ème col et sheet1.iloc[i,:] pour obtenir la i-ème ligne.

18
Dr Manhattan

Je pense que cela devrait satisfaire votre besoin:

import pandas as pd

# Read the Excel sheet to pandas dataframe
DataFrame = pd.read_Excel("PATH\FileName.xlsx", sheetname=0)
12
Ajay Sant

Il vous suffit de renseigner le chemin de votre fichier vers pd.read_Excel

import pandas as pd

file_path = "./my_Excel.xlsx"
data_frame = pd.read_Excel(file_path)

Checkout la documentation pour explorer des paramètres tels que skiprows pour ignorer les lignes lors du chargement d'Excel

0
ted
import pandas as pd

data = pd.read_Excel (r'**YourPath**.xlsx')

print (data)
0
Suthura Sudharaka

Voici une méthode mise à jour avec une syntaxe plus courante dans le code python. Cela vous empêche é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

0
Quinn