一、fillna的基础用法
fillna是pandas中一个常用的函数,它用于填充数据框或序列中的空值。我们先来看一个简单的案例:
import pandas as pd import numpy as np df = pd.DataFrame({'A': [1,2,np.nan,4,np.nan], 'B': [5,np.nan,7,np.nan,9]}) df.fillna(0)
上述案例中,我们创建了一个包含两列的数据框。其中,'A'列和'B'列都包含了一些空值。接着,我们使用fillna函数,将数据框中的所有空值都填充为0。运行结果如下:
A B 0 1.0 5.0 1 2.0 0.0 2 0.0 7.0 3 4.0 0.0 4 0.0 9.0
从运行结果中可以看出,fillna函数很容易地实现了空值的填充。但是,如果我们想要指定某一列进行填充,该如何操作呢?
二、指定列进行填充
在默认情况下,fillna函数会将整个数据框中的空值都填充为同一个值。但是,在有些情况下,我们需要按照不同的列,分别填充不同的值。这时,我们可以使用fillna函数的subset参数来指定需要填充的列。下面是一个示例:
import pandas as pd import numpy as np df = pd.DataFrame({'A': [1, 2, np.nan, 4, np.nan], 'B': [5, np.nan, 7, np.nan, 9], 'C': [np.nan, 3, 6, 8, 10]}) df.fillna({'B':0})
在上述案例中,我们创建了一个包含'A'、'B'、'C'三列的数据框。接着,我们使用fillna函数,并指定subset参数为'B',将数据框中的空值都在'B'列中填充为0。运行结果如下:
A B C 0 1.0 5.0 NaN 1 2.0 0.0 3.0 2 NaN 7.0 6.0 3 4.0 0.0 8.0 4 NaN 9.0 10.0
从运行结果中可以看出,fillna函数在指定列进行填充时,可以实现按列分别填充不同的值的效果。
三、指定不同的填充方式
在默认情况下,fillna函数会将空值填充为指定的固定值。但是,在一些情况下,我们需要根据不同的列,使用不同的填充方式。比如,我们可以使用前向填充、后向填充或者使用插值的方式进行填充。下面是详解:
1. 前向填充
使用fillna函数的ffill参数,可以实现前向填充。即用该列中前一个非空的值进行填充。下面是一个示例:
import pandas as pd import numpy as np df = pd.DataFrame({'A': [1, 2, np.nan, 4, np.nan], 'B': [5, np.nan, 7, np.nan, 9], 'C': [np.nan, 3, 6, 8, 10]}) df.fillna(method='ffill')
在上述案例中,我们创建了一个包含'A'、'B'、'C'三列的数据框。接着,我们使用fillna函数,并指定method参数为'ffill',将数据框中的空值都进行前向填充。运行结果如下:
A B C 0 1.0 5.0 NaN 1 2.0 5.0 3.0 2 2.0 7.0 6.0 3 4.0 7.0 8.0 4 4.0 9.0 10.0
从运行结果中可以看出,fillna函数成功地将数据框中的空值进行了前向填充。
2. 后向填充
使用fillna函数的bfill参数,可以实现后向填充。即用该列中后一个非空的值进行填充。下面是一个示例:
import pandas as pd import numpy as np df = pd.DataFrame({'A': [1, 2, np.nan, 4, np.nan], 'B': [5, np.nan, 7, np.nan, 9], 'C': [np.nan, 3, 6, 8, 10]}) df.fillna(method='bfill')
在上述案例中,我们创建了一个包含'A'、'B'、'C'三列的数据框。接着,我们使用fillna函数,并指定method参数为'bfill',将数据框中的空值都进行后向填充。运行结果如下:
A B C 0 1.0 5.0 3.0 1 2.0 7.0 3.0 2 4.0 7.0 6.0 3 4.0 9.0 8.0 4 NaN 9.0 10.0
从运行结果中可以看出,fillna函数成功地将数据框中的空值进行了后向填充。
3. 插值填充
使用fillna函数的method参数并指定为插值方法,可以实现插值填充。pandas提供了多种插值算法,如线性插值、二次插值、三次插值等。下面是一个示例:
import pandas as pd import numpy as np df = pd.DataFrame({'A': [1, np.nan, 3, np.nan, 5], 'B': [10, np.nan, np.nan, 40, 50]}) df.interpolate(method='quadratic')
在上述案例中,我们创建了一个包含'A'、'B'两列的数据框。接着,我们使用fillna函数,并指定method参数为'quadratic',将数据框中的空值都使用二次插值进行填充。运行结果如下:
A B 0 1.000000 10.000000 1 1.666667 20.277778 2 3.000000 29.444444 3 4.000000 40.000000 4 5.000000 50.000000
从运行结果中可以看出,fillna函数成功地将数据框中的空值进行了插值填充。
四、结语
pandas中的fillna函数是一个非常实用的函数。通过对该函数的学习,我们可以轻松地实现数据框中的空值填充操作。在实际应用中,我们可以根据需求,选择不同的填充方式和填充值,以满足不同的数据分析需求。