Pandas重新采样选项

3
我查阅了pandas resample模块的文档,虽然它描述了函数中可用的参数,但它没有告诉我这些参数的可能选项。例如,how参数接受'sum'值(如示例所示),但还有哪些可能的值,以及这些值的作用是什么?fill参数也是如此。有人能告诉我或提供一个链接来了解这些参数的可用值吗?
2个回答

3

一个很好的开始可能是 pandas教程 中的时间序列功能。然而,它并没有全面地涵盖这个主题。

你也可以看看 Cookbook - 只是为了发现大多数链接指向... Stack Overflow。

我在Python数据分析中找到了一张方法参数表。


关于你提到的两个特定参数:

  1. how - 可以是表示常见函数(如 'sum', 'mean' 等)的字符串,也可以是取数组的自定义函数,还有可能没有在那里提到的针对 DataFrame 特定列的函数字典(例如 how = {col1: fun1, col2: fun2})。

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


1

我认为关于新重新采样函数的最佳文档部分可以在pandas 0.18.0的新功能的“新API”中找到:

新API:

现在,您可以像.groupby(...)一样将.resample(..)编写为2个阶段的操作,这会产生一个Resampler。

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

此外,现在的重新采样支持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 / Series)可以做些什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接