如何根据python中的时间列每5秒计算一次平均值
Posted
技术标签:
【中文标题】如何根据python中的时间列每5秒计算一次平均值【英文标题】:How to compute average every 5 seconds based on time column in python 【发布时间】:2021-12-15 06:17:59 【问题描述】:我有一个像下面这样的数据集,它的时间列是基于毫秒的。
pid_col ,timestamp_col ,value_col
31,2019-03-29 07:14:56.999999756,0.0
31,2019-03-29 07:14:57.250000,0.614595
31,2019-03-29 07:14:57.500000,0.678615
31,2019-03-29 07:14:57.750000,0.687578
31,2019-03-29 07:14:58.000000244,0.559804
31,2019-03-29 07:14:58.250000,0.522672
31,2019-03-29 07:14:58.499999512,0.51627
31,2019-03-29 07:14:58.750000,0.51627
31,2019-03-29 07:14:59.000000244,0.517551
31,2019-03-29 07:14:59.250000,0.51627
31,2019-03-29 07:14:59.500000244,0.509868
31,2019-03-29 07:14:59.750000488,0.513709
31,2019-03-29 07:15:00,0.513709
31,2019-03-29 07:15:00.249999512,0.518831
31,2019-03-29 07:15:00.500000,0.531635
如何计算每 5 秒的平均值? 我已经使用了重新采样,但它没有用。这是我的代码:
col_list = ["timestamp", "pid","value"]
df = read_csv("data.csv", usecols=col_list)
df['timestamp'] = to_datetime(df['timestamp'], unit='ms')
timestamp_col=df['timestamp'].tolist()
pid_col=df['pid'].tolist()
value_col=df['value'].tolist()
df['timestamp'].resample('5S').mean()
timestamp_col=df['timestamp'].tolist()
感谢您的帮助
【问题讨论】:
【参考方案1】:将timestamp_col
定义为重采样前的索引:
>>> df.set_index('timestamp').groupby('pid') \
.resample('5S')['value'].mean().reset_index()
pid timestamp value
0 31 2019-03-29 07:14:55 0.512767
1 31 2019-03-29 07:15:00 0.521392
更新
也许你更喜欢这个版本:
>>> df.groupby(['pid', pd.Grouper(freq='5S', key='timestamp')], as_index=False) \
.agg('pid': 'first', 'timestamp': 'first', 'value': 'mean')
pid timestamp value
0 31 2019-03-29 07:14:56.999999756 0.512767
1 31 2019-03-29 07:15:00.000000000 0.521392
【讨论】:
这是您所期望的吗?它是否解决了您的问题? 是的,非常感谢,但是时间从 07:14:56 开始!为什么代码从 7:14:55 开始计算?此时的值是多少!? 重采样从 [07:14:55-07:15:00) 到 [07:15:00-07:15:05) 每 5 秒间隔一次。这个区间的标签是左的(默认)。它不关心区间的第一个标签。请检查我的更新答案。 对不起,我弄糊涂了!你能帮帮我吗?对于这个数据集,我应该每五秒精确计算一次值的平均值......我的意思是前 5 秒的值应该在 7:14:56 到 7:15:01 之间计算,以此类推每 5 秒。以上是关于如何根据python中的时间列每5秒计算一次平均值的主要内容,如果未能解决你的问题,请参考以下文章
如何根据随机分布数据计算 C++ 中的样本均值、标准差和方差,并与原始均值和 sigma 进行比较