您的位置: 网站首页> Pandas教程> 当前文章
pandas缺失值处理检测isnull、删除dropna、填充fillna
老董-我爱我家房产SEO2020-11-20164围观,119赞
有些excel文件不标准,比如空行、有些单元格没有值等,这类情况我们称为缺失值。对于缺失值,我们往往会做三步走的处理,1检测缺失值,2丢弃一些缺失值,3填充一些缺失值
1、isnull和notnull
检测是否为空,适用于
# -*- coding: utf-8 -*- import pandas as pd df = pd.read_excel('test.xlsx') print(df) print('------------------') print(df.loc[df['分数'].notnull()])
Unnamed: 0 姓名 科目 分数 性别 0 NaN 小王 数学 87.0 NaN 1 NaN 小王 语文 NaN NaN 2 NaN NaN 英语 89.0 NaN 3 NaN 小张 数学 95.0 NaN 4 NaN NaN NaN NaN NaN 5 NaN 小张 语文 96.0 NaN 6 NaN 小张 英语 97.0 NaN 7 NaN NaN 数学 50.0 NaN 8 NaN 小龙 语文 51.0 NaN 9 NaN 小龙 英语 52.0 NaN ------------------ Unnamed: 0 姓名 科目 分数 性别 0 NaN 小王 数学 87.0 NaN 2 NaN NaN 英语 89.0 NaN 3 NaN 小张 数学 95.0 NaN 5 NaN 小张 语文 96.0 NaN 6 NaN 小张 英语 97.0 NaN 7 NaN NaN 数学 50.0 NaN 8 NaN 小龙 语文 51.0 NaN 9 NaN 小龙 英语 52.0 NaN
2、dropna 删除缺失值,主要了解3个参数
axis:0 or ‘index’, 1 or ‘columns’
how:any有一个缺失值就drop that row or column,‘all’ 所有值是缺失值才drop that row or column.
inpalce:bool, default False
# -*- coding: utf-8 -*- import pandas as pd df = pd.read_excel('test.xlsx') print(df) print('------------------') # 删除空列 df.dropna(axis=1,how='all',inplace=True) print(df) print('------------------') # 删除空行 df.dropna(axis=0,how='all',inplace=True) print(df)
Unnamed: 0 姓名 科目 分数 性别 0 NaN 小王 数学 87.0 NaN 1 NaN 小王 语文 NaN NaN 2 NaN NaN 英语 89.0 NaN 3 NaN 小张 数学 95.0 NaN 4 NaN NaN NaN NaN NaN 5 NaN 小张 语文 96.0 NaN 6 NaN 小张 英语 97.0 NaN 7 NaN NaN 数学 50.0 NaN 8 NaN 小龙 语文 51.0 NaN 9 NaN 小龙 英语 52.0 NaN ------------------ 姓名 科目 分数 0 小王 数学 87.0 1 小王 语文 NaN 2 NaN 英语 89.0 3 小张 数学 95.0 4 NaN NaN NaN 5 小张 语文 96.0 6 小张 英语 97.0 7 NaN 数学 50.0 8 小龙 语文 51.0 9 小龙 英语 52.0 ------------------ 姓名 科目 分数 0 小王 数学 87.0 1 小王 语文 NaN 2 NaN 英语 89.0 3 小张 数学 95.0 5 小张 语文 96.0 6 小张 英语 97.0 7 NaN 数学 50.0 8 小龙 语文 51.0 9 小龙 英语 52.0
3、fillna 填充缺失值,主要了解2个参数
value:填充的值,可以是单个值,可以是字典(key为列名,value是值)
method:等于ffill则使用前一个不为空的值填充,等于bfill使用后一个不为空的值填充
# -*- coding: utf-8 -*- import pandas as pd df = pd.read_excel('test.xlsx') print(df) print('------------------') df.loc[:,'分数'] = df['分数'].fillna(100) """ 等价于df.fillna({'分数':100}) """ print(df)
Unnamed: 0 姓名 科目 分数 性别 0 NaN 小王 数学 87.0 NaN 1 NaN 小王 语文 NaN NaN 2 NaN NaN 英语 89.0 NaN 3 NaN 小张 数学 95.0 NaN 4 NaN NaN NaN NaN NaN 5 NaN 小张 语文 96.0 NaN 6 NaN 小张 英语 97.0 NaN 7 NaN NaN 数学 50.0 NaN 8 NaN 小龙 语文 51.0 NaN 9 NaN 小龙 英语 52.0 NaN ------------------ Unnamed: 0 姓名 科目 分数 性别 0 NaN 小王 数学 87.0 NaN 1 NaN 小王 语文 100.0 NaN 2 NaN NaN 英语 89.0 NaN 3 NaN 小张 数学 95.0 NaN 4 NaN NaN NaN 100.0 NaN 5 NaN 小张 语文 96.0 NaN 6 NaN 小张 英语 97.0 NaN 7 NaN NaN 数学 50.0 NaN 8 NaN 小龙 语文 51.0 NaN 9 NaN 小龙 英语 52.0 NaN
# -*- coding: utf-8 -*- import pandas as pd df = pd.read_excel('test.xlsx') print(df) print('------------------') # index索引0到6用上面单元格的值填充 df.loc[0:6,'姓名'] = df['姓名'].fillna(method='ffill') # index索引7到最后用下面单元格的值填充 df.loc[7:,'姓名'] = df['姓名'].fillna(method='bfill') # 缺失的分数设为100 df.loc[:,'分数'] = df['分数'].fillna(100) """ 等价于df.fillna({'分数':100}) """ print(df)
Unnamed: 0 姓名 科目 分数 性别 0 NaN 小王 数学 87.0 NaN 1 NaN 小王 语文 NaN NaN 2 NaN NaN 英语 89.0 NaN 3 NaN 小张 数学 95.0 NaN 4 NaN NaN NaN NaN NaN 5 NaN 小张 语文 96.0 NaN 6 NaN 小张 英语 97.0 NaN 7 NaN NaN 数学 50.0 NaN 8 NaN 小龙 语文 51.0 NaN 9 NaN 小龙 英语 52.0 NaN ------------------ Unnamed: 0 姓名 科目 分数 性别 0 NaN 小王 数学 87.0 NaN 1 NaN 小王 语文 100.0 NaN 2 NaN 小王 英语 89.0 NaN 3 NaN 小张 数学 95.0 NaN 4 NaN 小张 NaN 100.0 NaN 5 NaN 小张 语文 96.0 NaN 6 NaN 小张 英语 97.0 NaN 7 NaN 小龙 数学 50.0 NaN 8 NaN 小龙 语文 51.0 NaN 9 NaN 小龙 英语 52.0 NaN
本文就此结束,感谢IT人士的关注pandas缺失值处理检测isnull、删除dropna、填充fillna,本文合作企业直达:更多推荐。
很赞哦!
python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
pandas缺失值处理检测isnull、删除dropna、填充fillna文章写得不错,值得赞赏