pandas系列之缺失值的处理 您所在的位置:网站首页 pandas处理异常值和缺失值 pandas系列之缺失值的处理

pandas系列之缺失值的处理

#pandas系列之缺失值的处理| 来源: 网络整理| 查看: 265

pandas系列之缺失值的处理 Python 2022.05.03 18:17:55 270 0 缺失值是由于某些原因导致部分数据为空。对于缺失值一般有2种处理方式,要么删除,要么填充(用某个值代替缺失值)。缺失值一般分2种,一种是某一列的数据缺失。另一种是整行数据都缺失,即一个空行。

缺失值是由于某些原因导致部分数据为空。对于缺失值一般有2种处理方式,要么删除,要么填充(用某个值代替缺失值)。缺失值一般分2种,一种是某一列的数据缺失。另一种是整行数据都缺失,即一个空行。

本文所用到的Excel表格内容如下:

pandas系列之缺失值的处理  第1张

1.缺失值查看1.1 先打印一下数据结构看一下整体情形import pandas as pd df = pd.read_excel(r'C:\Users\admin\Desktop\data_test.xlsx') print(df)

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  False

3.删除缺失值

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.0

how='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.00

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.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.02

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.03

4.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.04

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.05

4.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.06

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.07 有帮助6打赏海报 数据分析

本文转载自互联网,旨在分享有价值的内容,文章如有侵权请联系删除,部分文章如未署名作者来源请联系我们及时备注,感谢您的支持。

转载请注明本文地址:https://www.shouxicto.com/article/3108.html

上一篇:pandas系列之熟悉数据结构和基本特征 下一篇:pandas系列之重复值的处理


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有