【发布时间】:2015-05-14 11:52:21
【问题描述】:
我正在阅读一堆 CSV 文件(水位随时间变化的测量数据),以对它们进行各种分析和可视化。
由于各种我无法控制的原因,这些时间序列经常有缺失数据,所以我做了两件事:
我把它们加起来
Rlength = len(RainD) # Counts everything, including NaN
Rcount = RainD.count() # Counts only valid numbers
NaN_Number = Rlength - Rcount
如果我的缺失数据多于某个阈值,则丢弃数据集:
Percent_Data = Rlength/100
Five_Percent = Percent_Data*5
if NaN_Number > Five_Percent:
...
如果 NaN 的数量足够小,我想填补空白
RainD.level = RainD.level.fillna(method='pad', limit=2)
现在问题是:这是月度数据,所以如果我有超过两个连续的 NaN,我也想丢弃这些数据,因为这意味着我“猜测”了整个赛季,甚至更多。
documentation for fillna 并没有真正提到当连续的 NaN 多于我指定的 limit=2 时会发生什么,但是当我查看 RainD.describe() 之前和之后的 ...fillna... 并将其与基本 CSV 进行比较时,它是清楚它会填充前两个 NaN,然后将其余部分保持原样,而不是出错。
所以,长话短说:
如何使用 Pandas 识别多个连续的 NaN,而不需要一些复杂且耗时的非 Pandas 循环?
【问题讨论】: