12

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

因此,我想要一个函数来给我每个连续的 NaN 序列的游程长度。我可以

myseries.isnull()

得到一系列布尔值。我可以做移动中位数或移动平均来了解数据洞的大小。但是,如果有一种有效的方法可以获取系列的孔长度列表,那就太好了。

即,最好有一个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)

从中,我可以制作孔长度的直方图,以及多个系列的andorisnull 的直方图(可能是彼此的替代品),以及其他好东西。

我还想了解其他方法来量化数据洞的“块状”。

4

1 回答 1

12
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]
于 2013-05-31T12:58:38.300 回答