You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于纬度最大值分组Pandas时序数据,实现轨道周期内加速度积分

按卫星轨道周期分组并积分加速度的解决方案

嘿,这个场景我之前处理过类似的,咱们一步步来搞定它!核心思路是先通过纬度的周期性振荡标记出每个轨道周期的分界点,再用groupby按周期分组计算积分,具体步骤如下:

1. 标记每个轨道周期的ID

因为纬度是在极值间恒定周期振荡的,我们可以通过检测纬度的趋势变化(从上升转下降或下降转上升)来识别周期的起点/终点,进而给每个周期分配唯一ID:

步骤细节:

  • 先计算纬度的一阶差分,判断纬度的上升/下降趋势;
  • 当趋势发生反转时(比如从下降转为上升,对应纬度到达最小值,这通常是一个新轨道周期的开始),标记为周期起点;
  • 对标记的起点做累加,得到每个数据点所属的周期ID。

示例代码:

import pandas as pd

# 假设你的DataFrame名为df,索引是时间序列,包含latitude和acceleration列
# 计算纬度的一阶差分,判断趋势变化
df['lat_diff'] = df['latitude'].diff()

# 标记周期起点:当纬度从下降转为上升(diff从负变正),处理第一个数据点
df['cycle_start'] = (df['lat_diff'] > 0) & (df['lat_diff'].shift(1) < 0)
df.loc[df.index[0], 'cycle_start'] = True  # 把第一个数据点设为第一个周期的起点

# 生成周期ID:对起点做累加,每个周期对应唯一的ID
df['cycle_id'] = df['cycle_start'].cumsum()

如果你的纬度是从最大值开始振荡(趋势从上升转下降),只需要调整cycle_start的判断条件:

df['cycle_start'] = (df['lat_diff'] < 0) & (df['lat_diff'].shift(1) > 0)

处理噪声(可选)

如果纬度数据有噪声导致趋势误判,可以先对纬度做滚动平滑:

# 用5窗口的滚动平均平滑纬度数据,窗口大小可根据实际情况调整
df['lat_smoothed'] = df['latitude'].rolling(window=5, min_periods=1).mean()
# 基于平滑后的纬度计算差分和周期起点
df['lat_diff'] = df['lat_smoothed'].diff()

2. 按周期分组并计算加速度积分

有了cycle_id后,就可以用groupby分组,然后对每个周期的加速度列做积分。由于是时间序列,推荐用梯形积分法(考虑时间间隔的不均匀性):

示例代码:

import scipy.integrate as spi

# 按周期分组,计算每个周期的加速度积分
cycle_accel_integrals = df.groupby('cycle_id').apply(
    lambda group: spi.trapz(group['acceleration'], group.index)
)

# 把结果转成DataFrame方便查看
cycle_accel_integrals = cycle_accel_integrals.to_frame(name='acceleration_integral')

如果你的时间间隔是均匀的,也可以用简化的方法(加速度求和乘以时间间隔):

# 假设时间间隔是1秒,根据实际情况调整
time_interval = df.index[1] - df.index[0]
cycle_accel_integrals = df.groupby('cycle_id')['acceleration'].sum() * time_interval.total_seconds()

3. 验证分组结果(可选)

可以可视化纬度和周期ID的对应关系,确保分组正确:

import matplotlib.pyplot as plt

plt.figure(figsize=(12,6))
plt.plot(df.index, df['latitude'], label='Latitude')
plt.scatter(df.index[df['cycle_start']], df['latitude'][df['cycle_start']], color='red', label='Cycle Start')
plt.legend()
plt.show()

这样就能清晰看到每个周期的分界点是否和纬度的振荡周期匹配啦!

内容的提问来源于stack exchange,提问作者Andreas Ioannou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:18:03