【Udemyの講座を受けてみた感想】独学で身につけるPython〜Excel自動化編〜

Python初学者がUdemyの講座を受けて、どんなことができるようになったかを報告する第二弾は、こちらの講座です。
独学で身につけるPython〜Excel自動化編〜【業務効率化・自動化で残業を無くそう!】
Excel仕事の効率化・自動化に特化したPythonコースです。「Excelの自動化=VBA」と思っていませんか?実はPythonもExcelの自動化が得意です!面倒臭い仕事はPythonに任せて、生産性の高い働き方を目指しましょう!
この講座は独学で身につけるPython〜基礎編〜【業務効率化・自動化で残業を無くそう!】を受講していることが前提となっていますが、受講していなくてもjupyter notebookでPythonの実行環境を構築済みで、数値・文字列・変数・リスト・if文・for文・ライブラリといった基本的なPython知識があれば受講可能です。
こちらの基礎編を受講した感想については、下記の記事で紹介しています。
Python初学者がUdemyのたった1つの講座を受けただけでできるようになったこと
今回の講座は「Excel自動化編」となっている通り、Excelのファイル操作をPythonを使って自動化するという内容です。
いずれもExcelを開いて普通に操作すればできることですが、共有フォルダに溜まっていく大量のExcelファイルを自分の手を介さずに自動処理できれば便利ですよね。
物流現場においても、WMS(倉庫管理システム)へインポートする前のExcelファイルの前処理を自動でできるようにしておけば人手を減らせる上に、ヒューマンエラーも起こりません。
逆にWMSからエクスポートしたcsvファイルを顧客へ送付する前に、他のデータを付加した上で指定されたExcelフォーマットに自動変換するなんてことも可能になります。
ここでは具体的にどんなことができるようになって、それが物流現場でどんな風に応用できそうかを見ていきましょう。
データの転記
予め決められたフォーマットの複数のExcelファイルに入力されたデータを、別のExcelファイルに転記する作業の自動化です。
講座で取り上げられている例は、決められたフォーマットに入力されたExcel形式の請求書から、決められたセルの内容(例えば得意先コードとか請求合計金額など)を別のまとめExcelファイルに転記するというものです。
これは物流会社でもよくあることで、特に海外現法では経理システムはあるものの、請求書の発行はシステム外のExcelでというのはよくある話しです。
その場合、このようにその月の請求金額を(場合によってはカテゴリー別に)各請求書から集計できれば、経理システムのデータと照合することができて便利です。
正直、このデータ転記についてはPython〜基礎編〜【業務効率化・自動化で残業を無くそう!】でも触れられており、勘の良い人であればWeb検索で多少の足りない知識を補うことによりできてしまう内容ではありますが、復習を兼ねた知識の定着にはなると思います。
ファイルの分割・結合
ここではExcelを操作するライブラリーとしてpandasが登場します。
基礎編、及び上記のデータ転記で使っていたopenpyxlと違って、計算の自動化も自由自在にできるので適正在庫シミュレーションの自動化にも使うことができます。
勿論、すべての点でpandasが優れているというわけでもなく、罫線や文字の修飾等のフォーマットはpandasでは引き継げませんがopenpyxlでは引き継げます。
ですので、予めきれいなフォーマットで固定した請求書等から値を読み込んだり書き込んだりする用途には、openpyxlの方が優れています。
「複雑な計算も、フォーマットの引継ぎも両方したい」
という場合には、pandasでデータ処理をした後にopenpyxlで値を書き込むというような使い方をするようです。
講座ではこのpandasを使って、ある列でフィルターを掛けた結果でファイルをいくつかに分割したり、逆にファイルを結合するやり方を紹介しています。
結合する時には、ただ単に(すべての列が一致するような)同じフォーマットのファイルを下につなげるのではなく、違うフォーマットのファイルを共通の列をキーとして内部結合したり外部結合するやり方を紹介しています。
ファイル間の差分検出
上記で紹介した内部結合や外部結合を利用すると、2つのファイルの差分を自動抽出することができます。
講座では先月のデータと今月のデータを見比べて、どのデータが削除されたり追加になったのかを自動抽出するやり方を紹介しています。
WMSではマスターデータを得意先から倉庫会社にEDIで自動連係させるような運用をすることがあります。
しかし商品アイテム数が多いと、毎日新しいマスターデータをWMSに読み込ませるのは現実的ではありません。
例えば商品が約1万アイテムあり、1日にある商品の改廃が数点の場合に、1万アイテム分の巨大なマスターデータを毎日EDI通信させるのは賢いやり方ではありません。
そのような時に、得意先側で前日のマスターデータと当日のマスターデータの差分を自動抽出することができれば、改廃商品のマスターデータのみをEDIで送ることができます。
VLOOKUPやピボットテーブル
日頃からExcelでVLOOKUPやピボットテーブルを使う人も多いのではないでしょうか?
このように少し複雑な関数や機能もpandasで実装して自動化することができます。
Excelでデータ分析をする時はいろいろと試行錯誤しながら行うので、かえってVLOOKUPやピボットテーブルを手動で行う方がデータの挙動が見れていいと思いますが、定型作業になっている場合は自動化してしまった方がヒューマンエラー防止の点からもいいでしょう。
まとめ
本講座は、Excel操作の自動化からWeb操作の自動化、更にはSNSとのAPI通信まで含まれていた基礎編のうちで、Excel操作の自動化のみを深堀りした内容だったため、基礎編ほどの感動は正直ありませんでした。
しかしながら、基礎編があまりにテンポよく進んだため消化不良だったという人には、別の例を使って説明してくれるので理解が深まると思います。
独学で身につけるPython〜Excel自動化編〜【業務効率化・自動化で残業を無くそう!】
Excel仕事の効率化・自動化に特化したPythonコースです。「Excelの自動化=VBA」と思っていませんか?実はPythonもExcelの自動化が得意です!面倒臭い仕事はPythonに任せて、生産性の高い働き方を目指しましょう!