1.空值

1.1 有两种丢失数据:

  • None: Python自带的数据类型 不能参与到任何计算中
  • np.nan: float类型 能参与计算,但结果总是nan
# None+2  # 报错
# np.nan + 2 # 值仍然是nan

1.2 np.nan(NaN)

数组直接运算会得到nan,但可以使用np.nansum()函数来计算nan,此时视nan为0。

ndarr = np.array([1,2,3,np.nan])
np.sum(ndarr)
np.nansum(ndarr)

Series和DataForm可以直接处理nan

s1 = Series([1,2,3,np.nan])
s1 0 1.0
1 2.0
2 3.0
3 NaN
dtype: float64 s1.sum()
6.0
df1 = DataFrame([1,2,3,np.nan])
df1

df1.sum()
0 6.0
dtype: float64

1.3 pandas中的None与NaN

s1 = Series([1,2,3,np.nan,None])  #
s1 0 1.0
1 2.0
2 3.0
3 NaN
4 NaN
dtype: float64
df1 = DataFrame([1,2,3,np.nan,None])  # Series和DataFrame都会自动把None转换成NaN 然后 运算的时候会把NaN当成0
df1

2. 空值检测与空值处理

  • isnull()
  • notnull()
  • dropna(): 过滤丢失数据
  • fillna(): 填充丢失数据

2.1 空值检测

  • isnull()
  • notnull()

用randint创建一个5*5的DataFrame作为例子

df = DataFrame(data=np.random.randint(0,100,size=(5,5)),columns=list('abcde'))
df.loc[1,'a'] = np.nan
df.loc[3,'b'] = np.nan
df.loc[0,'e'] = np.nan

isnull配合any使用,可以查看每一行是否存在空值

可以控制axis改变方向,查看某一列是否存在空值

2.2 空值过滤

  • dropna()

可以选择过滤的是行还是列(默认为行)

df.dropna()  # 默认 保留没有空值的行

也可以选择过滤的方式 how = 'all',代表全部为空则删除

2.3 空值填充

  • fillna()

# value=None 默认情况
df.fillna(value=50)

也可以选择从前面找值来填充还是从后面找值来填充

# method指的是 如何对空值进行填充
# 'bfill'从后面找值来填充 ffill从前面找值来填充
# df.fillna(method='bfill')
# df.fillna(method='ffill') # 默认是纵向(从相邻样本的 同一特征中找值)

# df.fillna(method='bfill',axis=0) # 竖向
df.fillna(method='bfill',axis=1) # 横向

还可以限定最多填充几个连续的NaN

df.fillna(method='bfill',limit=1,inplace=True)  # 用来限制填充多少个

fillna()方法总结:

# value=None, method=None, axis=None, inplace=False, limit=None
# value直接指定 用什么值来填充
# method 指定填充方法
# axis 指定填充值的方向
# inplace 指的是是否对原df进行替换
# limit 限制填充的个数
df.fillna()

pandas中的空值处理的更多相关文章

  1. python数据分析pandas中的DataFrame数据清洗

    pandas中的DataFrame中的空数据处理方法: 方法一:直接删除 1.查看行或列是否有空格(以下的df为DataFrame类型,axis=0,代表列,axis=1代表行,以下的返回值都是行或列 ...

  2. Python学习教程:Pandas中第二好用的函数

    从网上看到一篇好的文章是关于如何学习python数据分析的迫不及待想要分享给大家,大家也可以点链接看原博客.希望对大家的学习有帮助. 本次的Python学习教程是关于Python数据分析实战基础相关内 ...

  3. pandas中na_values与keep_default_na

    我们在使用pandas读取文件时,常会遇到某个字段为NaN. 一般情况下,这时因为文件中包含空值导致的,因为pandas默认会将 '-1.#IND', '1.#QNAN', '1.#IND', '-1 ...

  4. (数据科学学习手札131)pandas中的常用字符串处理方法总结

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常开展数据分析的过程中,我们经常需要对 ...

  5. pandas中常用的操作一

    pandas中常用的功能: 1.显示所有的列的信息,999表示显示最大的列为999 pd.options.display.max_columns=999 2.读取excel时设置使用到列的名称,和列的 ...

  6. Pandas中DateFrame修改列名

    Pandas中DateFrame修改列名 在做数据挖掘的时候,想改一个DataFrame的column名称,所以就查了一下,总结如下: 数据如下: >>>import pandas ...

  7. 在PreparedStatement中设置空值

    在PreparedStatement中设置空值 分类: Work&amp Study java2009-09-10 09:56 922人阅读 评论(0) 收藏 举报 nulltypes数据库 ...

  8. pandas中的分组技术

    目录 1  分组操作 1.1  按照列进行分组 1.2  按照字典进行分组 1.3  根据函数进行分组 1.4  按照list组合 1.5  按照索引级别进行分组 2  分组运算 2.1  agg 2 ...

  9. Java中的空值判断

    Java中的空值判断 /** * 答案选项: * A YouHaidong * B 空 * C 编译错误 * D 以上都不对 */ package com.you.model; /** * @auth ...

随机推荐

  1. Android Studio--》Gradle Scripts配置说明

    什么是Gradle? Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言. 安装 ...

  2. WebDriver与文件系统

    1.屏幕截屏操作:其接口函数是TakesScreenshot.该功能是在运行测试用例的过程中,需要验证某个元素的状态或者显示的数值时,可以将屏幕截取下来进行对比:或者在异常或者错误发生的时候将屏幕截取 ...

  3. upload-labs

    upload-labs是一个和sqli-labs类似的靶场平台,只不过是一个专门学习文件上传的.整理的很好,虽然并不能将服务器解析漏洞考虑进去,但毕竟一个靶场不可能多个web容器吧,关键是思路很重要, ...

  4. C语言进阶之路(一)----C语言的内存四区模型

    内存四区模型:操作系统给C/C++编写的程序分配内存,通常将分配的内存划分为以下四个区域:1.栈区:存放局部变量,用完由操作系统自动释放2.堆区:动态分配给程序的内存区域,由程序员手动释放3.数据区: ...

  5. 蓝桥杯近三年初赛题之一(15年b组)

    临近比赛,自己定时做了近三年的初赛题,不是很理想,10道题平均做对5+道.为了这次比赛,总共做了200题左右吧,估计去北京参加决赛有点难,不过不管怎样,对得起自己万余行代码就好. 一.15年初赛题(第 ...

  6. 关于NFS服务器权限的四种情况

    第一种:service 和client 的UID和用户名一样 client按照service端的权限来使用.

  7. flutter key

    随意点开一个Widget,就会发现,可以传递一个参数Key.那这个Key到底是干啥子,有什么用呢? Flutter是受React启发的,所以Virtual Dom的diff算法也参考过来了(应该是略有 ...

  8. 安装JDK并配置环境变量以及Hello World

    摘要:本文主要说明在Windows环境下JDK的安装,以及安装完成之后环境变量的配置,并通过DOS运行简单的Java程序. 安装JDK 说明 SDK:软件开发工具包(Software Developm ...

  9. nginx配置优化 第二章

    一:常用功能优化: 1:网络连接的优化: 只能在events模块设置,用于防止在同一一个时刻只有一个请求的情况下,出现多个睡眠进程会被唤醒但只能有一个进程可获得请求的尴尬,如果不优化,在多进程的ngi ...

  10. 剑指offer(42)和为S的字符串

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. 题目 ...