Pandas重新采样选项

时间:2016-04-07 22:06:56

标签: python pandas

我查看了pandas resample module的文档。虽然它确实描述了函数中可用的参数,但它并没有告诉我这些参数的可能选项。对于前者how参数的值为'sum'(如示例所示),但其他值可能是什么,这些值有何作用?同样适用于fill参数。任何人都可以告诉我/提供这些参数的可用值的链接??

2 个答案:

答案 0 :(得分:3)

在时间序列功能上,一个好的起点可能是pandas tutorial。但是,它没有。彻底涵盖这个话题。

您也可以查看那里的Cookbook - 只是为了找出大多数链接指向... Stack Overflow。

我找到了Python for Data Analysis中方法参数的表格。

至于您提出的两个特定参数:

  1. how - 可以是表示公共函数的字符串(如'sum''mean'等),自定义函数接受数组,以及 - 可能不是在那里提到 - DataFrame中特定列的函数词典(例如how = {col1: fun1, col2: fun2}

  2. fill_method - 可以是ffill(又名pad)或bfill(又名backfill) - 向前或向后填充值。

答案 1 :(得分:2)

我认为有关新重新采样功能的最佳文档部分可能会在what's new part for pandas 0.18.0中找到:

新API:

现在,您可以将.resample(..)写为两阶段操作,例如.groupby(...),这会产生重新采样器。

In [82]: r = df.resample('2s')

In [83]: r
Out[83]: DatetimeIndexResampler [freq=<2 * Seconds>, axis=0, closed=left, label=left, convention=start, base=0]

下采样

然后,您可以使用此对象执行操作。这些是下采样操作(从较高频率到较低频率)。

In [84]: r.mean()
Out[84]: 
                            A         B         C         D
2010-01-01 09:00:00  0.485748  0.447351  0.357096  0.793615
2010-01-01 09:00:02  0.820801  0.794317  0.364034  0.531096
2010-01-01 09:00:04  0.433985  0.314582  0.424104  0.625733
2010-01-01 09:00:06  0.624988  0.609738  0.633165  0.612452
2010-01-01 09:00:08  0.510470  0.534317  0.573201  0.806949
In [85]: r.sum()
Out[85]: 
                            A         B         C         D
2010-01-01 09:00:00  0.971495  0.894701  0.714192  1.587231
2010-01-01 09:00:02  1.641602  1.588635  0.728068  1.062191
2010-01-01 09:00:04  0.867969  0.629165  0.848208  1.251465
2010-01-01 09:00:06  1.249976  1.219477  1.266330  1.224904
2010-01-01 09:00:08  1.020940  1.068634  1.146402  1.613897

此外,resample现在支持getitem操作以在特定列上执行重新采样。

In [86]: r[['A','C']].mean()
Out[86]: 
                            A         C
2010-01-01 09:00:00  0.485748  0.357096
2010-01-01 09:00:02  0.820801  0.364034
2010-01-01 09:00:04  0.433985  0.424104
2010-01-01 09:00:06  0.624988  0.633165
2010-01-01 09:00:08  0.510470  0.573201
and .aggregate type operations.

In [87]: r.agg({'A' : 'mean', 'B' : 'sum'})
Out[87]: 
                            A         B
2010-01-01 09:00:00  0.485748  0.894701
2010-01-01 09:00:02  0.820801  1.588635
2010-01-01 09:00:04  0.433985  0.629165
2010-01-01 09:00:06  0.624988  1.219477
2010-01-01 09:00:08  0.510470  1.068634
These accessors can of course, be combined

In [88]: r[['A','B']].agg(['mean','sum'])
Out[88]: 
                            A                   B          
                         mean       sum      mean       sum
2010-01-01 09:00:00  0.485748  0.971495  0.447351  0.894701
2010-01-01 09:00:02  0.820801  1.641602  0.794317  1.588635
2010-01-01 09:00:04  0.433985  0.867969  0.314582  0.629165
2010-01-01 09:00:06  0.624988  1.249976  0.609738  1.219477
2010-01-01 09:00:08  0.510470  1.020940  0.534317  1.068634

<强>结论:

您可以查看记录良好的.groupby()示例,以了解重新采样后可以执行的操作(使用重新采样的DF /系列)