处理丢失数据

有两种丢失的数据:

       --  None

       --  np.nan(NaN)

1.None

None是Python自带的,其类型为python object。因此,None不能参与到任何计算中

object类型的运算要比int类型的运算慢得多

 2.np.nan(NaN)

np.nan是浮点类型,能参与到计算中。但计算的结果总是NaN

但可以使用np.nan() 函数来计算nan,此时视nan为 3.pandas中的None与NaN  (1) pandas中None与np.nan都视作np.nan

(1) 判断函数:

df.isnull()
df.isnull.any()
df.isnull.all()
df.notnull()
df.notnull.any()
df.notnull.all()
'''具体的代码实例以及功能如下:'''
from pandas import DataFrame, Series
import numpy as npdf = DataFrame({"age": [20, 21, 19, 22, 23], 'salary': [10000, 11000, 9900, 8500, 15000]},index=['张三', '李四', '小赵', '小王', '小冯'], columns=['age', 'salary', 'work'])
# 插入数据
df.work['李四':'小王'] = 'python'
print(df)
"""age  salary    work
张三   20   10000     NaN
李四   21   11000  python
小赵   19    9900  python
小王   22    8500  python
小冯   23   15000     NaN
"""'''1.调用isnull()方法,判断是否为空'''
print(df.isnull())
"""age  salary   work
张三  False   False   True
李四  False   False  False
小赵  False   False  False
小王  False   False  False
小冯  False   False   True
"""'''2. isnull().any() 只有数据有一个为空,即为Trueany(axis=0):只要数据有一个为True就为这“列”就为Trueany(axis=1):只要数据有一个为True就为这“行”就为True'''
s1 = df.isnull().any(axis=1)
'''(获取数据为空的数据)把获得的Series在使用DataFrame取值'''
print(df[s1])
"""age  salary work
张三   20   10000  NaN
小冯   23   15000  NaN
"""
'''3.isnull().all() 数据全部为空时,才为True,axis同any()'''
print(df.isnull().all(axis=1))
"""
张三    False
李四    False
小赵    False
小王    False
小冯    False
dtype: bool
"""'''4.notnull()  判断数据是否不为空'''
print(df.notnull())
"""age  salary   work
张三  True    True  False
李四  True    True   True
小赵  True    True   True
小王  True    True   True
小冯  True    True  False
"""
''' 5notnull().any() 只有数据有一个不为空,即为Trueany(axis=0):只要数据有一个不为True就为这“列”就为Trueany(axis=1):只要数据有一个不为True就为这“行”就为True'''
print(df.notnull().any(axis=1))
"""
张三    True
李四    True
小赵    True
小王    True
小冯    True
dtype: bool
"""'''6.notnull().all() 数据全部不为空时,才为True,axis同any()'''
s2 = df.notnull().all(axis=1)
print(s2)
"""
张三    False
李四     True
小赵     True
小王     True
小冯    False
dtype: bool
"""
'''取出没有一个空值的数据'''
print(df[s2])
"""age  salary    work
李四   21   11000  python
小赵   19    9900  python
小王   22    8500  python
"""

(2) 过滤函数

·  dropna()            可以选择过滤的是行还是列(默认为行)  , 也可以选择过滤的方式  参数 :how='all'

'''dropna(),中的参数axis默认为0,即为行'''
'''一行数据只要有一个为空就进行删除,如果加上参数how='all'代表一行都为空时才删除'''
print(df.dropna())
"""age  salary    work
李四   21   11000  python
小赵   19    9900  python
小王   22    8500  python
"""
'''一列数据只要有一个为空就进行删除,参数how='all'代表一列都为空时才删除'''
print(df.dropna(axis=1))
"""age  salary
张三   20   10000
李四   21   11000
小赵   19    9900
小王   22    8500
小冯   23   15000
"""

(3) 填充函数 Series/DataFrame

    --   fillna()      参数value=''  即为要填充的值

                                 method:对应的值  'bfill'(选择后面的填充)或者'ffill(选择前面的填充)

                                 inplace:True 是否选择在原来的基础上修改,加上该参数没有返回值

'''fillna() 填充所有的空值'''
print(df.fillna(value="填充值"))
"""age  salary    work
张三   20   10000     填充值
李四   21   11000  python
小赵   19    9900  python
小王   22    8500  python
小冯   23   15000     填充值
"""
'''可以选择向前填充还是向后填充参数method:对应的值  'bfill'(选择后面的填充)或者'ffill(选择前面的填充)inplace:True 是否选择在原来的基础上修改,没有返回值对于DataFrame来说,选择填充的轴axis.-- axis=0  index/行-- axis=1  columns/列'''
print(df.fillna(method='bfill'))
""" # 因为最后一个后面没有值,所以最后一个填充还是为NaNage  salary    work
张三   20   10000  python
李四   21   11000  python
小赵   19    9900  python
小王   22    8500  python
小冯   23   15000     NaN
"""
print(df.fillna(method='ffill'))
""" # 因为第一个的前没有值,所以第一个填充还是NaNage  salary    work
张三   20   10000     NaN
李四   21   11000  python
小赵   19    9900  python
小王   22    8500  python
小冯   23   15000  python
"""

Pandas的学习(5.pandas中处理丢失数据和空值数据以及填充空值数据)相关推荐

  1. Pandas的学习(1.pandas的介绍以及pandas中的Series的创建)

    什么是Pandas? 1. Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的 2. pandas 纳入了大 ...

  2. Python科学计算之Pandas基础学习

    Python科学计算之Pandas基础学习 导入Pandas 我们首先要导入我们的演出明星--Pandas. 这是导入Pandas的标准方式.显然,我们不希望每时每刻都在程序中写'pandas',但是 ...

  3. python fillna,Pandas之Fillna填充缺失数据的方法

    约定: import pandas as pd import numpy as np from numpy import nan as NaN 填充缺失数据 fillna()是最主要的处理方式了. d ...

  4. maven mybatis mysql_Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问...

    标签: 本篇内容还是建立在上一篇Java Web学习系列--Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Ja ...

  5. Python中的pandas模块学习

    本文是基于Windows系统环境,学习和测试pandas模块: Windows 10 PyCharm 2018.3.5 for Windows (exe) python 3.6.8 Windows x ...

  6. Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片、相互转换

    Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片.相互转换 目录 numpy中的array格式数据切片与pandas中的dataframe ...

  7. pandas 把某一列中字符串变数值_Python学习教程:Python数据分析实战基础 | 初识Pandas...

    这段时间和一些做数据分析的同学闲聊,我发现数据分析技能入门阶段存在一个普遍性的问题,很多凭着兴趣入坑的同学,都能够很快熟悉Python基础语法,好像自己什么都会了一点,然而实际操作起来既不知从何操起, ...

  8. python中pandas是指什么_Python中的神器Pandas,但是有人说Pandas慢...

    原标题:Python中的神器Pandas,但是有人说Pandas慢... 如果你从事大数据工作,用Python的Pandas库时会发现很多惊喜.Pandas在数据科学和分析领域扮演越来越重要的角色,尤 ...

  9. 快乐学习Pandas入门篇:Pandas基础

    Datawhale学习 作者:杨煜,Datawhale成员 寄语:本文对Pandas基础内容进行了梳理,从文件读取与写入.Series及DataFrame基本数据结构.常用基本函数及排序四个模块快速入 ...

最新文章

  1. 【Qt】Qt信号与槽使用不当,使程序崩溃
  2. 首次创建maven项目的准备工作
  3. php文字左右滚动代码,JavaScript
  4. java编程有什么独特之处?
  5. Cloud一分钟 | 电商月将至,腾讯云DCDB助力电商企业应对支付洪峰
  6. 禁止进入activity后EditText自动获得焦点的方法
  7. linux修改文件用户组,linux命令 修改文件、文件夹所属用户、用户组
  8. kali ip查询_UDP/IP硬件协议栈设计(一):缘起
  9. mysql 组复制 不一致_MySQL主从复制什么原因会造成不一致,如何预防及解决
  10. 如何从C快速过渡到C++
  11. Elementary OS 使用fcitx安装搜狗词库、搜狗输入法(Ubuntu通用)
  12. 解构2019世界人工智能大会:三大变化,十年趋势,一场地球与火星的碰撞
  13. 社交帝国的至暗时刻,Facebook“非死不可”?
  14. 利用Python绘制小狗小猫
  15. 替换=(等于号)正则表达式
  16. 小学计算机课的评语,小学信息技术听课评语
  17. iPhone白苹果,刷机降级,无限重启,无限恢复模式,无限DFU模式,错误4013,错误3014...
  18. 编辑视角下,论文摘要、引言、结论怎么写?
  19. android之ListView布局
  20. [杂项项目]纯C语言实现控制台小游戏——数字拼图

热门文章

  1. r语言上机文本分析与词云绘制_倚天屠龙记的文本分析
  2. Spring MVC found on classpath, which is incompatible with Spring Cloud Gateway.
  3. Spring Boot-自动配置之底层原理
  4. C++——《算法分析与设计》实验报告——单源最短路径问题
  5. css img 适配尺寸_如何解决img标签下面的小空隙(附详细视频教程)
  6. xSocket 通讯框架 demo
  7. JS基础语法(02)-JS的转义符
  8. IOS开发之自定义UIActionSheet
  9. C++的类型萃取技术
  10. sgi 之heap, priority_queue