07.Pandas处理缺失值
Pandas使用这些函数处理缺失值:
-
isnull和notnull:检测是否是空值,可用于df和series
-
dropna:丢弃,删除缺失值
[axis:](删除行还是列,{0 or ‘index’,1or ‘columns’},default 0)删除行还是列,{0 or ‘index’,1or ‘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’,1or ‘columns’}
inplace:如果为True则修改当前df,否则返回新的df
演示
import pandas as pd #读取excel的时候,忽略前几个空行 studf=pd.read_excel("-",skiprows=2)#忽略前前两行 #studf出现空值为NaN #检测空值 studf.isnull() #返回布尔值,空值为True studf["索引列名"].isnull() studf.notnull()#功能类似,但是返回布尔值和isnull相反 #筛选该索引列没有空值的所有行 studf.loc[studf["索引列名"].notnull(),:] #删掉全是空值的行和列 studf.dropna(axis="columns",how='all',inplace=True)#columns替换成index为行 #将空值列填充0 studf.fillna({"索引":0}) #上述等同于 studf.loc[:,'索引']=studf['索引'].fillna(0) #若要填充前面有效值,fillna(method="ffill") #ffill: forward fill #保存 studf.to_excel(",",index=False)