python - 按时间序列过滤每组最新的 x % 并计算聚合
问题描述
过滤每个组的时间序列的最佳方法是什么,获取最近测量的 x%,然后计算整个过滤数据集的多个聚合?我目前正在使用以下代码,但这是正确的还是有更好的方法来实现这个目标?
fraction = 0.7
def df_by_ts_head_fraction(df):
end_idx = math.ceil(len(df) * fraction)
return df.sort_values(by='timestamp', ascending=False).iloc[:end_idx]
data = [[datetime.fromisoformat('2020-08-28 08:00'), 55.66, 'a']]
df = pd.DataFrame(data, columns=['timestamp', 'measurement', 'group'])
df = df.groupby('group').\
apply(df_by_ts_head_fraction).\
aggregate(['mean', 'median', 'size'])
解决方案
以下似乎实现了既定目标
df = df.groupby('timestamp').\
apply(df_by_ts_head_fraction).\
reset_index(drop=True).\
loc[:, ['timestamp', 'measurement']].\
groupby('timestamp').\
aggregate(['mean', 'median', 'size'])
推荐阅读
- javascript - 多个 eventListener 和 innerHTML 数据文本不能正常工作?
- javascript - yarn 和 npm 的主要区别是什么?
- java - 删除具有重复字段值的 entrySet 对象
- javascript - 固定位置偏移顶部和底部
- python - VS Code、Python、Intellisense 和导入模块为
- javascript - 如何使用 Pug/Jade 显示外部 JSON?
- date - 将字符串解析为日期,Groovy
- webpack - webpack 捆绑无效字符
- javascript - 拆分数组,然后将 arr 推送到各个 Div
- scala - 如何创建模块的数组?使用数组还是 Vec?