Python| Pandas DataFrame.fillna() 替换数据框中的 Null 值
Python是一种用于进行数据分析的出色语言,主要是因为以数据为中心的Python包的奇妙生态系统。 Pandas就是其中之一,它使导入和分析数据变得更加容易。
有时 csv 文件有空值,稍后在数据框中显示为NaN 。就像 pandas dropna()
方法管理和删除数据框中的 Null 值一样, fillna()
管理并让用户用他们自己的一些值替换 NaN 值。
句法:
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
参数:
value : Static, dictionary, array, series or dataframe to fill instead of NaN.
method : Method is used if user doesn’t pass any value. Pandas has different methods like bfill
, backfill
or ffill
which fills the place with value in the Forward index or Previous/Back respectively.
axis: axis takes int or string value for rows/columns. Input can be 0 or 1 for Integer and ‘index’ or ‘columns’ for String
inplace: It is a boolean which makes the changes in data frame itself if True.
limit : This is an integer value which specifies maximum number of consequetive forward/backward NaN value fills.
downcast : It takes a dict which specifies what dtype to downcast to which one. Like Float64 to int64.
**kwargs : Any other Keyword arguments
有关代码中使用的 CSV 文件的链接,请单击此处。
示例 #1:用静态值替换 NaN 值。
更换前:
# importing pandas module
import pandas as pd
# making data frame from csv file
nba = pd.read_csv("nba.csv")
nba
输出:
更换后:
在以下示例中,College 列中的所有空值都已替换为“No College”字符串。首先,从 CSV 导入数据框,然后选择 College 列并对其使用fillna()
方法。
# importing pandas module
import pandas as pd
# making data frame from csv file
nba = pd.read_csv("nba.csv")
# replacing na values in college with No college
nba["College"].fillna("No College", inplace = True)
nba
输出:
示例 #2:使用方法参数
在以下示例中,method 设置为ffill ,因此同一列中的值将替换空值。在这种情况下,乔治亚州立大学替换了第 4 行和第 5 行的大学列中的空值。
同样,也可以使用 bfill、backfill 和 pad 方法。
# importing pandas module
import pandas as pd
# making data frame from csv file
nba = pd.read_csv("nba.csv")
# replacing na values in college with No college
nba["College"].fillna( method ='ffill', inplace = True)
nba
输出:
示例 #3:使用限制
在此示例中,在fillna()方法中设置了 1 的限制,以检查函数是否在成功替换 NaN 值后停止替换。
# importing pandas module
import pandas as pd
# making data frame from csv file
nba = pd.read_csv("nba.csv")
# replacing na values in college with No college
nba["College"].fillna( method ='ffill', limit = 1, inplace = True)
nba
输出:
如输出所示,第 4 行的大学列已替换,但第 5 列未替换,因为限制设置为 1。