Python

Pythonを使ってエクセルの読み込みや書き込みをしていく

By 2021年4月12日No Comments

この記事ではPythonでExcelファイルを操作する方法について解説します。

Pythonのライブラリにあるpandas、xlrd、openpyxlを使ってExcelの操作をしていきます。

下記のsample.xlsxのファイルを使って操作していきます。

sample.xlsx

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が作成されました。作成されたエクセルファイルは下記になります。

sample2.xlsx

このようにopenpyxlでエクセルファイルを作成したりシートの追加などをする事ができました。

まとめ

この記事ではPythonのエクセルファイルをpandas、xlrd、openpyxlを使ってエクセルを操作する方法について解説しました。

pandasではさまざまなパターンでエクセルデータを読み込むことができました。

xlrdでは.xlsファイルも.xlsxファイルのどちらも扱えます。

openpyxlでは新しいシートの作成などができました。

以上、Pythonでエクセルファイルを操作する方法についてでした。

Udemyの動画学習でもPythonを勉強しよう!

「平日の夜の勉強会には時間が間に合わなくて参加できない」「通勤時間のわずかな隙間時間を勉強時間にあてたい」「本ではよく分からないところを動画で理解を深めたい」そんなあなたはUdemyの動画学習がお勧めです!

UdemyのPythonおすすめ33講座レビューリスト
HOSL

Author HOSL

More posts by HOSL