【Python】pandasでエクセルをDataFrameとして読み込む方法
- 2021.06.07
- Python
今回はpandasを使ってエクセルファイルの指定データをpandas DataFrameに変換し読み込む方法をまとめる。
基本的なエクセルファイルの読込み
まずは、エクセルファイルを取込むうえでの基本を確認します。
import pandas as pd
df = pd.read_excel('file path')
エクセルファイルをDataFrameに変換する場合の基本は以上のコードだけです。
ただし、このpandas.read_excel()は拡張子.xlsのエクセルファイルのみに対応しているため、このままでは.xlsxなどのファイルを扱うことができません。
拡張子.xlsxのエクセルファイルの読込み
拡張子が.xlsでない場合には、以下のように書くことでDataFrameに変換できます。
df = pd.read_excel('file path', engine='openpyxl')
ファイルの読込み範囲指定
ファイルのシートが複数あり、シートを指定して読み込みたい場合や
シートの最初の数行はタイトルや説明文がはいっているため、そこを飛ばして読み込みたい場合など、範囲を指定して読み込みたいことが多いかと思います。
それらの指定方法を一つ一つ確認していきます。
読込みシートの選択方法
読込むシートを選択する場合には、引数にsheet_name=’hoge’を渡して指定します。
何も指定しなかった場合のデフォルトは一番初めのシートが選択されます。
# シート名で指定する場合
pd.read_excel('hoge', sheet_name='Sheet Name')
# シート番号で指定
pd.read_excel('hoge', sheet_name=0) # 1番目のシートを読み込む
pd.read_excel('hoge', sheet_name=1) # 2番目のシートを読み込む
# 複数シートの指定
pd.read_excel('hoge', sheet_name=[0,1])
pd.read_excel('hoge', sheet_name=['Sheet1', 'Sheet2'])
番号でシートを指定する場合には0が1番目のシートになり、1が2番目のシートというように一つずれることに注意(pythonは0からなので当たり前といえば当たり前ですが)
ヘッダー行(開始行)の指定
DataFrameのヘッダーにする行を指定することで、指定した行よりも上にある行はDataFrameとしての読込みの対象からはずすことができる。
指定しなかった場合のデフォルトは1行目から読み込みとなる。
pd.read_excel('hoge', header=0) # 1行目から読み込み
pd.read_excel('hoge', header=1) # 2行目から読み込み
リストを渡すこともでき、リストを渡した場合にはmultiindexが作成される。
フッター行の指定
フッター行を指定することで、その下の行を読み込まない。
(0がデフォルトの基準であるため数え方には注意)
pd.read_excel('hoge', skipfooter=10) # 下の10行は読み込まない
読込み行数や列の指定
読込み行数の指定
pd.read_excel('hoge', nrows=5) # 6行目までを読み込む
上記例の場合、1行目がヘッダーになる。
その下がデータフレーム上の行になる。
読込み列の指定
使用する列を指定することもできる。
一列だけを読み込みたい場合もリストで渡す。
pd.read_excel('hoge', usecols=[0,2,4]) # 1,3,5列目を読み込む
pd.read_excel('hoge', usecols='A,D') # AとD(1,4)列を読み込む
pd.read_excel('hoge', usecols=range(0,5)) # 1~5列目までを読み込む
インデックス列の指定
index_colを使って指定する。デフォルトはNone。
pd.read_excel('hoge', index_col=0) # 1列目をインデックスにする
Web上のzip形式ファイルの読込み
Web上のエクセルファイルであれば、上記の方法でパスを指定する代わりにURLを指定することで読込むことができる。
しかし、zip形式に圧縮されたエクセルファイルは、URLを渡すだけでは取得できず、前処理が必要になる。
# pandasに加えて必要になるライブラリをインポートする
import requests, io, zipfile
r = requests.get('URL') # zipfileのURLを指定
r2 = zipfile.ZipFile(io.BytesIO(r.content))
r3 = r2.open(r2.namalist()[0], 'r').read()
df = pd.read_excel(io.BytesIO(r3), engine='openpyxl') # .xlsxファイルと仮定
-
前の記事
【Python】cufflinksで作った2軸グラフの軸タイトルを変更する方法 2021.06.07
-
次の記事
【Python】pandasでHTMLテーブルなどを超簡単にスクレイピング 2021.06.07