python指定间隔内数据_在Python中以不规则的间隔规范化数据集

我在Python中有一些数据,这些数据最终被绘制在图形上(Highcharts),问题是x轴(时间)上数据点之间的间隔不规则.虽然准确,但从视觉上看,图形似乎有些不稳定.

数据格式如下:

data = {"points": [[1335360000, 1335361920, 93374739787], [1335361920, 1335447840, 11738851087.0]......]}

即:时间戳从,时间戳到,值

我需要做的是修改数据,以便将其归一化为最低频率/最长时间间隔,以便在绘制在图表上时看起来一致.

关于最有效的方法有什么想法吗?

更新资料

在这种情况下,我真的不能使用任何第三方的库.

图形通常是这样绘制的,在数据​​点靠在一起的地方显得更加锯齿:

解决方法:

如果您还没有尝试过,您可能会发现pandas库对于将不规则的时间序列转换为常规的时间序列非常有用(一般来说,还有其他类型的data-manipulation-jui-jitsu).使用(一旦学习它们,干净,可重用的习惯用语)进行编程是高效的,并且在运行时(经过cython优化)快速.

为了让您有品味,这里有一些基于您描述的数据格式的熊猫示例.

>将数据读入pandas.DataFrame. (DataFrame的作用就像列的字典,其中的值是numpy数组.)

In [33]: df = pandas.DataFrame(data['points'], columns=['from', 'to', 'value'])

In [34]: df

Out[34]:

from to value

0 1335360000 1335360004 3

1 1335360004 1335360008 32

2 1335360008 1335360009 4

3 1335360009 1335360011 36

4 1335360011 1335360014 38

>转换现有列并添加派生列

In [46]: utcfromtimestamp = datetime.datetime.utcfromtimestamp

In [47]: df['from'] = df['from'].map(utcfromtimestamp)

In [48]: df['to'] = df['to'].map(utcfromtimestamp)

In [49]: df['delta'] = [x.total_seconds() for x in (df['to'] - df['from'])]

In [50]: df['avg/s'] = df['value'] / df['delta']

In [51]: df

Out[51]:

from to value delta avg/s

0 2012-04-25 13:20:00 2012-04-25 13:20:04 3 4 0.750000

1 2012-04-25 13:20:04 2012-04-25 13:20:08 32 4 8.000000

2 2012-04-25 13:20:08 2012-04-25 13:20:09 4 1 4.000000

3 2012-04-25 13:20:09 2012-04-25 13:20:11 36 2 18.000000

4 2012-04-25 13:20:11 2012-04-25 13:20:14 38 3 12.666667

>分组并选择要绘制的信息

In [78]: df.groupby('from')['avg/s'].mean()

Out[78]:

from

2012-04-25 13:20:00 0.750000

2012-04-25 13:20:04 8.000000

2012-04-25 13:20:08 4.000000

2012-04-25 13:20:09 18.000000

2012-04-25 13:20:11 12.666667

Name: avg/s

有关上采样或下采样时间序列的信息,请参见this link.仍在开发中的下一个版本(0.8)提供了更干净的方法来重新采样时间序列.

标签:graph,python

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值