【Python】Excelファイルを自動で読み取り・加工する方法(pandas + openpyxl)

【Python】Excelファイルを自動で読み取り・加工する方法(pandas + openpyxl) Python

業務でよく使われるExcelファイルを、Pythonで自動的に読み取り・加工する方法を紹介します。本記事では、pandasとopenpyxlという2つのライブラリを活用して、Excelファイルを効率よく扱う方法を解説します。

必要なライブラリのインストール

まずはライブラリをインストールしましょう。

pip install pandas openpyxl

pandas
データ解析用ライブラリ。Excelファイルの読み書きも得意です。

openpyxl
pandasでExcelファイルを扱う際に必要なエンジン(.xlsx形式対応)。

Excelファイルの読み込み

以下のようなExcelファイル(sample.xlsx)を読み込むとします。

import pandas as pd

# Excelファイルを読み込む(1シート目)
df = pd.read_excel('sample.xlsx', engine='openpyxl')

# データの先頭5行を表示
print(df.head())

engine=’openpyxl’を指定することで、.xlsx形式の読み込みが可能になります。

データの加工例①:列を追加する

例として、新しい列「合計」を追加します。

# 例:'数量'と'単価'から合計金額を計算
df['合計'] = df['数量'] * df['単価']
print(df[['数量', '単価', '合計']].head())

データの加工例②:フィルタリング(条件抽出)

条件に一致する行だけを抽出する例です。

# 合計が10,000円以上のデータだけを抽出
filtered_df = df[df['合計'] >= 10000]
print(filtered_df)

加工後のデータをExcelに保存する

加工が完了したデータを新しいExcelファイルとして保存します。

# 加工後のデータを保存(新しいファイル)
filtered_df.to_excel('output.xlsx', index=False, engine='openpyxl')

複数シートの読み込みと書き出し

複数シートを扱いたい場合の例も紹介します。

# 複数シートを読み込む(辞書として返される)
df_sheets = pd.read_excel('sample.xlsx', sheet_name=None, engine='openpyxl')

# シート名を確認
print(df_sheets.keys())

# 各シートを個別に処理することも可能
for sheet, df in df_sheets.items():
    print(f'--- {sheet} ---')
    print(df.head())
# 複数シートを書き出す
with pd.ExcelWriter('output_multi.xlsx', engine='openpyxl') as writer:
    df1.to_excel(writer, sheet_name='Sheet1', index=False)
    df2.to_excel(writer, sheet_name='Sheet2', index=False)

まとめ

pandasとopenpyxlを組み合わせることで、Excelデータの読み取りから加工、出力までをスムーズに自動化できます。手作業で毎回集計していた業務も、この方法で大幅に効率化できるでしょう。