Een Excel-bestand lezen in python met panda’s

Ik probeer een Excel-bestand op deze manier te lezen:

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

die een fout geeft die zegt dat er twee argumenten worden verwacht, ik weet niet wat het tweede argument is en ook wat ik hier probeer te bereiken is om een Excel-bestand naar een DataFrame te converteren. Doe ik het op de juiste manier? of is er een andere manier om dit te doen met behulp van panda’s?


Antwoord 1, autoriteit 100%

Sluiten: eerst roept u ExcelFileaan, maar roept u vervolgens de methode .parseaan en geeft deze de bladnaam door.

>>> 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  

Wat je doet, is de methode aanroepen die op de klasse zelf leeft, in plaats van de instantie, wat goed is (hoewel niet erg idiomatisch), maar als je dat doet, moet je ook de bladnaam doorgeven :

>>> 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)

Antwoord 2, autoriteit 43%

Dit is een veel eenvoudige en gemakkelijke manier.

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)

bekijk de volledige details van de documentatie
http://pandas.pydata.org/pandas -docs/version/0.17.1/generated/pandas.read_excel.html

FutureWarning: het trefwoord sheetnameis verouderd voor nieuwere versies van Panda’s, gebruik in plaats daarvan sheet_name.


Antwoord 3, autoriteit 8%

Ik dacht dat ik hier zou moeten toevoegen dat als je toegang wilt krijgen tot rijen of kolommen om er doorheen te bladeren, je dit doet:

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

Bewerken:

De methoden icol(i)en irow(i)zijn nu verouderd. Je kunt sheet1.iloc[:,i]gebruiken om de i-th col te krijgen en sheet1.iloc[i,:]om de i-th row te krijgen.


Antwoord 4, autoriteit 7%

Ik denk dat dit aan uw behoefte moet voldoen:

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

Antwoord 5

Je hoeft alleen het pad naar je bestand in te voeren in pd.read_excel

import pandas as pd
file_path = "./my_excel.xlsx"
data_frame = pd.read_excel(file_path)

Bekijk de documentatieom te verkennen parameters zoals skiprowsom rijen te negeren bij het laden van de Excel


Antwoord 6

Hier is een bijgewerkte methode met syntaxis die vaker voorkomt in python-code. Het voorkomt ook dat u hetzelfde bestand meerdere keren opent.

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


Antwoord 7

import pandas as pd
data = pd.read_excel (r'**YourPath**.xlsx')
print (data)

Antwoord 8

Het laden van een Excel-bestand zonder een blad expliciet een naam te geven, maar in plaats daarvan het nummer van de bladvolgorde te geven (vaak laadt men gewoon het eerste blad) gaat als volgt:

import pandas as pd
myexcel = pd.ExcelFile("C:/filename.xlsx")
myexcel = myexcel.parse(myexcel.sheet_names[0])

Aangezien .sheet_nameseen lijst met bladnamen retourneert, is het gemakkelijk om een of meer bladen te laden door simpelweg de lijstelement(en) aan te roepen.


Antwoord 9

Al deze werken voor mij

In [1]: import pandas as pd
In [2]: df = pd.read_excel('FileName.xlsx') # If there is only one sheet in the excel file
In [3]: df = pd.read_excel('FileName.xlsx', sheet_name=0)
In [4]: In [20]: df = pd.read_excel('FileName.xlsx', sheet_name='Sheet 1')

Other episodes