Pandas使用这些函数处理缺失值:
- isnull和notnull:检测是否是空值,可用于df和series
- dropna:丢弃、删除缺失值
- axis : 删除行还是列,{0 or ‘index’, 1 or ‘columns’}, default 0
- how : 如果等于any则任何值为空都删除,如果等于all则所有值都为空才删除
- inplace : 如果为True则修改当前df,否则返回新的df
- fillna:填充空值
- value:用于填充的值,可以是单个值,或者字典(key是列名,value是值)
- method : 等于ffill使用前一个不为空的值填充forword fill;等于bfill使用后一个不为空的值填充backword fill
- axis : 按行还是列填充,{0 or ‘index’, 1 or ‘columns’}
- inplace : 如果为True则修改当前df,否则返回新的df
import pandas as pd
df = pd.read_excel("../student_excel.xlsx",engine="openpyxl"
,skiprows=2)
print(df)

1、检测是否是空值
a = df.isnull()
print(a)

2、判断某个字段是否是空值
b = df["分数"].isnull()
print(b)

3、判断某个字段是否不是空值
c = df["分数"].notnull()
print(c)

4、筛选分数不为空的所有行(上面几个方法的实际应用)
d = df.loc[df["分数"].notnull(),:]
print(d)

5.删除全是空值的列和全是空值的行
df.dropna(axis = "columns",how="all",inplace= True)
#当姓名这一列为空时,删除对应的行(无输出结果图片)
df.dropna(subset = ["姓名"],axis = 0,how="any",inplace= True)
print(df)

6.在删除全是空值的列和全是空值的行后,把分数为NaN的列,替换为0值
#第一种表达方式
e = df.fillna({"分数":0})
print(e)
#第二种表达方式
df.loc[:,"分数"] = df["分数"].fillna(0)
print(df)

7、将姓名的缺失值填充,向前填充
#用的第六步第一种表达方式替换分数为NaN的值为0,所以接下来用e这个参数
e.loc[:,"姓名"] = e["姓名"].fillna(method="ffill")
print(e)

8.将处理好的数据保存为新excel
e.to_excel("/Users/allin947/PycharmProjects/untitled/this/ant-learn-pandas/mz_test/student_excel_new.xlsx",index = False)
