ELECTRONICS · PYTHON · MAKER

電子工作とPythonの技術ノート

作ったコードを検証し、仕組みをわかりやすく解説

技術ノート · 2026-10-17

CSV分析で必須の入力チェックを6つに分ける

空ファイルや重複時刻を安全に検出する実装の観点

情報表示・学習目的の解説です。安全上重要な設備の制御や保証には使用しないでください。

計算より前に入力の検証を行う

データが不正なまま分析を続けると、もっともらしいグラフだけが出力され、後から誤りに気づきにくくなります。CSVの読み込み段階では、必須列、各行の状態、日時形式、順序、重複、終了時刻の少なくとも6点を確認します。

エラーを無視して勝手に時刻を補ったり、状態を変換したりしない方針なら、結果を説明するときも入力との対応が明確です。

具体的な6項目

必須列 timestamp/status があること、1行以上あること、状態が定義済みの3値に限られること、時刻にタイムゾーンが付くこと、時刻の昇順と重複なしを満たすこと、最後の区間の終了時刻が最終イベントより後であることです。

状態は大文字へ正規化する運用が可能ですが、誤字を別の意味として受け入れるのは避けます。

テストの作り方

正常なCSVで期待値を比較するだけでなく、不正なCSVが例外になることを確認します。ここで紹介する方針は、MacでテストしたPython製ダッシュボードの入力仕様に基づいています。

計算値は小数表記の丸めによって差が出る場合があるため、原値と表示値を分けて扱うことも大切です。

確認用メモ・例

if not events:
    raise ValueError('CSV must contain at least one row')
if len({t for t, status in events}) != len(events):
    raise ValueError('duplicate timestamps')

一次資料

記事の説明と、個別環境で動作保証されることは異なります。実機の仕様・状態を確認して使ってください。

← 記事一覧へ戻る