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 限制填充的次数