pandas를 사용하여 파이썬으로 Excel 파일 읽기


144

이 방법으로 Excel 파일을 읽으려고합니다.

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

두 가지 인수가 예상된다는 오류가 발생합니다. 두 번째 인수가 무엇인지 모르겠으며 여기에서 달성하려는 것은 Excel 파일을 DataFrame으로 변환하는 것입니다. 올바른 방법입니까? 아니면 팬더를 사용하여 다른 방법이 있습니까?

답변:


222

닫기 : 먼저을 호출 ExcelFile한 다음 .parse메소드 를 호출 하고 시트 이름을 전달하십시오.

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

당신이하고있는 일은 인스턴스가 아닌 클래스 자체에 존재하는 메소드를 호출하는 것입니다 (그러나 관용적이지는 않지만). 그렇게하면 시트 이름을 전달해야합니다.

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

6
"df = xl.parse ("Sheet1 ")"을 사용하면 각 열의 첫 번째 셀 값이 데이터 프레임의 열 이름으로 자동 취해 어떻게 내 열 이름을 지정합니까?
Rakesh Adhikesavan 2016 년

2
팬더 15.0.2에서는 parsed = pd.io.parsers.ExcelFile.parse(xl, "Sheet1")작동하지 않으며 오류가 발생 module object has no attribute ExcelFile합니다. parsed = pd.io.excel.ExcelFile.parse(xl, "Sheet1")나를 위해 일합니다
Neil

좋은. 이는 탭을 사용하여 동일한 탭에 액세스하는 방법과 거의 같습니다 openpyxl. 팬더는 후드 아래에서 openpyxl을 호출합니까?
Pyderman

2
첫 번째 행을 머리글로 바꾸는 것을 어떻게 방지합니까? 매개 변수를 사용해 보았지만 headers=None코드를 위반하지는 않았지만 작동하지 않았습니다.
Elliptica

8
이것이 작동 하려면 pip install xlrd 가 필요하다는 것을 알았 습니다. xlrd 패키지에는 팬더가 제공되지 않으므로 다른 목적으로 설치하지 않은 경우 "ImportError : No module named xlrd"예외가 발생합니다. Mac의 팬더 0.19.0부터는 모든 경우에 해당됩니다.
user5920660

95

이것은 훨씬 간단하고 쉬운 방법입니다.

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)

설명서 전체 내용을 확인하십시오 http://pandas.pydata.org/pandas-docs/version/0.17.1/generated/pandas.read_excel.html

FutureWarning : sheetname키워드는 최신 Pandas 버전에서 더 이상 사용되지 않으며 sheet_name대신 사용하십시오.


20

여기에 추가해야한다고 생각했습니다. 행이나 열에 액세스하여 반복하려면 다음과 같이하십시오.

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

편집하다:

방법 icol(i)과는 irow(i)이제 사용되지 않습니다. sheet1.iloc[:,i]i 번째 열 sheet1.iloc[i,:]을 가져 오고 i 번째 행 을 얻는 데 사용할 수 있습니다 .


13

나는 이것이 당신의 필요를 충족시켜야한다고 생각합니다.

import pandas as pd

# Read the excel sheet to pandas dataframe
DataFrame = pd.read_excel("PATH\FileName.xlsx", sheetname=0)

0

파일의 경로를 pd.read_excel

import pandas as pd

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

체크 아웃 문서를 같은 매개 변수를 탐험하기 위해 skiprows엑셀을로드 할 때 행을 무시



0

다음은 파이썬 코드에서 더 일반적인 구문으로 업데이트 된 메소드입니다. 또한 동일한 파일을 여러 번 열지 못하게합니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.