Work Life Fun

仕事も人生も楽しむ社労士

PythonでExcelを扱う際のpandasとopenpyxlの使用感

※当サイトはリンクに広告ページが含まれている場合があります

業務を効率化・自動化する際には、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の方が速いだろうと思っていたので、この結果にはびっくりしました。

こういうのは試してみないとわからないものですね。

【無料】効率的に人事労務の情報を入手しませんか?
  • 毎年のように改正される労働法令への対応に頭を悩ませている
  • 総務や経理などの他の業務を兼務しているので、人事労務業務だけに時間を割けない

といった悩みを抱える企業の経営者・人事労務担当者向けに、公開型のブログでは書けない、本音を交えた人事労務に関する情報・ノウハウ、時期的なトピックに関するメールマガジンを「無料」で配信しています。

過去の配信分は公開しません。

情報が必要な方は、いますぐ以下のフォームから購読の登録をしてください。購読して不要と思ったら簡単に解除できますのでご安心ください。


up_line