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の方が速いだろうと思っていたので、この結果にはびっくりしました。

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

社労士のための「ほどほど」お悩み相談室

あなたのご質問・ご相談に、月1回、無料・本音で回答します。

ご質問・ご相談は、登録後に届くメールから送っていただけます。費用は一切かかりません。「お悩み相談室」というクローズドな場だからこそ、踏み込んだ内容の質問にも回答できます。

これまでに、こんなご質問・ご相談に回答してきました。

  • コンサル(3号業務)を主力業務にするには、どうすれば良いか?
  • どのようにして顧問料を上げれば良いか?
  • 営業が苦手で、新規の顧客獲得ができない
  • 業務をどう絞り込めば良いか?
  • 一人社労士のままで良いのか、人を雇うべきか?
  • 苦手・相性の悪い顧問先と、どう付き合うか?
  • 生成AIの時代、社労士は今後どう生き残るか?

なぜ、無料で同業の社労士からの相談に乗るのか?

それは「本当に顧客のために活動できる社労士仲間を増やしたい」からです。

私自身、社労士という資格に誇りを持っています。企業からの社労士に対する不満をよく聞きますし、「社労士なんて役に立たない」と思われることは、正直悔しいです。

  • 信頼される・信頼できる社労士の仲間を増やしていきたい

そんな想いから、少しでも社労士業界全体のレベルアップに貢献できればと考えています。

    登録は無料・月1回配信・配信解除いつでも可能
    ※ 登録後、本人確認のメールをお送りします。届かない場合は迷惑メールフォルダもご確認ください。


    up_line