私はこの方法でExcelファイルを読もうとしています:
newFile = pd.ExcelFile(PATH\FileName.xlsx)
ParsedData = pd.io.parsers.ExcelFile.parse(newFile)
これは2つの引数が予想されるというエラーをスローします。2番目の引数が何か、またここで達成しようとしているのはExcelファイルをDataFrameに変換することなのかわかりません。またはパンダを使用してこれを行うための他の方法はありますか?
閉じる:最初に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)
これはとても簡単で簡単な方法です。
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
将来の警告:sheetname
キーワードは新しいPandasバージョンでは非推奨です。代わりにsheet_name
を使用してください。
私がここで付け加えるべきだと思います、あなたがそれらを通してループするために行または列にアクセスしたいならば、あなたはこれをします:
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番目の行を取得できます。
私はこれがあなたの必要性を満たすべきだと思います:
import pandas as pd
# Read the Excel sheet to pandas dataframe
DataFrame = pd.read_Excel("PATH\FileName.xlsx", sheetname=0)
あなたはあなたのファイルへのパスをpd.read_Excel
に供給する必要があります。
import pandas as pd
file_path = "./my_Excel.xlsx"
data_frame = pd.read_Excel(file_path)
Excelをロードするときに行を無視するためにskiprows
のようなパラメータを探るために ドキュメント をチェックアウトしてください
import pandas as pd
data = pd.read_Excel (r'**YourPath**.xlsx')
print (data)
pythonコードでより一般的な構文を持つ更新されたメソッドを次に示します。また、同じファイルを複数回開くことを防ぎます。
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