前回の投稿 026 PyVISAとExcelファイルで測定機器をコントロールするで,openpyxlとlxmlの2個のパッケージを使って,Excelファイルを読み書きできることを紹介しました.
今回から数回に渡って,Excelファイルから,測定機器をコントロールするデータを読み込む方法を紹介します.
(投稿の目的は測定機器のコントールですが,純粋にPythonでExcelファイルのデータを読み込むことにも利用できます)
まず注意しておくことは,
「Excelファイルからデータを読み込む回数を(できるだけ)減らすようにしましょう」
ということです.
これは何を言っているかというと,Excelファイルのセル毎にデータを読み込むのではなく,行(Row)毎のデータを読み込みましょうということです.これだと,Excelファイルからデータを読み込むopenpyxlパッケージの関数は,データの行数分だけ実行すれば済みます.
なぜなら,openpyxlパッケージを使えば,Excelファイルからデータを読み込むことはできるのですが,処理時間は(例えばcsvファイルのようなテキストファイルからデータを読み込むのに比べて)かなり遅くなってしまうためです.
もちろん,数十個程度の設定項目のデータをExcelファイルから読み込むのなら,たとえセル毎にデータを読み込んでも問題ありませんが,数百~数千個の波形データを複数個読み込むケースなどでは,処理時間の長さが目立ってきます.
Excelファイルからデータを読み込むのはまだしも,Excelファイルのデータを書き込むのは,さらに大幅に処理時間が長くなってしまうので,openpyxlパッケージを使う時は,Excelファイルの行(Row)毎にデータを読み書きするよう癖をつけた方が賢明です.
また,openpyxlパッケージを使えば,Excelファイルからデータを読み込み,さらに,そのExcelファイルにデータを書き込むこと(データの修正/追加)も可能なのですが,処理が複雑になるのと,処理時間が長くなってしまうため,
- Excelファイルからデータを読み込むだけ
- 新規のExcelファイルとしてデータを作成
することに限定した方が良いと思います(経験則).
過去に,Excelファイルのセル毎にデータを読み書きするPythonスクリプトを作成して動作検証し,実際のデータを使って処理しようとしたところ,あまりの処理時間の長さに呆然としたことがあります.
色々,調べて見ると,
- 複雑なことはしない
- 行(Row)毎にデータを読み書きする
と限定することで,(大幅とまではいきませんが)それなりに短時間で処理できるようになりました.
今回の投稿は,経験則からの雑談になってしまいましたので,次の投稿から,openpyxlパッケージを使って,Excelファイルから行(Row)毎にデータを読み込む方法を紹介したいと思います.
0 件のコメント:
コメントを投稿