python填充缺失值

Python013

python填充缺失值,第1张

对于大多数情况而言,fillna方法是最主要的函数。通过一个常数调用fillna就会将缺失值替换为那个常数值。

fillna(value)

参数:value

说明:用于填充缺失值的标量值或字典对象

#通过常数调用fillna

书写方式:df.fillna(0) #用0替换缺失值

#通过字典调用fillna

书写方式:df.fillna({1:0.5,3:-1})

fillna(value,inplace=True)

参数:inplace

说明:修改调用者对象而不产生副本

#总是返回被填充对象的引用

书写方式:df.fillna(0,inplace=True)

fillna(method=ffill)

参数:method

说明:插值方式。如果函数调用时未指定其他参数的话,默认为“ffill”

对reindex有效的那些插值方法也可用于fillna:

In [23]: from numpy import nan as NA

In [21]: df=DataFrame(np.random.randn(6,3))

In [24]: df.ix[2:,1]=NAdf.ix[4:,2]=NA

In [25]: df

Out[25]:

0 1 2

0 -0.863925 1.005127 -0.529901

1 0.701671 -0.501728 -0.617387

2 -0.951060 NaN -0.263626

3 0.810230 NaN -0.277401

4 -0.403899 NaN NaN

5 -0.081091 NaN NaN

In [26]: df.fillna(method='ffill')

Out[26]:

0 1 2

0 -0.863925 1.005127 -0.529901

1 0.701671 -0.501728 -0.617387

2 -0.951060 -0.501728 -0.263626

3 0.810230 -0.501728 -0.277401

4 -0.403899 -0.501728 -0.277401

5 -0.081091 -0.501728 -0.277401

fillna(limit=2)

参数:limit

说明:(对于前向和后向填充)可以连续填充的最大数量

In [27]: df.fillna(method='ffill',limit=2)

Out[27]:

0 1 2

0 -0.863925 1.005127 -0.529901

1 0.701671 -0.501728 -0.617387

2 -0.951060 -0.501728 -0.263626

3 0.810230 -0.501728 -0.277401

4 -0.403899 NaN -0.277401

5 -0.081091 NaN -0.277401

fillna(data.mean())

只要稍微动动脑子,就可以利用fillna实现许多别的功能。比如说,可以传入Series的平均值或中位数:

In [28]: data=Series([1,NA,3.5,NA,7])

In [29]: data.fillna(data.mean())

Python-for-data-重新采样和频率转换

重新采样指的是将时间序列从一个频率转换到另一个频率的过程。

但是也并不是所有的采样方式都是属于上面的两种

pandas中使用resample方法来实现频率转换,下面是resample方法的参数详解:

将数据聚合到一个规则的低频上,例如将时间转换为每个月,"M"或者"BM",将数据分成一个月的时间间隔。

每个间隔是半闭合的,一个数据只能属于一个时间间隔。时间间隔的并集必须是整个时间帧

默认情况下,左箱体边界是包含的。00:00的值是00:00到00:05间隔内的值

产生的时间序列按照每个箱体左边的时间戳被标记。

传递<span class="mark">label="right"</span>可以使用右箱体边界标记时间序列

向loffset参数传递字符串或者日期偏置

在金融数据中,为每个数据桶计算4个值是常见的问题:

通过<span class="girk">ohlc聚合函数</span>能够得到四种聚合值列的DF数据

低频转到高频的时候会形成缺失值

ffill() :使用前面的值填充, limit 限制填充的次数