業務でよく使われる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データの読み取りから加工、出力までをスムーズに自動化できます。手作業で毎回集計していた業務も、この方法で大幅に効率化できるでしょう。