一.处理数据的缺失值

描述

  • 使用isnull()函数可以判断数据表中的哪个值是缺失值,并将缺失值标记为True,非缺失值标记为False
  • 使用dropna函数可以删除数据表中含有缺失值的行。默认情况下,只要某一行中有缺失值,该函数就会把这一行删除
  • 使用fillna()函数可以将数据表中的所有缺失值填充为指定的值

语法和参数

  • DataFrame.isnull()
  • DataFrame.dropna(how=None)
    • how:默认为空,当how=all时,删除数据中整行都为空的行
  • DataFrame.fillna(value)
    • value:需要填充的值

实例

import pandas as pddata = pd.read_excel('产品统计表1.xlsx')
print(data)
'''
编号   产品  成本价(元/个)  销售价(元/个)  数量(个)   成本(元)  收入(元)  利润(元)
0  a001   背包      16.0        65     60   960.0   3900   2940
1  a002   钱包      90.0       187     50  4500.0   9350   4850
2  a003   背包       NaN        65     23   368.0   1495   1127
3  a004  手提包      36.0       147     26   936.0   3822   2886
4  a005   钱包      90.0       187     78  7020.0  14586   7566
5  a006  单肩包      58.0       124     63  3654.0   7812   4158
6  a007  单肩包      58.0       124     58     NaN   7192   3828
'''
# 查看数据的缺失值情况
print(data.info())
'''
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 7 entries, 0 to 6
Data columns (total 8 columns):#   Column    Non-Null Count  Dtype
---  ------    --------------  -----  0   编号        7 non-null      object 1   产品        7 non-null      object 2   成本价(元/个)  6 non-null      float643   销售价(元/个)  7 non-null      int64  4   数量(个)     7 non-null      int64  5   成本(元)     6 non-null      float646   收入(元)     7 non-null      int64  7   利润(元)     7 non-null      int64
dtypes: float64(2), int64(4), object(2)
memory usage: 576.0+ bytes
None
'''
# 判断数据表中的哪个值是缺失值
a = data.isnull()
print(a)
'''
编号     产品  成本价(元/个)  销售价(元/个)  数量(个)  成本(元)  收入(元)  利润(元)
0  False  False     False     False  False  False  False  False
1  False  False     False     False  False  False  False  False
2  False  False      True     False  False  False  False  False
3  False  False     False     False  False  False  False  False
4  False  False     False     False  False  False  False  False
5  False  False     False     False  False  False  False  False
6  False  False     False     False  False   True  False  False
'''
# 删除数据表中含有缺失值的行
b = data.dropna()
print(b)
'''编号   产品  成本价(元/个)  销售价(元/个)  数量(个)   成本(元)  收入(元)  利润(元)
0  a001   背包      16.0        65     60   960.0   3900   2940
1  a002   钱包      90.0       187     50  4500.0   9350   4850
3  a004  手提包      36.0       147     26   936.0   3822   2886
4  a005   钱包      90.0       187     78  7020.0  14586   7566
5  a006  单肩包      58.0       124     63  3654.0   7812   4158
'''
# 删除数据表中整行都是缺失值的行
c = data.dropna(how='all')
print(c)
'''
编号   产品  成本价(元/个)  销售价(元/个)  数量(个)   成本(元)  收入(元)  利润(元)
0  a001   背包      16.0        65     60   960.0   3900   2940
1  a002   钱包      90.0       187     50  4500.0   9350   4850
2  a003   背包       NaN        65     23   368.0   1495   1127
3  a004  手提包      36.0       147     26   936.0   3822   2886
4  a005   钱包      90.0       187     78  7020.0  14586   7566
5  a006  单肩包      58.0       124     63  3654.0   7812   4158
6  a007  单肩包      58.0       124     58     NaN   7192   3828
'''
# 将数据表中所有的值都填充为0
d = data.fillna(0)
print(d)
'''
编号   产品  成本价(元/个)  销售价(元/个)  数量(个)   成本(元)  收入(元)  利润(元)
0  a001   背包      16.0        65     60   960.0   3900   2940
1  a002   钱包      90.0       187     50  4500.0   9350   4850
2  a003   背包       0.0        65     23   368.0   1495   1127
3  a004  手提包      36.0       147     26   936.0   3822   2886
4  a005   钱包      90.0       187     78  7020.0  14586   7566
5  a006  单肩包      58.0       124     63  3654.0   7812   4158
6  a007  单肩包      58.0       124     58     0.0   7192   3828
'''
# 为不同列中的缺失值设置不同的填充值
e = data.fillna({'成本价(元/个)': 16, '成本(元)': 3364})
print(e)
'''编号   产品  成本价(元/个)  销售价(元/个)  数量(个)   成本(元)  收入(元)  利润(元)
0  a001   背包      16.0        65     60   960.0   3900   2940
1  a002   钱包      90.0       187     50  4500.0   9350   4850
2  a003   背包      16.0        65     23   368.0   1495   1127
3  a004  手提包      36.0       147     26   936.0   3822   2886
4  a005   钱包      90.0       187     78  7020.0  14586   7566
5  a006  单肩包      58.0       124     63  3654.0   7812   4158
6  a007  单肩包      58.0       124     58  3364.0   7192   3828
'''

二.处理数组的重复值

描述

  • drop_duplicates()函数可以删除重复值
  • unique()函数可以提取唯一值

用法和参数

  • DataFrame.drop_duplicates(subset=None, keep=“first”)

    • subset:删除某一列的重复值
    • keep:自定义删除重复值时保留哪个重复值所在的行
  • DataFrame.unique()

实例

import pandas as pddata = pd.read_excel('产品统计表2.xlsx')
print(data)
'''
编号   产品  成本价(元/个)  销售价(元/个)  数量(个)  成本(元)  收入(元)  利润(元)
0  a001   背包        16        65     60    960   3900   2940
1  a002   钱包        90       187     50   4500   9350   4850
2  a003   背包        16        65     23    368   1495   1127
3  a004  手提包        36       147     26    936   3822   2886
4  a004  手提包        36       147     26    936   3822   2886
5  a005   钱包        90       187     78   7020  14586   7566
6  a006  单肩包        58       124     63   3654   7812   4158
'''
# 删除重复的行
a = data.drop_duplicates()
print(a)
'''
编号   产品  成本价(元/个)  销售价(元/个)  数量(个)  成本(元)  收入(元)  利润(元)
0  a001   背包        16        65     60    960   3900   2940
1  a002   钱包        90       187     50   4500   9350   4850
2  a003   背包        16        65     23    368   1495   1127
3  a004  手提包        36       147     26    936   3822   2886
5  a005   钱包        90       187     78   7020  14586   7566
6  a006  单肩包        58       124     63   3654   7812   4158
'''
# 删除某一列的重复值
b = data.drop_duplicates(subset='产品')
print(b)
'''
编号   产品  成本价(元/个)  销售价(元/个)  数量(个)  成本(元)  收入(元)  利润(元)
0  a001   背包        16        65     60    960   3900   2940
1  a002   钱包        90       187     50   4500   9350   4850
3  a004  手提包        36       147     26    936   3822   2886
6  a006  单肩包        58       124     63   3654   7812   4158
'''
# 保留第一个重复值所在的行
c = data.drop_duplicates(subset='产品', keep='first')
print(c)
'''
编号   产品  成本价(元/个)  销售价(元/个)  数量(个)  成本(元)  收入(元)  利润(元)
0  a001   背包        16        65     60    960   3900   2940
1  a002   钱包        90       187     50   4500   9350   4850
3  a004  手提包        36       147     26    936   3822   2886
6  a006  单肩包        58       124     63   3654   7812   4158
'''
# 保留最后一个重复值所在的行
d = data.drop_duplicates(subset='产品', keep='last')
print(d)
'''
编号   产品  成本价(元/个)  销售价(元/个)  数量(个)  成本(元)  收入(元)  利润(元)
2  a003   背包        16        65     23    368   1495   1127
4  a004  手提包        36       147     26    936   3822   2886
5  a005   钱包        90       187     78   7020  14586   7566
6  a006  单肩包        58       124     63   3654   7812   4158
'''
# 把重复值一个不留的删除
e = data.drop_duplicates(subset='产品', keep=False)
print(e)
'''
编号   产品  成本价(元/个)  销售价(元/个)  数量(个)  成本(元)  收入(元)  利润(元)
6  a006  单肩包        58       124     63   3654   7812   4158
'''
f = data['产品'].unique()
print(f)
'''
['背包' '钱包' '手提包' '单肩包']
'''

Python_Pandas_处理数据的缺失值和重复值相关推荐

  1. python数据预处理_Python数据预处理——缺失值、重复值

    一.缺失值处理 isnull( ) .fillna( ) .dropna( ) (1)查看 缺失 查看数据集缺失,返回每列的缺失个数 df.isnull().sum() 查看某字段有缺失的行 df[d ...

  2. datacombo重复值的处理_Pandas入门【S1E3】缺失值和重复值处理

    导语: 前两期分别就pandas安装和导入数据.pandas数据探索做了梳理. 回顾如下: Pandas安装和数据导入​mp.weixin.qq.com Pandas数据探索​mp.weixin.qq ...

  3. Pandas数据分析17——pandas数据清洗(缺失值、重复值处理)

    参考书目:<深入浅出Pandas:利用Python进行数据处理与分析> pandas对大数据有很多便捷的清洗用法,尤其针对缺失值和重复值.缺失值就不用说了,会影响计算,重复值有时候可能并未 ...

  4. python concat去除重复值语句_Python数据处理从零开始----第二章(pandas)④数据合并和处理重复值...

    目录 第二章(pandas) Python数据处理从零开始----第二章(pandas)④数据合并和处理重复值 ============================================ ...

  5. python数据框去重_【Python】基于某些列删除数据框中的重复值

    Python按照某些列去重,可用drop_duplicates函数轻松处理.本文致力用简洁的语言介绍该函数. 一.drop_duplicates函数介绍 drop_duplicates函数可以按某列去 ...

  6. python绘制星空图_【Python】基于某些列删除数据框中的重复值

    阿黎逸阳 精选Python.SQL.R.MATLAB等相关知识,让你的学习和工作更出彩(可提供风控建模干货经验). Python按照 某些列去重 ,可用 drop_duplicates函数轻松处理 . ...

  7. xlsx表格怎么筛选重复数据_excel表格如何筛选重复数据 在Excel表格的两列数据中提取不重复值的四种方法...

    excel表格如何筛选重复数据 在Excel表格的两列数据中提取不重复值的四种方法,最近到了季度汇报的时候,掌握一手excel技能在此刻显得多么重要,为了是你的excel看起来更高大上,今天教大家设置 ...

  8. 【数据科学】05 数据合并(merge、concat、combine)与数据清洗(缺失值、重复值、内容和格式)

    文章目录 1. 数据合并 1.1 merge()合并 1.2 concat()合并 1.3 combine()合并 2. 数据清洗 2.1 缺失值 2.2 重复值 2.3 内容与格式清洗 1. 数据合 ...

  9. 请教个问题,我想把数据中名字的重复值删掉,只保留年纪大的怎么整呢?

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 三年谪宦此栖迟,万古惟留楚客悲. ...

最新文章

  1. 全国计算机二级vfp知识点,全国计算机二级VFP知识点总结
  2. 兰州大学C语言程序设计课程作业,【兰州大学|兰州大学C语言程序设计课程作业( 五 )】语言程序设计|课程|作业-傻大方...
  3. 10个例子带你了解机器学习中的线性代数
  4. centos7 搭建本地git_本地服务调用K8S环境中的SpringCloud微服务实战
  5. 画风清奇!看看大佬怎么玩Python
  6. Inno Setup 5制作安装程序
  7. linux 音频驱动的流程,Intel平台下Linux音频驱动流程分析
  8. thymeleaf加载不了js引用_网站首页加载慢解决方案
  9. java简单的复数类_Java练习 SDUT-4303_简单的复数运算(类和对象)
  10. 常用应用层传输协议和端口
  11. Introduction to my galaxy engine 8 : Real Time Fluid Rendering
  12. C语言冒泡排序和选择排序
  13. 《程序员情商》自我修养必备《论语》
  14. 解决浏览器下载附件乱码问题 IE11
  15. 由手机号绑定的账号,都应设置更换手机号功能
  16. Vue常用经典开源项目汇总参考-海量
  17. word插入图片的同时自动插入图片名称
  18. win10如何自动切换壁纸
  19. 二分+前缀和——聪明的质检员
  20. 【HDFS】Observer Namenode开启in-progress tail之后导致误删除in-progress状态的editlog问题

热门文章

  1. python 实现文章中词汇的频率统计并进行显示(针对英文文章)
  2. toefl阅读写作口语评分解读
  3. 【文献阅读】PSO混合GA解决不确定IPPS问题
  4. 教育培训行业APP开发功能明细
  5. 嵌入式linux轻量级sshd服务工具Dropbear移植
  6. keep-alive失效原因及解决方案
  7. 互联网日报 | 华为发布首款商用台式机;京东健康正式登陆港交所;苹果推出首款头戴式耳机...
  8. 【PCBA方案设计】红外测温仪电子温度计方案开发
  9. 华为荣耀20和x10比较_华为Mate 20与荣耀X10哪个好
  10. 【创业】PPLive创始人姚欣谈创业与融资