8-1. filter_csv.py

AxyTrek (Technosmart) やNinjaScan (Little Leonardo) などGPSによる緯度経度情報と加速度などを含むデータ(data.csv)*から、GPSに関係する項目のみを抽出してfiltered_data.csvとして保存するツールです。

*BiPでOpenデータとなっているKatsufumi Sato (Atmosphere and Ocean Research Institute, University of Tokyo) 提供のオオミズナギドリのデータ (title: 9B41870_TS-AxyTrek_Movebank_YNo.6_release20210824) の一部を使用しています。

下記のコードをテキストエディタにコピーし、filter_csv.pyという名前で保存します。

import pandas as pd

# 入力ファイルと出力ファイルのパス
input_file = "data.csv"
output_file = "filtered_data.csv"

# CSVファイルを読み込み
df = pd.read_csv(input_file)

# 選択するカラム(time, latitude, longitude, height_above_mean_sea_level, ground_speed, number_of_satellites)
selected_columns = [
    'time', 'latitude', 'longitude',
    'height_above_mean_sea_level', 'ground_speed', 'number_of_satellites'
]

# 選択したカラムが入力ファイルに存在するかをチェックし、存在しないカラムを空で追加
for column in selected_columns:
    if column not in df.columns:
        df[column] = None  # 存在しないカラムは空欄(NaN)を追加

# 選択したカラムのみを抽出
filtered_df = df[selected_columns]

# latitude と longitude が NaN でない(つまり空でない)行のみ抽出
filtered_df = filtered_df.dropna(subset=['latitude', 'longitude'])

# フィルタリングしたデータを新しいCSVファイルに保存
filtered_df.to_csv(output_file, index=False)

print(f"処理が完了しました。出力ファイルは {output_file} に保存されています。")

実行方法

使用するPython環境に必要なライブラリ(pandas)をインストールしてください。

pip install pandas

コマンドラインでスクリプトを保存したディレクトリに移動し、以下のコマンドを実行します。

python filter_csv.py