python pandas 如何找到NaN、缺失值或者某些元素的索引名称以及位置,np.where的使用
2017-08-15 18:40
621 查看
我们在处理数据的时候,经常需要检查数据的质量,也需要知道出问题的数据在哪个位置。我找了很久,也尝试了很多办法,都没能找到一种非常直接的函数,本文所要介绍的是一种我认为比较方便的方法:np.where()
我举个例子
比如你想找到 5 的位置,你想知道它在第几行,第几列
可以看到结果返回了一个元祖tuple,里面有两个元素,都是np.ndarray类型的,第一个是行号,第二个是指明列的位置,所以5 是在第2行,第3列
如果我们想检查数据里面掺杂的缺失值NaN的位置的,同样可以用此方法。
但如果你觉得只知道行号,列号不能满足你的需求,还想知道元素的索引名称
Over
我举个例子
import pandas as pd import numpy as np df = pd.DataFrame(np.arange(12).reshape(4,3), index=list('abcd'), columns=list('xyz')) In [14]:df Out[14]: x y z a 0 1 2 b 3 4 5 c 6 7 8 d 9 10 11
比如你想找到 5 的位置,你想知道它在第几行,第几列
In [16]: np.where(df==5) Out[16]: (array([1], dtype=int64), array([2], dtype=int64))
可以看到结果返回了一个元祖tuple,里面有两个元素,都是np.ndarray类型的,第一个是行号,第二个是指明列的位置,所以5 是在第2行,第3列
如果我们想检查数据里面掺杂的缺失值NaN的位置的,同样可以用此方法。
# 首先我们将df的第一列变成NaN df.x = np.nan df Out[18]: x y z a NaN 1 2 b NaN 4 5 c NaN 7 8 d NaN 10 11 # 然后查查NaN的位置,在写这篇blog的时候我也遇到了一个奇怪的事,上面我用np.nan赋值后,然后用df == np.nan判断,结果很奇怪 In [28]: df == np.nan Out[28]: x y z a False False False b False False False c False False False d False False False # 但是用 numpy 的另一个函数 np.isnan, 却可以判断出nan,具体原因还需要再研究研究 np.isnan(df) Out[25]: x y z a True False False b True False False c True False False d True False False # 因此接我们最初的目的,找出NaN的位置 np.where(np.isnan(df)) Out[32]: (array([0, 1, 2, 3], dtype=int64), array([0, 0, 0, 0], dtype=int64)) np.where(np.isnan(df))[0] # 选出tuple里面的第一个元素,也就是行号 Out[33]: array([0, 1, 2, 3], dtype=int64)
但如果你觉得只知道行号,列号不能满足你的需求,还想知道元素的索引名称
# 我们现在的df是这个样子的 df Out[34]: x y z a NaN 1 2 b NaN 4 5 c NaN 7 8 d NaN 10 11 # 加入你想知道 NaN 所在的索引,列名,只需要在前面加上 df.index, df.columns 即可 In [35]: df.index[np.where(np.isnan(df))[0]] Out[35]: Index(['a', 'b', 'c', 'd'], dtype='object') # df.index 是获取行名称,对应后面的[0]取行号 In [36]: df.columns[np.where(np.isnan(df))[1]] Out[36]: Index(['x', 'x', 'x', 'x'], dtype='object') # df.columns 是获取列名称,对应后面的[1]取列号
Over
相关文章推荐
- Python Pandas找到缺失值的位置方法
- python3.5——Pandas模块使用(下)——缺失值处理和层次索引
- Python Pandas找到缺失值的位置
- 集合框架(四)如何使用以及何时使用HashSet、LinkedHashSet或者TreeSet来存储元素
- PYTHON(DJANGO)使用日记之如何找到linux系统下django的安装路径
- 使用PS切片工具进行切片生成div布局的页面的方法以及如何确定图片中某个点在图片中的位置
- vector如何删除指定索引位置的元素?
- 如何使用JS来改变CSS样式 -- 元素的样式属性名称在CSS和JS中的对照表
- 如何在JS数组特定索引处指定位置插入元素?
- python中删除列表中的空元素以及如何读取excel中的数据
- 再谈css--如何针对不同位置的元素使用不同的风格
- 001_你使用过Objective-C的运行时编程(Runtime Programming)么?如果使用过,你用它做了什么?你还能记得你所使用的相关的头文件或者某些方法的名称吗?
- 关于字符和数字类型的索引,Oracle如何实现内部自动转换以及索引使用的验证测试
- Bitmap 索引 vs. B-tree 索引:如何选择以及何时使用?(归档)
- 如何找到二分查找中目标元素第一次出现和最后一次出现的位置
- Bitmap 索引 vs. B-tree 索引:如何选择以及何时使用?——4-5
- html中锚如何使用(从最低端回到顶端或者中间位置)
- Python:使用Scrapy框架的ImagesPipeline下载图片如何保持原图片名称呢?
- 关于字符和数字类型的索引,Oracle如何实现内部自动转换以及索引使用的验证测试
- 使用js写点击一个事件使页面返回顶部以及控制一个元素在右下角的固定位置的方法