一、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函數是一個非常實用的函數。通過對該函數的學習,我們可以輕鬆地實現數據框中的空值填充操作。在實際應用中,我們可以根據需求,選擇不同的填充方式和填充值,以滿足不同的數據分析需求。
原創文章,作者:HPEFH,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/372517.html