gpt4 book ai didi

python - 在python中使用时间序列数据计算均值、方差标准差

转载 作者:行者123 更新时间:2023-11-28 16:23:35 26 4
gpt4 key购买 nike

我从传感器收集的数据如下所示:

sec   nanosec value 

1001 1 0.2

1001 2 0.2

1001 3 0.2

1002 1 0.1

1002 2 0.2

1002 3 0.1

1003 1 0.2

1003 2 0.2

1003 3 0.1

1004 1 0.2

1004 2 0.2

1004 3 0.2

1004 4 0.1

我想每 2 秒计算一列的 average,std deviation 和一些其他统计数据,例如最大值、最小值。所以 (1001, 1002) 的平均值 = 0.167,(1003,1004) 的平均值 = 0.17

来自教程 http://earthpy.org/pandas-basics.html ,我认为我应该将其转换为时间序列并使用 pandas 的滚动 _means,但我是时间序列数据的新手,所以我不确定这是否是正确的方法。另外,我如何在此处指定转换频率,因为第一秒的观察结果较少。因此,对于实际数据,我在 1001 秒内有不到 100 个读数,然后在 1002 秒后有 100 个观测值。

我也可以按秒做一个简单的 groupby,但它会每秒而不是每 2 秒对读数进行分组,那么我如何结合 groupby 的 2 个连续组的观察结果,然后进行分析。

最佳答案

我想你可以先转换列 sec to_timedelta , set_indexresample 2 秒 (2S):

df['sec'] = pd.to_timedelta(df.sec, unit='s')
df.set_index('sec', inplace=True)
print (df)
nanosec value
sec
00:16:41 1 0.2
00:16:41 2 0.2
00:16:41 3 0.2
00:16:42 1 0.1
00:16:42 2 0.2
00:16:42 3 0.1
00:16:43 1 0.2
00:16:43 2 0.2
00:16:43 3 0.1
00:16:44 1 0.2
00:16:44 2 0.2
00:16:44 3 0.2
00:16:44 4 0.1
print (df.value.resample('2S').mean())
sec
00:16:41 0.166667
00:16:43 0.171429
00:16:45 NaN
Freq: 2S, Name: value, dtype: float64

print (df.value.resample('2S').std())
sec
00:16:41 0.051640
00:16:43 0.048795
00:16:45 NaN
Freq: 2S, Name: value, dtype: float64

print (df.value.resample('2S').max())
sec
00:16:41 0.2
00:16:43 0.2
00:16:45 NaN
Freq: 2S, Name: value, dtype: float64

也许您需要在 resample 中更改 base:

print (df.value.resample('2S', base=1).mean())
sec
00:16:42 0.166667
00:16:44 0.171429
00:16:46 NaN
Freq: 2S, Name: value, dtype: float64

print (df.value.resample('2S', base=1).std())
sec
00:16:42 0.051640
00:16:44 0.048795
00:16:46 NaN
Freq: 2S, Name: value, dtype: float64

print (df.value.resample('2S', base=1).max())
sec
00:16:42 0.2
00:16:44 0.2
00:16:46 NaN
Freq: 2S, Name: value, dtype: float64
print (df.value.resample('2S', base=2).mean())
sec
00:16:43 0.166667
00:16:45 0.171429
00:16:47 NaN
Freq: 2S, Name: value, dtype: float64

print (df.value.resample('2S', base=2).std())
sec
00:16:43 0.051640
00:16:45 0.048795
00:16:47 NaN
Freq: 2S, Name: value, dtype: float64

print (df.value.resample('2S', base=2).max())
sec
00:16:43 0.2
00:16:45 0.2
00:16:47 NaN
Freq: 2S, Name: value, dtype: float64

关于python - 在python中使用时间序列数据计算均值、方差标准差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38380945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com