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?
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)
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.
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.
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)
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
import pandas as pd
data = pd.read_Excel (r'**YourPath**.xlsx')
print (data)
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