首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何实现我自己的describe()函数,以便在resample()中使用

如何实现我自己的describe()函数,以便在resample()中使用
EN

Stack Overflow用户
提问于 2013-02-13 01:04:48
回答 1查看 1.1K关注 0票数 5

我正在处理表示向量(幅度和方向)的时序数据。我想要resample我的数据,并使用describe函数作为how参数。

但是,describe方法使用标准平均值,我想使用一个特殊的函数来平均方向。因此,我在pandas.Series.describe()实现的基础上实现了我自己的describe方法

代码语言:javascript
复制
def directionAverage(x):
    result = np.arctan2(np.mean(np.sin(x)), np.mean(np.cos(x)))
    if result < 0:
        result += 2*np.pi
    return result

def directionDescribe(x):
    data = [directionAverage(x), x.std(), x.min(), x.quantile(0.25), x.median(), x.quantile(0.75), x.max()]
    names = ['mean', 'std', 'min', '25%', '50%', '75%', 'max']
    return Series(data, index=names)

问题是,当我这样做的时候:

代码语言:javascript
复制
df['direction'].resample('10Min', how=directionDescribe)

我得到了这个异常(最后几行显示了):

代码语言:javascript
复制
  File "C:\Python26\lib\site-packages\pandas\core\generic.py", line 234, in resample
    return sampler.resample(self)
  File "C:\Python26\lib\site-packages\pandas\tseries\resample.py", line 83, in resample
    rs = self._resample_timestamps(obj)
  File "C:\Python26\lib\site-packages\pandas\tseries\resample.py", line 217, in _resample_timestamps
    result = grouped.aggregate(self._agg_method)
  File "C:\Python26\lib\site-packages\pandas\core\groupby.py", line 1626, in aggregate
    result = self._aggregate_generic(arg, *args, **kwargs)
  File "C:\Python26\lib\site-packages\pandas\core\groupby.py", line 1681, in _aggregate_generic
    return self._aggregate_item_by_item(func, *args, **kwargs)
  File "C:\Python26\lib\site-packages\pandas\core\groupby.py", line 1706, in _aggregate_item_by_item
    result[item] = colg.aggregate(func, *args, **kwargs)
  File "C:\Python26\lib\site-packages\pandas\core\groupby.py", line 1357, in aggregate
    result = self._aggregate_named(func_or_funcs, *args, **kwargs)
  File "C:\Python26\lib\site-packages\pandas\core\groupby.py", line 1441, in _aggregate_named
    raise Exception('Must produce aggregated value')

问题是:我如何实现我自己的describe函数,以便它能与resample一起工作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-15 05:33:01

在组以时间为单位的情况下,可以使用groupby,而不是重采样。您可以对此组应用您选择的函数,例如directionAverage函数。

请注意,我正在导入TimeGrouper函数,以允许按时间间隔进行分组。

代码语言:javascript
复制
import pandas as pd
import numpy as np
from pandas.tseries.resample import TimeGrouper

#group  your data
new_data = df['direction'].groupby(TimeGrouper('10min'))
#apply your function to the grouped data
new_data.apply(directionDescribe)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14837844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档