※当サイトはリンクに広告ページが含まれている場合があります
業務を効率化・自動化する際には、Pythonを最も利用しています。
なぜか本ブログでPythonに関する記事を1つも書いていなかったことにびっくりしましたが。。。😲
PythonでExcelを扱う際の代表的なライブラリ
さて、PythonでExcelファイルを扱う必要が生じ、良さげなライブラリを調べていたら、
という記事を見つけ、以下のように紹介されています。
- Excelファイルのデータをもとに分析するならpandas
- Excelファイルの書式を保ったまま編集・追記するならopenpyxl
- xlsファイルを扱う必要があるならxlrd, xlwt
pandasはデータ分析のライブラリとして有名なので、以前から用いていましたが、openpyxlは初めてです。
なお、今回扱うのはxlsファイルではないので、xlrdやxlwtはパス。ただ、pandasであればxlsファイルも扱えるようです。
pandasとopenpyxlの使い分け
実際にpandasとopenpyxlを用いてExcelを使ってみた結論として、
- データ分析をするならpandas
- 既存のExcelの書式(罫線や色)をそのまま利用するならopenpyxl
となります。
pandasは、Excelデータをpandas.DataFrameとして読み込みます。
そこからpandasの関数やメソッドを用いて、データを自由に処理していき、最終的にExcelファイルにしたければ、処理後のデータを流すだけです。
そのため、Excelの読み込み・書き込みはできるが、処理自体にExcelは関係ありません(関係ない方が便利な気がします)。
一方、openpyxlは、セルの値の変更・セルの追加など、Excelファイルへの操作を行います。
そのため、既存のExcelファイルをテンプレートにして、そこにデータを転記していくなどの作業をする場合は、書式もキープできるため便利です。
もちろん、pandasとopenpyxを組み合わせて、いいとこ取りをするというのも可能です。
pandasとopenpyxlの処理速度
今回作ったプログラムは、まさに、
- 既存のExcelファイルをテンプレートにして、
- 各csvファイルのデータを流し込み、
- 新たなExcelファイルとして保存する(テンプレートの様式をそのままに)
というものだったので、openpyxlの方がぴったり要件に当てはまります。
ただ、せっかくなので、pandasとopenpyxlのそれぞれで作ってみて、どれくらい処理速度が違うのかを比較してみたところ、
- pandas:0.14秒
- openpyxl:0.017秒
と10倍近い差がありました。当初の予想ではpandasの方が速いだろうと思っていたので、この結果にはびっくりしました。
こういうのは試してみないとわからないものですね。
- 毎年のように改正される労働法令への対応に頭を悩ませている
- 総務や経理などの他の業務を兼務しているので、人事労務業務だけに時間を割けない
といった悩みを抱える企業の経営者・人事労務担当者向けに、公開型のブログでは書けない、本音を交えた人事労務に関する情報・ノウハウ、時期的なトピックに関するメールマガジンを「無料」で配信しています。
過去の配信分は公開しません。
情報が必要な方は、いますぐ以下のフォームから購読の登録をしてください。購読して不要と思ったら簡単に解除できますのでご安心ください。