Pandas DataFrame DataFrame.fillna() 函式
Suraj Joshi
2023年1月30日
Pandas
Pandas DataFrame
-
pandas.DataFrame.fillna()語法 -
示例程式碼:用
DataFrame.fillna()方法填充所有DataFrame中的NaN值 -
示例程式碼:
DataFrame.fillna()方法,引數為method -
示例程式碼:
DataFrame.fillna()方法的limit引數
pandas.DataFrame.fillna() 函式將 DataFrame 中的 NaN 值替換為某個值。
pandas.DataFrame.fillna() 語法
DataFrame.fillna(
value=None, method=None, axis=None, inplace=False, limit=None, downcast=None
)
引數
value |
scalar、dict、Series 或 DataFrame。用於替換 NaN 的值 |
method |
backfill、bfill、pad、ffill 或 None。用於填充 NaN 值的方法 |
axis |
沿行(axis=0)或列(axis=1)填補缺失的數值 |
inplace |
布林型。如果為 True,就地修改呼叫者 DataFrame |
limit |
整數。如果指定了 method,則是要向前/向後填充的連續 NaN 值的最大數量。如果沒有指定 method,則是要填充的軸的最大 NaN 值數 |
downcast |
字典。指定轉換的資料型別 |
返回值
如果 inplace 為 True,則用給定的 value 替換所有 NaN 值的 DataFrame;否則為 None。
示例程式碼:用 DataFrame.fillna() 方法填充所有 DataFrame 中的 NaN 值
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
filled_df = df.fillna(5)
print("Filled DataFrame:")
print(filled_df)
輸出:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.0 4.0
1 2.0 5.0
2 3.0 8.0
3 5.0 5.0
4 3.0 3.0
它用 pandas.DataFrame.fillna() 方法中作為引數提供的 5 填充 DataFrame 中的所有 NaN 值。
DataFrame.fillna() 中的平均數
我們可以用一列的平均值來代替該列的 NaN 值。
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
df.fillna(df.mean(),inplace=True)
print("Filled DataFrame:")
print(df)
輸出:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.00 4.0
1 2.00 5.0
2 3.00 8.0
3 2.25 5.0
4 3.00 3.0
它將 X 列的 NaN 值用 X 列的平均值填充,Y 列的 NaN 值用 Y 列的平均值填充。
由於 inplace=True,呼叫 fillna() 函式後,原 DataFrame 被修改。
DataFrame.fillna() 用 0 來填充
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
df.fillna(0,inplace=True)
print("Filled DataFrame:")
print(df)
輸出:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.0 4.0
1 2.0 0.0
2 3.0 8.0
3 0.0 0.0
4 3.0 3.0
它用 0 填充所有 NaN。
示例程式碼:DataFrame.fillna() 方法,引數為 method
我們也可以使用不同的 “方法 “引數在 DataFrame 中填充 NaN 值。
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
filled_df = df.fillna(method="backfill")
print("Filled DataFrame:")
print(filled_df)
輸出:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.0 4.0
1 2.0 8.0
2 3.0 8.0
3 3.0 3.0
4 3.0 3.0
設定 method="backfill" 將所有的 DataFrame 中的 NaN 值填充到同一列的 NaN 值之後。
我們也可以使用 bfill、pad 和 ffill 方法來填充 DataFrame 中的 NaN 值。
method 方法 |
說明 |
|---|---|
backfill/bfill |
用同一列中的 NaN 值之後的值填充 DataFrame 中所有的 NaN 值 |
ffill/pad |
用同一列中的 NaN 值之前的值填充 DataFrame 中所有的 NaN 值 |
示例程式碼:DataFrame.fillna() 方法的 limit 引數
DataFrame.fillna() 方法中的 limit 引數限制了該方法所要填充的連續 NaN 值的最大數量。
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2,np.nan, 3,3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
filled_df = df.fillna(3,limit=1)
print("Filled DataFrame:")
print(filled_df)
輸出:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 NaN 8.0
3 3.0 NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.0 4.0
1 2.0 3.0
2 3.0 8.0
3 3.0 NaN
4 3.0 3.0
在這裡,一旦一列中的 NaN 值被填滿,同一列中的其他 NaN 值將保持原樣。
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn