pandas中的空值处理
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中的空值处理的更多相关文章
- python数据分析pandas中的DataFrame数据清洗
pandas中的DataFrame中的空数据处理方法: 方法一:直接删除 1.查看行或列是否有空格(以下的df为DataFrame类型,axis=0,代表列,axis=1代表行,以下的返回值都是行或列 ...
- Python学习教程:Pandas中第二好用的函数
从网上看到一篇好的文章是关于如何学习python数据分析的迫不及待想要分享给大家,大家也可以点链接看原博客.希望对大家的学习有帮助. 本次的Python学习教程是关于Python数据分析实战基础相关内 ...
- pandas中na_values与keep_default_na
我们在使用pandas读取文件时,常会遇到某个字段为NaN. 一般情况下,这时因为文件中包含空值导致的,因为pandas默认会将 '-1.#IND', '1.#QNAN', '1.#IND', '-1 ...
- (数据科学学习手札131)pandas中的常用字符串处理方法总结
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常开展数据分析的过程中,我们经常需要对 ...
- pandas中常用的操作一
pandas中常用的功能: 1.显示所有的列的信息,999表示显示最大的列为999 pd.options.display.max_columns=999 2.读取excel时设置使用到列的名称,和列的 ...
- Pandas中DateFrame修改列名
Pandas中DateFrame修改列名 在做数据挖掘的时候,想改一个DataFrame的column名称,所以就查了一下,总结如下: 数据如下: >>>import pandas ...
- 在PreparedStatement中设置空值
在PreparedStatement中设置空值 分类: Work& Study java2009-09-10 09:56 922人阅读 评论(0) 收藏 举报 nulltypes数据库 ...
- pandas中的分组技术
目录 1 分组操作 1.1 按照列进行分组 1.2 按照字典进行分组 1.3 根据函数进行分组 1.4 按照list组合 1.5 按照索引级别进行分组 2 分组运算 2.1 agg 2 ...
- Java中的空值判断
Java中的空值判断 /** * 答案选项: * A YouHaidong * B 空 * C 编译错误 * D 以上都不对 */ package com.you.model; /** * @auth ...
随机推荐
- TZOJ:3660: 家庭关系
描述 给定若干家庭成员之间的关系,判断2个人是否属于同一家庭,即2个人之间均可以通过这些关系直接或者间接联系. 输入 输入数据有多组,每组数据的第一行为一个正整数n(1<=n<=100), ...
- tensorboard使用过程错误记录
首先代码如下: def word_vis(self,file,txtname):#生成的模型存放的地址:word_vismodel'+file为新建的文件夹名 txtname是通过word2vec生成 ...
- 访问GitLab的PostgreSQL数据库,查询、修改、替换等操作
1.登陆gitlab的安装服务查看配置文件 cat /var/opt/gitlab/gitlab-rails/etc/database.yml production: adapter: postgre ...
- java框架之SpringBoot(15)-安全及整合SpringSecurity
SpringSecurity介绍 Spring Security 是针对 Spring 项目的安全框架,也是 Spring Boot 底层安全模块默认的技术选型.它可以实现强大的 Web 安全控制.对 ...
- 第三章 jQuery事件和动画
1.什么是事件:事件指的是用于对网页操作的时候,网页做出的一个回应. 2.JQuery中的事件:JQuery事件是对JavaScript事件的封装,常用事件的分类如下:(1)基础事件:window事件 ...
- Zuul 网关路由
Zuul 网关路由 路由是微服务架构中不可或缺的一部分,例如:/api/user映射到user服务,/api/shop映射到shop服务. Zuul是一个基于JVM的路由和服务端的负载均衡器.Zuul ...
- 微信小程序 地图地址解析
1.微信小程序提供了几个方式,引入地图, wx.getLocation(OBJECT) 获取当前的地理位置.速度.当用户离开小程序后,此接口无法调用:当用户点击“显示在聊天顶部”时,此接口可继续调用 ...
- MySQL数据排序asc、desc
数据排序 asc.desc1.单一字段排序order by 字段名称 作用: 通过哪个或哪些字段进行排序 含义: 排序采用 order by 子句,order by 后面跟上排序字段,排序字段可以放多 ...
- Java并发——Fork/Join框架与ForkJoinPool
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/4631466. ...
- flask 定义数据库关系(多对多)
多对多 我们使用学生和老师来演示多对多关系:每个学生有多个老师,每个老师有多个学生.多对多关系示意图如下: 在实例程序中,Student类表示学生,Teacher类表示老师.在这两个模型之间建立多对多 ...