この記事ではPythonでExcelファイルを操作する方法について解説します。
Pythonのライブラリにあるpandas、xlrd、openpyxlを使ってExcelの操作をしていきます。
下記のsample.xlsxのファイルを使って操作していきます。
目次
Udemyの動画学習でもPythonを勉強しよう!
「平日の夜の勉強会には時間が間に合わなくて参加できない」「通勤時間のわずかな隙間時間を勉強時間にあてたい」「本ではよく分からないところを動画で理解を深めたい」そんなあなたはUdemyの動画学習がお勧めです!
UdemyのPythonおすすめ33講座レビューリストpythonのpandasでexcelファイルを読み込む方法
pandasを使うとexcelファイルを読み込むことができます。
コマンドでpandasをインストールします。
pip install pandas
pandasモジュールをインポートします。
import pandas as pd
pandasでエクセルファイルを読み込むときには、read_excel( )関数を使います。引数にエクセルのパスを指定します。
import pandas as pdexcel = 'sample.xlsx'
df = pd.read_excel(excel)
print(df.head())
結果:
No. 名前 身長
0 1 ヤマダ 160
1 2 タナカ 170
2 3 ウエダ 180
引数にファイルのパスだけを指定すると1つ目のシートを読み込むので、どのシートを読み込むか引数にsheet_nameを指定します。指定方法は、左から順に0から数えます。数値で指定して2番目のSheet2を読みこんでみます。
excel = 'sample.xlsx'
df = pd.read_excel(excel, sheet_name=1)
print(df.head())
結果:
No. 食べ物 料金
0 1 りんご 100
1 2 みかん 200
2 3 いちご 300
シート名で直接指定することもできます。
excel = 'sample.xlsx'
df = pd.read_excel(excel, sheet_name='Sheet2')
print(df.head())
結果:
No. 食べ物 料金
0 1 りんご 100
1 2 みかん 200
2 3 いちご 300
このように、どちらも同じSheet2を読み込む事ができました。
read_excel( )の引数にusecolsを指定すると必要な列のみ取得できます。
excel = 'sample.xlsx'
df = pd.read_excel(excel, sheet_name='Sheet', usecols=['名前', '身長'])
print(df.head())
結果:
名前 身長
0 ヤマダ 160
1 タナカ 170
2 ウエダ 180
引数にheaderを指定して読み込む開始行を指定することもできます。開始行は0から数えます。
excel = 'sample.xlsx'
df = pd.read_excel(excel, sheet_name='Sheet', header=2)
print(df.head())
結果:
2 タナカ 170
0 3 ウエダ 180
最初の2行を飛ばして読み込めています。
引数にskiprowsを指定すると読み込みたくない行名を指定できます。
df = pd.read_excel(excel, sheet_name='Sheet', skiprows=[2])
print(df.head())
結果:
No. 名前 身長
0 1 ヤマダ 160
1 3 ウエダ 180
このようにpandasでエクセルデータを様々なパターンで読み込むことができます。
Pythonのxlrdでエクセルファイルを読み込む方法
次はxlrdを使用してエクセルファイルを読み込んでいきます。
まずはコマンドでxlrdをインストールします。
pip install xlrd
xlrdモジュールをインポートします。
import xlrd
open_workbook( )関数の引数にExcelファイルのパスをファイルを指定してsheet_name( )関数でシート名一覧のリストを取得します。
import xlrd
excel = xlrd.open_workbook('sample.xlsx')
print(excel.sheet_names())
結果:
['Sheet', 'Sheet2']
nsheetsでブック内のシート数を出力することができます
excel = xlrd.open_workbook('sample.xlsx')
print(excel.nsheets)
結果:
2
シートを指定するにはブック内のインデックスを指定してシートを取得するsheet_by_index( )とシート名で取得するsheet_by_name( )があります。
excel = xlrd.open_workbook('sample.xlsx')
print(excel.sheet_by_index(0).name)
print(excel.sheet_by_name('Sheet').name)
結果:
Sheet
Sheet
どちらも同じシート名を取得できました。
エクセルブックの列数と行数を取得できます。
excel = xlrd.open_workbook('sample.xlsx')
sheet_1 = excel.sheet_by_index(0)
print(sheet_1.ncols)
print(sheet_1.nrows)
結果:
3
4
ncolsで列数、nrowsで行数を取得できました。
cell( )を使うとエクセルのセル内に格納されている値を取得できます。
print(sheet_1.cell(3,1).value)
結果:
ウエダ
今回は.xlsxのエクセルファイルを扱いましたがxlrdは.xlsのファイルも扱うことができます。
Pythonでエクセルファイルを作成できるopenpyxlの使い方
Pythonのライブラリopenpyxlはエクセルファイルを作成したり書き込むことができますできる。
コマンドでopenpyxlをインストールします。
$ pip install openpyxl
openpyxlモジュールをインポートします。
import openpyxl
新しいエクセルファイルを作ります
import openpyxl as op
e_file = op.Workbook()
e_file.save('sample2.xlsx')
次にエクセルファイルの中身を書き込んでいきます。
e_file = op.Workbook()
write = e_file.active
write['A1'].value = "No."
write['B1'].value = "名前"
e_file.save('sample2.xlsx')
これで書き込むことができました。activeメソッドを使ってシートを操作してます。そしてコードに文字列や数値を格納しています。最後にsave( )メソッドでファイルを保存します。
create_sheet( )メソッドで新たなシート名を引数に指定して作成する事ができます。
e_file = openpyxl.load_workbook(filename='sample2.xlsx')
e_file.create_sheet('Sheet2')
e_file.save('sample2.xlsx')
e_file.close()
sample2.xlsxにシート2が作成されました。作成されたエクセルファイルは下記になります。
このようにopenpyxlでエクセルファイルを作成したりシートの追加などをする事ができました。
まとめ
この記事ではPythonのエクセルファイルをpandas、xlrd、openpyxlを使ってエクセルを操作する方法について解説しました。
pandasではさまざまなパターンでエクセルデータを読み込むことができました。
xlrdでは.xlsファイルも.xlsxファイルのどちらも扱えます。
openpyxlでは新しいシートの作成などができました。
以上、Pythonでエクセルファイルを操作する方法についてでした。
Udemyの動画学習でもPythonを勉強しよう!
「平日の夜の勉強会には時間が間に合わなくて参加できない」「通勤時間のわずかな隙間時間を勉強時間にあてたい」「本ではよく分からないところを動画で理解を深めたい」そんなあなたはUdemyの動画学習がお勧めです!
UdemyのPythonおすすめ33講座レビューリスト