8-1. filter_csv

AxyTrek (Technosmart) やNinjaScan (Little Leonardo) などのロガーには、GPSによる緯度経度情報と加速度などを含むさまざまなセンサーデータが含まれます。それぞれのセンサーでサンプリング間隔が異なり、加速度データが不要だという場合には、元のデータ(data.csv)*からGPSに関係する項目のみを抽出してdata_gps.csvとして保存するこのプログラムを利用してみてください。

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

以下のPythonコード(filter_csv.py)をテキストエディタで開き、JupyterLiteのノートブックにコピーして実行(右▼をクリック)します。

import pandas as pd
 
# 入力ファイルと出力ファイルのパス
input_file = "data.csv"
output_file = "data_gps.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} に保存されています。")

JupyterLiteの左のメニューバーに出力ファイル(data_gps.csv)が保存されていることを確認し、ダウンロードして使用してください。

コードの以下の部分を変更することで、出力ファイルに含まれる項目が変わります。適宜変更してご利用ください。

selected_columns = [
    'time', 'latitude', 'longitude',
    'height_above_mean_sea_level', 'ground_speed', 'number_of_satellites'
] 

以下のように変更することで、三軸加速度データのみを抽出することもできます。その場合には出力ファイル名も”data_acc.csv”などと変更してください。

selected_columns = [
'time', 'acceleration_longitudinal', 'acceleration_lateral',
'acceleration_dorso_ventral'
] 

オフライン解析 (Offline Analysis) のページへ