pandas系列之缺失值的处理 | 您所在的位置:网站首页 › pandas处理异常值和缺失值 › pandas系列之缺失值的处理 |
pandas系列之缺失值的处理
Python 2022.05.03 18:17:55 270 0
缺失值是由于某些原因导致部分数据为空。对于缺失值一般有2种处理方式,要么删除,要么填充(用某个值代替缺失值)。缺失值一般分2种,一种是某一列的数据缺失。另一种是整行数据都缺失,即一个空行。
缺失值是由于某些原因导致部分数据为空。对于缺失值一般有2种处理方式,要么删除,要么填充(用某个值代替缺失值)。缺失值一般分2种,一种是某一列的数据缺失。另一种是整行数据都缺失,即一个空行。 本文所用到的Excel表格内容如下: result: 区域 省份 城市 时间 指标 0 东北 辽宁 大连 2019-09-06 12.0 1 西北 NaN 西安 NaT 87.0 2 华南 广东 深圳 2019-09-08 NaN 3 华北 北京 北京 2021-05-13 45.0 4 华中 湖北 武汉 NaT 21.0 5 东北 黑龙江 哈尔滨 2019-09-11 42.0 6 NaN NaN NaN NaT NaN 7 华南 NaN 广州 2019-09-13 34.0 8 华北 河北 石家庄 NaT 56.0 9 华中 NaN 益阳 2019-09-15 NaN 10 东北 辽宁 鞍山 NaT 32.0 11 华中 湖北 荆州 2019-09-17 32.0从结果来看,每一列均有缺失值。这里特别注意,时间日期类型的数据缺失值用NaT表示,其他类型的都用NaN来表示。千万不要笼统的认为缺失值都是用NaN来表示 1.2 info():查看缺失值的情形df = pd.read_excel(r'C:\Users\admin\Desktop\data_test.xlsx') print(df.info())result: RangeIndex: 12 entries, 0 to 11 Data columns (total 5 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 区域 11 non-null object 1 省份 8 non-null object 2 城市 11 non-null object 3 时间 7 non-null datetime64[ns] 4 指标 9 non-null float64 dtypes: datetime64[ns](1), float64(1), object(3) memory usage: 608.0+ bytes None从结果来看,省份这一列是9 non-null。说明省份这一列有4个null值。同理,时间这一列有4个缺失值,指标这一列有2个缺失值,城市这一列有1个缺失值,区域这一列有1个缺失值 2.缺失值的判断isnull():判断具体的某个值是否是缺失值,如果是则返回True,反之则为False df = pd.read_excel(r'C:\Users\admin\Desktop\data_test.xlsx') print(df.isnull())result: 区域 省份 城市 时间 指标 0 False False False False False 1 False True False True False 2 False False False False True 3 False False False False False 4 False False False True False 5 False False False False False 6 True True True True True 7 False True False False False 8 False False False True False 9 False True False False True 10 False False False True False 11 False False False False False3.删除缺失值dropna():删除缺失值 3.1 严格删除所有所有有缺失值的行df = pd.read_excel(r'C:\Users\admin\Desktop\data_test.xlsx') print(df.dropna())result: 区域 省份 城市 时间 指标 0 东北 辽宁 大连 2019-09-06 12.0 3 华北 北京 北京 2021-05-13 45.0 5 东北 黑龙江 哈尔滨 2019-09-11 42.0 11 华中 湖北 荆州 2019-09-17 32.0从结果来看,dropna()方法默认会删除含有缺失值的行,只要这一行有一个字段缺失,就会被删除。所以最终只保留了4条完整的数据记录 3.2 只删除空白行df = pd.read_excel(r'C:\Users\admin\Desktop\data_test.xlsx') print(df.dropna(how='all'))result: 区域 省份 城市 时间 指标 0 东北 辽宁 大连 2019-09-06 12.0 1 西北 NaN 西安 NaT 87.0 2 华南 广东 深圳 2019-09-08 NaN 3 华北 北京 北京 2021-05-13 45.0 4 华中 湖北 武汉 NaT 21.0 5 东北 黑龙江 哈尔滨 2019-09-11 42.0 7 华南 NaN 广州 2019-09-13 34.0 8 华北 河北 石家庄 NaT 56.0 9 华中 NaN 益阳 2019-09-15 NaN 10 东北 辽宁 鞍山 NaT 32.0 11 华中 湖北 荆州 2019-09-17 32.0how='all'代表只删除所有字段均为缺失值的行,即只删除空白行。所以保留了11条记录。只删除了第6行这个空白行。 4.缺失值补充一般有用0填充,用平均值填充,用众数填充(大多数时候用这个),向前填充(用缺失值的上一行对应字段的值填充,比如D3单元格缺失,那么就用D2单元格的值填充)、向后填充(与向前填充对应)等方式。 4.1填充所有缺失值fillna():缺失值,参数代表要填充的内容。 区域 省份 城市 时间 指标 0 东北 辽宁 大连 2019-09-06 12.0 1 西北 NaN 西安 NaT 87.0 2 华南 广东 深圳 2019-09-08 NaN 3 华北 北京 北京 2021-05-13 45.0 4 华中 湖北 武汉 NaT 21.0 5 东北 黑龙江 哈尔滨 2019-09-11 42.0 6 NaN NaN NaN NaT NaN 7 华南 NaN 广州 2019-09-13 34.0 8 华北 河北 石家庄 NaT 56.0 9 华中 NaN 益阳 2019-09-15 NaN 10 东北 辽宁 鞍山 NaT 32.0 11 华中 湖北 荆州 2019-09-17 32.00result: 区域 省份 城市 时间 指标 0 东北 辽宁 大连 2019-09-06 12.0 1 西北 NaN 西安 NaT 87.0 2 华南 广东 深圳 2019-09-08 NaN 3 华北 北京 北京 2021-05-13 45.0 4 华中 湖北 武汉 NaT 21.0 5 东北 黑龙江 哈尔滨 2019-09-11 42.0 6 NaN NaN NaN NaT NaN 7 华南 NaN 广州 2019-09-13 34.0 8 华北 河北 石家庄 NaT 56.0 9 华中 NaN 益阳 2019-09-15 NaN 10 东北 辽宁 鞍山 NaT 32.0 11 华中 湖北 荆州 2019-09-17 32.01从结果来看,该方法默认情形下会对所有缺失值进行填充 4.2 填充指定单列 区域 省份 城市 时间 指标 0 东北 辽宁 大连 2019-09-06 12.0 1 西北 NaN 西安 NaT 87.0 2 华南 广东 深圳 2019-09-08 NaN 3 华北 北京 北京 2021-05-13 45.0 4 华中 湖北 武汉 NaT 21.0 5 东北 黑龙江 哈尔滨 2019-09-11 42.0 6 NaN NaN NaN NaT NaN 7 华南 NaN 广州 2019-09-13 34.0 8 华北 河北 石家庄 NaT 56.0 9 华中 NaN 益阳 2019-09-15 NaN 10 东北 辽宁 鞍山 NaT 32.0 11 华中 湖北 荆州 2019-09-17 32.02result: 区域 省份 城市 时间 指标 0 东北 辽宁 大连 2019-09-06 12.0 1 西北 NaN 西安 NaT 87.0 2 华南 广东 深圳 2019-09-08 NaN 3 华北 北京 北京 2021-05-13 45.0 4 华中 湖北 武汉 NaT 21.0 5 东北 黑龙江 哈尔滨 2019-09-11 42.0 6 NaN NaN NaN NaT NaN 7 华南 NaN 广州 2019-09-13 34.0 8 华北 河北 石家庄 NaT 56.0 9 华中 NaN 益阳 2019-09-15 NaN 10 东北 辽宁 鞍山 NaT 32.0 11 华中 湖北 荆州 2019-09-17 32.034.3 填充多列4.3.1 指定多列填充一样的内容 区域 省份 城市 时间 指标 0 东北 辽宁 大连 2019-09-06 12.0 1 西北 NaN 西安 NaT 87.0 2 华南 广东 深圳 2019-09-08 NaN 3 华北 北京 北京 2021-05-13 45.0 4 华中 湖北 武汉 NaT 21.0 5 东北 黑龙江 哈尔滨 2019-09-11 42.0 6 NaN NaN NaN NaT NaN 7 华南 NaN 广州 2019-09-13 34.0 8 华北 河北 石家庄 NaT 56.0 9 华中 NaN 益阳 2019-09-15 NaN 10 东北 辽宁 鞍山 NaT 32.0 11 华中 湖北 荆州 2019-09-17 32.04result: 区域 省份 城市 时间 指标 0 东北 辽宁 大连 2019-09-06 12.0 1 西北 NaN 西安 NaT 87.0 2 华南 广东 深圳 2019-09-08 NaN 3 华北 北京 北京 2021-05-13 45.0 4 华中 湖北 武汉 NaT 21.0 5 东北 黑龙江 哈尔滨 2019-09-11 42.0 6 NaN NaN NaN NaT NaN 7 华南 NaN 广州 2019-09-13 34.0 8 华北 河北 石家庄 NaT 56.0 9 华中 NaN 益阳 2019-09-15 NaN 10 东北 辽宁 鞍山 NaT 32.0 11 华中 湖北 荆州 2019-09-17 32.054.3.2 指定多列填充不一样的内容 区域 省份 城市 时间 指标 0 东北 辽宁 大连 2019-09-06 12.0 1 西北 NaN 西安 NaT 87.0 2 华南 广东 深圳 2019-09-08 NaN 3 华北 北京 北京 2021-05-13 45.0 4 华中 湖北 武汉 NaT 21.0 5 东北 黑龙江 哈尔滨 2019-09-11 42.0 6 NaN NaN NaN NaT NaN 7 华南 NaN 广州 2019-09-13 34.0 8 华北 河北 石家庄 NaT 56.0 9 华中 NaN 益阳 2019-09-15 NaN 10 东北 辽宁 鞍山 NaT 32.0 11 华中 湖北 荆州 2019-09-17 32.06result: 区域 省份 城市 时间 指标 0 东北 辽宁 大连 2019-09-06 12.0 1 西北 NaN 西安 NaT 87.0 2 华南 广东 深圳 2019-09-08 NaN 3 华北 北京 北京 2021-05-13 45.0 4 华中 湖北 武汉 NaT 21.0 5 东北 黑龙江 哈尔滨 2019-09-11 42.0 6 NaN NaN NaN NaT NaN 7 华南 NaN 广州 2019-09-13 34.0 8 华北 河北 石家庄 NaT 56.0 9 华中 NaN 益阳 2019-09-15 NaN 10 东北 辽宁 鞍山 NaT 32.0 11 华中 湖北 荆州 2019-09-17 32.07 有帮助6打赏海报 数据分析本文转载自互联网,旨在分享有价值的内容,文章如有侵权请联系删除,部分文章如未署名作者来源请联系我们及时备注,感谢您的支持。 转载请注明本文地址:https://www.shouxicto.com/article/3108.html 上一篇:pandas系列之熟悉数据结构和基本特征 下一篇:pandas系列之重复值的处理 |
CopyRight 2018-2019 实验室设备网 版权所有 |