Python 熊猫:南洞的运行长度

Python 熊猫:南洞的运行长度,python,pandas,Python,Pandas,我有数百个timeseries对象,每个对象中有100000个条目。 某些百分比的数据项丢失(NaN)。 无论是单个、分散的NAN还是长序列的NAN,对我的应用程序都很重要 因此,我想要一个函数,用于为我提供NaN的每个连续序列的运行长度。 我能行 得到一系列的麻烦。我可以做移动中值或移动平均来了解数据孔的大小。 然而,如果有一种有效的方法来获得一系列的孔长度列表,那就太好了 也就是说,最好有一个myfunc,这样 a = pdSeries([1, 2, 3, np.nan, 4, np.nan

我有数百个timeseries对象,每个对象中有100000个条目。 某些百分比的数据项丢失(NaN)。 无论是单个、分散的NAN还是长序列的NAN,对我的应用程序都很重要

因此,我想要一个函数,用于为我提供NaN的每个连续序列的运行长度。 我能行

得到一系列的麻烦。我可以做移动中值或移动平均来了解数据孔的大小。 然而,如果有一种有效的方法来获得一系列的孔长度列表,那就太好了

也就是说,最好有一个
myfunc
,这样

a = pdSeries([1, 2, 3, np.nan, 4, np.nan, np.nan, np.nan, 5, np.nan, np.nan])
myfunc(a.isnull())
==> Series([1, 3, 2])
(因为分别有1个、3个和2个NAN)

由此,我可以绘制孔长度的柱状图,以及多个系列的isnull的
的柱状图(这可能是相互替代的),以及其他好东西

我还想了解其他量化数据漏洞“笨拙”的方法

import pandas as pd
import numpy as np
import itertools

a = pd.Series([1, 2, 3, np.nan, 4, np.nan, np.nan, np.nan, 5, np.nan, np.nan])
len_holes = [len(list(g)) for k, g in itertools.groupby(a, lambda x: np.isnan(x)) if k]
print len_holes
导致

[1, 3, 2]

系列([len(list(g)),用于groupby中的k,g(a.isnull()),如果k])
可能稍微有效一些。啊,是的,“groupby”。我猜groupby是用来对排序后的数据进行操作的,但如果不先进行排序,它会得到完全相同的RLE:)谢谢,JAB,我不知道groupby只能接受一个参数。这太好了,因为我的code@JAB+1表示优雅,也表示效率:我使用您的方法获得了5倍的加速(3.65毫秒vs 15.9毫秒)。
[1, 3, 2]