Skip to content

ys4i/CSV-slicer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

CSV Range Slicer GUI

概要

pandas と matplotlib を使って CSV を可視化し、ドラッグ操作で選択した範囲だけを別ファイルに切り出すための Tkinter 製 GUI ツールです。グラフ上で横軸の列を切り替えたり、凡例クリックで表示する値列をトグルしながらデータの切り出し条件を調整できます。

主な機能

  • 任意の CSV を読み込み、横軸に使う列を選択可能
  • 時刻らしい列を自動推測し、必要に応じて日時として解釈
  • index 以外の数値/数値変換可能な列を自動でプロット
  • 凡例クリックで系列の表示・非表示を切り替え (軸は表示ラインだけで自動スケール)
  • matplotlib の SpanSelector によるドラッグ範囲選択と、選択区間の CSV への書き出し
  • 横軸が非数値の場合は順序インデックスにフォールバックして切り出し位置を明示

必要環境

  • Python 3.9 以上 (tkinter が使える環境)
  • pandas
  • matplotlib
  • numpy

依存パッケージのインストール例

python -m pip install pandas matplotlib numpy

使い方

  1. 上記依存パッケージをインストールします。
  2. 本リポジトリを取得し、スクリプトを起動します。
    python csv_range_slicer_gui.py
  3. GUI が起動したら CSVを開く... ボタンから元データを読み込みます。
  4. 横軸にしたい列をコンボボックスから選択します。indexを日時として解釈 を有効にすると、列値を日時として扱うよう試行されます。
  5. プロット更新 を押すと、index 以外の数値列 (もしくは数値変換できる列) がグラフに表示されます。凡例をクリックすると各列の表示/非表示を切り替えられます。
  6. グラフ上をドラッグして抽出したい範囲を選択します。選択範囲はウィンドウ上部に表示されます。
  7. 選択区間をCSV出力... を押し、書き出し先を指定すると選択した範囲だけを CSV として保存できます。

範囲選択とエクスポートの仕様

  • 横軸が日時の場合: matplotlib の日時スケールをもとに、選択区間の Timestamp を求めてフィルタリングします。
  • 横軸が数値の場合: index を数値へ変換し、選択区間 [xmin, xmax] に含まれる行を抽出します。
  • 横軸が非数値の場合: 元の行順を 0,1,2,... のポジションとして扱い、選択した位置の行を抽出します (選択位置はステータス表示に原値と併せて表示)。
  • 書き出し時には選択した index を明示するため、index を列としてリセットしたうえで保存します。

トラブルシュート

  • 空のグラフになる: 選択した index 以外に数値列が無い可能性があります。凡例の案内やラベルを確認してください。
  • フォントや UI が崩れる: Tkinter のテーマに依存するため、必要に応じて OS の DPI 設定やテーマを調整してください。
  • tkinter が見つからない: Linux 等で python3-tk パッケージの追加インストールが必要な場合があります。

開発メモ

  • 主要ロジックは CsvRangeSlicerApp クラス (csv_range_slicer_gui.py) にまとまっています。
  • 凡例のクリック検出や SpanSelector の作成など、UI 再描画時にイベント再登録が必要な処理は _create_span_selector_setup_legend_interactivity で行っています。
  • 改修時は pandas/matplotlib のバージョン差異 (例: relim(visible_only=True) の対応状況) に注意してください。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages