日常業務でよく使われる「CSVファイル」ですが、
月ごとや部署ごとにファイルが分かれていて、いちいち手動でまとめるのが面倒…ということはありませんか?
そんなときに便利なのがPythonの自動化処理です。
Pythonを使えば、複数のCSVファイルを一括で読み込み、1つのExcelファイルにシートごとにまとめることができます。
今回はその具体的な方法をご紹介します。
⬛︎こんなことができるようになる!
・複数のCSVファイルを自動で読み込める
・1つのExcelファイルにシートごとに保存できる
・毎月・毎週の手作業をゼロにできる
⬛︎準備するもの
今回使うPythonライブラリは以下の2つです。
pip install pandas openpyxl
- pandas:CSVやExcelの読み書きに便利なデータ分析ライブラリ
- openpyxl:Excel(.xlsx形式)を扱うためのライブラリ
これだけで準備は完了です!
⬛︎やりたいことの流れ
今回は、たとえば「月ごとの売上CSVファイル」があると仮定します。
data/
├── january.csv
├── february.csv
├── march.csv
これらを読み込んで、
各CSVをシート名にして1つのExcelファイル summary.xlsx
にまとめていきます。
⬛︎Pythonコード全体
import pandas as pd
import glob
# CSVファイルのあるフォルダを指定
csv_files = glob.glob("data/*.csv")
# ExcelWriterで出力先ファイルを指定
with pd.ExcelWriter("summary.xlsx", engine="openpyxl") as writer:
for csv_file in csv_files:
# ファイル名から拡張子を除いたシート名を作成
sheet_name = csv_file.split("/")[-1].replace(".csv", "")
# CSVをDataFrameとして読み込む
df = pd.read_csv(csv_file)
# Excelのシートに書き出す
df.to_excel(writer, sheet_name=sheet_name, index=False)
print("Excelファイル summary.xlsx を作成しました。")
⬛︎コードのポイント解説
① glob.glob()
:フォルダ内のCSVファイルをすべて取得
② pd.read_csv()
:CSVを読み込んでDataFrameに変換
③ ExcelWriter
:複数シートのExcelファイルをまとめて出力するためのツール
④ df.to_excel()
:各CSVを個別のシートとして保存
⬛︎応用:ファイル名に日本語を含む場合や、シート名が長い場合
Excelのシート名には31文字までという制限があります。
ファイル名が長い場合や日本語を含む場合は、以下のように処理できます。
import os
sheet_name = os.path.splitext(os.path.basename(csv_file))[0]
sheet_name = sheet_name[:31] # 最大31文字に制限
⬛︎まとめ:手作業を減らし、自動でExcelへ統合!
この方法を使えば、何十個のCSVファイルでも、ボタンひとつで1つの見やすいExcelファイルにまとめることができます。
■こんなときに使える!
- 月ごとの売上や在庫データの集計
- 支店・部署別のレポート集約
- CSV形式で出力されるツールのデータ取り込み