fillna函數是pandas庫提供的一個非常有用的函數,它的主要功能是填充缺失值。在實際數據處理中,我們經常會遇到一些數據缺失的情況,這就需要我們使用fillna函數來進行處理。
一、填充指定值
fillna函數最簡單的用法就是將缺失值填充為指定值,通過將一個標量傳遞給fillna函數,可以將所有的缺失值替換為這個標量。下面是一個簡單的示例:
import pandas as pd import numpy as np data = pd.Series([1, np.nan, 2, None, 3], index=list('abcde')) print(data.fillna(0))
以上代碼運行結果為:
a 1.0 b 0.0 c 2.0 d 0.0 e 3.0 dtype: float64
在上面的代碼中,我們創建了一個包含一些缺失值的Series對象,並將缺失值全部替換為0。
二、前向填充和後向填充
除了將缺失值替換為指定值,fillna函數還可以進行前向填充和後向填充。前向填充使用缺失值前面的值進行填充,而後向填充使用後面的值進行填充。
以下是一個前向填充的示例:
import pandas as pd import numpy as np data = pd.Series([1, np.nan, 2, None, 3], index=list('abcde')) print(data.fillna(method='ffill'))
以上代碼運行結果為:
a 1.0 b 1.0 c 2.0 d 2.0 e 3.0 dtype: float64
在上面的代碼中,我們使用了fillna函數的一個參數method。通過將method的值設置為’ffill’,我們將缺失值前面的值填充到了缺失值上。
下面是一個後向填充的示例:
import pandas as pd import numpy as np data = pd.Series([1, np.nan, 2, None, 3], index=list('abcde')) print(data.fillna(method='bfill'))
以上代碼運行結果為:
a 1.0 b 2.0 c 2.0 d 3.0 e 3.0 dtype: float64
在上面的代碼中,我們使用了fillna函數的一個參數method。通過將method的值設置為’bfill’,我們將缺失值後面的值填充到了缺失值上。
三、使用插值法填充
除了前向填充和後向填充,fillna函數還可以使用插值法填充缺失值。插值法是一種使用函數擬合缺失值的方法。當缺失值數量較少時,使用插值法可以得到較為準確的替代值。
以下是一個使用插值法填充的示例:
import pandas as pd import numpy as np data = pd.Series([1, np.nan, 2, None, 3], index=list('abcde')) print(data.interpolate())
以上代碼運行結果為:
a 1.000000 b 1.333333 c 2.000000 d 2.500000 e 3.000000 dtype: float64
在上面的代碼中,我們使用了fillna函數的一個參數method。通過將method的值設置為’interpolate’,我們使用了插值法填充了缺失值。在上面的示例中,我們使用的是線性插值。
四、限制填充數量
在實際的數據處理中,我們有時需要限制填充的數量。fillna函數的limit參數可以幫助我們完成這項任務。
以下是一個限制填充數量的示例:
import pandas as pd import numpy as np data = pd.Series([1, np.nan, np.nan, 2, None], index=list('abcde')) print(data.fillna(method='ffill', limit=1))
以上代碼運行結果為:
a 1.0 b 1.0 c NaN d 2.0 e 2.0 dtype: float64
在上面的代碼中,我們使用了fillna函數的一個參數limit。通過將limit的值設置為1,我們限制了填充數量,只將第一個缺失值填充了。
五、總結
fillna函數是pandas庫中非常有用的一個函數,它可以幫助我們處理數據中的缺失值。通過掌握fillna函數的各種用法,我們可以快速處理原始數據中的缺失值,得到更加完整的數據集,從而更好地進行分析和建模。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/199932.html