首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Pandas中的大数据帧上执行rolling_median而不会遇到skiplist_insert失败的错误?

如何在Pandas中的大数据帧上执行rolling_median而不会遇到skiplist_insert失败的错误?
EN

Stack Overflow用户
提问于 2016-03-10 13:51:22
回答 2查看 1.4K关注 0票数 1

我有一个巨大的数据框架,大约有1041507行

我想在我的数据框架中的某些类别下,为某些值计算一个rolling_median。为此,我使用了一个通过apply进行折叠的groupBy:

代码语言:javascript
复制
df['rolling_median']=df['value'].groupby(['Category','Subcategory']).apply(pd.rolling_median,7,min_periods=7)

然而,这给了我一个MemoryError: skiplist_insert失败。如果需要的话,我会附上完整的回溯,但我看到了另一篇类似的文章,其中指出这是熊猫的一个问题,如https://github.com/pydata/pandas/issues/11697所见。非常大的尺寸>~ 35000

在此之后,我尝试进行一些操作,通过分别迭代每个组来获得滚动中值。

代码语言:javascript
复制
for index,group in df.groupby(['Category','Subcategory']):
    print pd.rolling_median(group['value'],7,min_period=7)

每组只有20-25行长。然而,这个函数会失败,并在几次迭代后显示相同的MemoryError。我多次运行代码,每次它都显示不同项的内存错误。

我为任何人创建了一些虚拟值以供测试,如下所示:

代码语言:javascript
复制
index=[]
[index.append(x) for y in range(25) for x in np.arange(34000)]
sample=pd.DataFrame(np.arange(34000*25),index=index)

for index,group in sample.groupby(level=0):
    try:
        pd.rolling_median(group[0],7,7)
    except MemoryError:
        print a
        print pd.rolling_median(group[0],7,7)

如果我在遇到rolling_median后再次运行memoryError (正如您在上面的代码中看到的那样),它将正常运行,没有另一个例外-

我不知道如何计算我的rolling_median,如果它一直抛出内存错误。有人能告诉我一种更好的方法来计算rolling_median,或者在这里帮助我理解这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2016-03-10 14:24:53

这群人看上去不对,应该改变

代码语言:javascript
复制
df['rolling_median']=df['value'].groupby(['Category','Subcategory']).apply(pd.rolling_median,7,min_periods=7)

代码语言:javascript
复制
df['rolling_median']=df.groupby(['Category','Subcategory'])['value'].apply(pd.rolling_median,7,min_periods=7)

否则,groupby将无法工作,因为它是一个列名为"value“的系列,因此不能将‘分组’、‘子类别’作为不存在的列。

而且,groupby将小于dataframe的长度,并且创建df‘滚动_中位数’将导致长度不匹配。

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2016-04-04 12:12:30

该bug已在Pandas 0.18.0中修复,现在rolling_mean()和rolling_median()方法已经贬值。

这是一个错误:https://github.com/pydata/pandas/issues/11697

可以在这里查看:http://pandas.pydata.org/pandas-docs/stable/computation.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35918402

复制
相关文章

相似问题

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