2013-06-12 5 views
78

使用してPythonでExcelファイルを読む:私はこの方法でExcelファイルを読み込むしようとしているパンダ

期待される二つの引数を言うエラーがスローされます
newFile = pd.ExcelFile(PATH\FileName.xlsx) 
ParsedData = pd.io.parsers.ExcelFile.parse(newFile) 

を、私は2番目の引数が何であるかを知らないと私がここで達成しようとしていることは、ExcelファイルをDataFrameに変換することです。正しい方法で行っていますか?またはパンダを使ってこれを行うための他の方法はありますか?

答えて

136

閉じる:最初に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 

、しかし、あなたはあなたにもする必要があるだろうことをやっている場合これは非常にシンプルかつ簡単な方法です

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

を、それが自動的にデータフレームの列名として各列の最初のセルの値をとります私自身の列名を指定するのですか? –

+1

pandas 15.0.2では、 'parsed = pd.io.parsers.ExcelFile.parse(xl、" Sheet1 ")'は動作せず、モジュールオブジェクトにはExcelFileという属性がありません。 'parsed = pd.io.excel.ExcelFile.parse(xl、" Sheet1 ")'は私のために働きます – Neil

+0

ニース。これは 'openpyxl'を使って同じタブへのアクセスがどのように達成されるかと同じくらいまあまあです。フードの下でパンダがopenpyxlを呼んでいますか? – Pyderman

14

思想私はあなたがそれらをループするために、行または列にアクセスする場合、あなたはこれを行うことを、ここで追加する必要があります:シート名を渡します。

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キーワードは新しいパンダのバージョンで廃止され、代わりにsheet_nameを使用しています。

+1

ニース!私はあなたが列または行 – cd98

52

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

担当者にアクセスして、ドキュメントへのリンクを含むことを知っていませんでした。 – hlyates

10

私はこれがあなたのニーズを満足させなければならないと思う:どのように、私は「DF = xl.parse(」シート1「)を」使用している場合

import pandas as pd 

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