import pandas as pd
 
# 蓄積したJSONLファイルを読み込む
df = pd.read_json("ais_raw_data.jsonl", lines=True)
 
# ネストされたJSON構造をフラットな表形式に変換
df = pd.json_normalize(df.to_dict(orient="records"))
 
# 時刻文字列をdatetime型に変換
df["time_utc"] = pd.to_datetime(
    df["MetaData.time_utc"].str.replace(" UTC", "", regex=False),
    utc=True
)
 
# 5分単位で時刻を丸め、時間枠を作成
df["time_utc_rounded"] = df["time_utc"].dt.floor("5min")
 
# 同一船舶（MMSI）× 同一時間枠内で最新の1点だけを残す（スナップショット化）
df_snapshot = (
    df.sort_values("time_utc")
    .drop_duplicates(
        subset=["MetaData.MMSI", "time_utc_rounded"],
        keep="last"
    ).reset_index(drop=True)
)
