はじめに
業務効率化をVBAで行っていますが、更なる作業の高速化&効率を考え、Pythonを利用したExcel操作を行えるようにしたく、学習履歴と忘備録として自分用にメモしようと思います。
また、私と同じくPython初学者の参考になればいいかと思いますが、私自身が初学者の為、誤った事を記述してるかもしれません。
間違っている点などありましたらご指摘頂けると幸いです。
使用した環境は、Windows10 /Python3.8.8 /Anaconda4.10.1 /Jupyter1.0.0 /pandas1.2.4 /openpyxl3.0.7
動作確認環境はJupyterNotebookを使用しました。
ライブラリのチュートリアル
まずは、下記ドキュメントを参照しどのような仕様なのかを理解するといいと思います。
分からない事や発生したエラーに関しては、その都度ググりました。
有用なブログの記事などがたくさんありますが、環境によってはうまく動作しない場合もありました。
ライブラリのインポート
import os
import pandas as pd
import openpyxl as pyxl
from glob import glob
from openpyxl import load_workbook
CSVファイルのデータをDataFrameに確認し、データの確認を行う
CSV file path の取得
(カレントディレクトリに複数のファイルが格納されており、ファイル番号を指定してpathを取得する事を想定しています。)
filepaths = glob(r'C:\Users\UserName\Desktop\notebook\Excel_py\*.csv')
filepaths
# ディレクトリ内にあるファイル名が表示される
ファイル番号を指定して、Pathを取得する
filepath = filepaths[0]
filepath
# 指定したファイルの絶対パスが表示されます
ファイルの読み込み
_df = pd.read_csv(filepath)
_df
# ファイルのデータが表示される
データの確認
メソッドはかなりの数がありますので、参考の為に一例を記載しておきます。
# DataFrame からデータを部分抽出する(4行目の1~4列目を抽出)
columns = _df.iloc[4,[0,1,2,3]]
columns
# 指定した行の抽出(1行目~3行目)
_df[0:3]
# 3行目の抽出
_df.loc[3]
# 特定条件での抽出
_df.query('col7 == "now temp:-100"')
読み込んだCSVファイルのデータをExcelファイルに転記する
# csvファイルを新規作成したExcelファイルに転記する
_df.to_excel(r"C:\Users\UserName\Desktop\notebook\Excel_py\test.xlsx")
# Excelファイルを開いて内容を確認する
to_excel メソッドは、第一引数にPATHを指定すると、ファイルが存在しな場合は新規作成され
ファイルが存在する場合は、上書きする。
追記モード
# 追記モードで書き込む
with pd.ExcelWriter(r"C:\Users\UserName\Desktop\notebook\Excel_py\test.xlsx",engine="openpyxl" ,mode='a') as writer:
_df.to_excel(writer, sheet_name='sheet2')
※一先ず簡単にファイル操作を行うことができました。
学習したことは、随時追加していきたいと思います。