python datatime 平均值_使用python的Timeseries平均值

如果数据以固定的频率采样(你的文章似乎已经指出了),那么pandas当然可以帮助你。在

一个可能的pandas解决方案是创建一个Panel对象,其中{}(就像字典中的键)属于{}类。Panel的major_axis和{}元素将成为numpy数组中的行和列。这听起来有点奇怪,所以我来举个简单的例子。在>>> import pandas as pd

>>> import numpy as np

>>> start_date = '4/14/2013' # Start today (default time is midnight)

# create the date_range we will use as panel items

>>> ind = pd.date_range(start=start_date, periods=20, freq='6H')

# Create data: thanks @mtadd

>>> values = {h:np.array([np.random.random_integers(1,10,5) for _ in 'x'*2])

for h in np.r_[0:120:6]}

# Create the Panel object directly from the dict of 2D np.arrays

>>> my_panel = pd.Panel(values)

# Set the Panel's items to be the date_range we made earlier

>>> my_panel.items = ind

>>> my_panel.ix[0] # Show first 2D array of data

0 1 2 3 4

0 4 3 10 6 6

1 4 10 7 10 6

>>> values[0] # Same as above, but from the dict

array([[ 4, 3, 10, 6, 6],

[ 4, 10, 7, 10, 6]])

现在我们已经设置好了,我们将使用Panel方法resample。我们将提供两个参数,第一个参数是我们希望数据位于的新频率,第二个参数是我们将指定为mean的关键字参数how。这是我回答的主要部分!

^{pr2}$

注意,我们给resample方法的'24H'参数只是OA发布的示例的扩展。请参阅this link以获取有关此参数可以采用何种类型的描述的详细信息。在

为了验证平均值的计算是否正确,我们将比较averagedPanel中的第一项与我们手工计算的平均值。在>>> averaged.ix[0]

0 1 2 3 4

0 6.5 5.25 7.25 6.25 6.50

1 5.0 6.75 5.25 6.50 5.25

>>> (values[0] + values[6] + values[12] + values[18]) / 4.

array([[ 6.5 , 5.25, 7.25, 6.25, 6.5 ],

[ 5. , 6.75, 5.25, 6.5 , 5.25]])

如果传入一个items对象,items的时间戳可以有更大的灵活性。例如,如果您在元旦下午1:37开始采样,并持续采样50个周期,则可以执行以下操作:>>> from datetime import datetime

>>> start = datetime(2013, 1, 1, 13, 37) # 1:37 on 1/1/2013

>>> ind = pd.date_range(start, periods=50, freq='6H')

那你就会像以前一样继续下去。也可以将开始和结束项传递给date_range,而不是希望它生成的期间数。如果我们从上述同一开始时间到2月28日凌晨4:50,每隔2个半小时收集一次数据,您可以执行以下操作:>>> end = datetime(2013, 2, 28, 4, 50) # 4:50 AM on 2/28/2013

>>> ind = pd.date_range(start, freq='2H 30MIN')

请注意,您不必传递与传入频率完全一致的开始和结束时间。有关如何使用^{}对象或pandas中的time series data的详细信息,请查看这些单词中给出的链接。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值