如何根据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秒计算一次平均值的主要内容,如果未能解决你的问题,请参考以下文章

如何根据R中的百分比计算平均值和标准差

根据列表中的两个元素计算列表列表的平均值?

如何根据随机分布数据计算 C++ 中的样本均值、标准差和方差,并与原始均值和 sigma 进行比较

python操作excel表格根据sheet,并且把这列每项内容转换成大写首字母

numpy/python 中的加权平均值

如何根据条件删除结果以计算平均和特定电影