函数形式:dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
参数:
axis:轴。0或'index',表示按行删除;1或'columns',表示按列删除。
how:筛选方式。‘any’,表示该行/列只要有一个以上的空值,就删除该行/列;‘all’,表示该行/列全部都为空值,就删除该行/列。
thresh:非空元素最低数量。int型,默认为None。如果该行/列中,非空元素数量小于这个值,就删除该行/列。
subset:子集。列表,元素为行或者列的索引。如果axis=0或者‘index’,subset中元素为列的索引;如果axis=1或者‘column’,subset中元素为行的索引。由subset限制的子区域,是判断是否删除该行/列的条件判断区域。
inplace:是否原地替换。布尔值,默认为False。如果为True,则在原DataFrame上进行操作,返回值为None。
示例:
1.读取数据
import pandas as pd
#利福尼亚的COVID数据集
df = pd.read_csv("http://cdn.py2fun.com/course/upload/ca-covid.csv")
#将数据集索引变为date,并添加“tatio”列
df.drop('state', axis=1, inplace=True)
df.set_index('date', inplace=True)
df['ratio']=df['deaths']/df['cases']
此时,ratio列中存在NA值
2.利用dropna命令,去掉异常值所在的行
df=df.dropna(axis=0,how='any')
补充:
删除NaN值
data.dropna(how = ‘all’) # 传入这个参数后将只丢弃全为缺失值的那些行
data.dropna(axis = 1) # 丢弃有缺失值的列
data.dropna(axis=1,how=“all”) # 丢弃全为缺失值的那些列
data.dropna(axis=0,subset = [“Age”, “Sex”]) # 丢弃‘Age’和‘Sex’这两列中有缺失值的行
默认是原始DataFrame不会改变。你始终可以在 dropna() 方法中将关键字 inplace 设为 True,就可以改变原始的data。
填充NaN值
使用data.isnull()方法返回一个大小和data一样的布尔型 DataFrame,并用 True 表示具有 NaN 值的元素,用 False 表示非 NaN 值的元素。
data.fillna(method = ‘ffill’, axis = 0) # 将通过前向填充 (ffill) 方法用同一列的前一个数作为填充
data.fillna(method = ‘ffill’, axis = 1) # 将通过前向填充 (ffill) 方法用同一行的前一个数作为填充
data.fillna(method = ‘backfill’, axis = 0) # 将通过前向填充 (ffill) 方法用同一列的后一个数作为填充
data.fillna(method = ‘backfill’, axis = 1) # 将通过前向填充 (ffill) 方法用同一行的后一个数作为填充
data.interpolate(method = ‘linear’, axis = 0) # 将通过 linear 插值使用同一列的中间值作为填充
data.interpolate(method = ‘linear’, axis = 1) # 将通过 linear 插值使用同一行的中间值作为填充
参考链接:
https://www.jb51.net/article/163872.htm
https://blog.csdn.net/qq_17753903/article/details/89817371