我们在处理数据的时候,经常需要检查数据的质量,也需要知道出问题的数据在哪个位置。我找了很久,也尝试了很多办法,都没能找到一种非常直接的函数,本文所要介绍的是一种我认为比较方便的方法:np.where()


我举个例子

import pandas as pd
import numpy as npdf = 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

比如你想找到 5 的位置,你想知道它在第几行,第几列

In [16]: np.where(df==5)
Out[16]: (array([1], dtype=int64), array([2], dtype=int64))
  • 1
  • 2

可以看到结果返回了一个元祖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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

但如果你觉得只知道行号,列号不能满足你的需求,还想知道元素的索引名称

# 我们现在的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]取列号
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

Over

python pandas 如何找到NaN、缺失值或者某些元素的索引名称以及位置,np.where的使用相关推荐

  1. python pandas DataFrame 替换 NaN 值 和 删除 NaN 所在的行。

    python pandas DataFrame 替换 NaN 值 和 删除 NaN 所在的行. import pandas as pd import numpy as np df1 = pd.Data ...

  2. python pandas DataFrame 查找NaN所在的位置

    python pandas DataFrame 查找 NaN 所在的位置 import pandas as pd import numpy as np df1 = pd.DataFrame({'日期' ...

  3. pandas使用rename函数自定义重命名dataframe指定索引标签(位置)的名称(customize rename index value or label)

    pandas使用rename函数自定义重命名dataframe指定索引标签(位置)的名称(customize rename index value or label) 目录

  4. python pandas dropna 删除空值/缺失值(DataFrame)

    文章目录 一.函数参数 二.例子详解 2.1 载入库 2.2 构建一个DataFrame 2.3 默认参数 2.4 axis 2.5 how 2.6 thresh 2.7 subset 一.函数参数 ...

  5. Python基础教程:获取list中指定元素的索引

    在平时开发过程中,经常遇到需要在数据中获取特定的元素的信息,如到达目的地最近的车站,橱窗里面最贵的物品等等.怎么办?看下面 方法一: 利用数组自身的特性 list.index(target), 其中a ...

  6. python pandas 讲解ppt_Python数据分析之pandas基本功能讲解

    pandas的基本功能 重新索引 不存在的索引都用同一个值填充: obj.reindex(['a','b','c','d','e'],fill_value=0) out: a -5.3 b 7.2 C ...

  7. python - Pandas基础

    pandas 简介 基于numpy的工具 高效提供了大量库和一些标准的数据模型 相当于Numpy的一维数组,但是与普通的一维数组不同,Series支持对数据的自定义标签也就是index(索引),通过索 ...

  8. python字符串替换空格_python - 用pandas中的NaN替换空白值(空格)

    python - 用pandas中的NaN替换空白值(空格) 我想在Pandas数据帧中找到包含空格(任意数量)的所有值,并用NaN替换这些值. 有什么想法可以改进吗? 基本上我想转此: A B C ...

  9. pandas用众数填充缺失值_7步搞定数据清洗-Python数据清洗指南

    脏数据就是在物理上临时存在过,但在逻辑上不存在的数据. 数据清洗是整个数据分析过程的第一步,就像做一道菜之前需要先择菜洗菜一样.数据分析师经常需要花费大量的时间来清洗数据或者转换格式,这个工作甚至会占 ...

最新文章

  1. Kostya Keygen#2分析
  2. mySQL_connect怎么调用_Mysql ConnectC/C++使用
  3. C#流对象使用完后不立即释放的问题
  4. Vmware Vsphere虚拟化技术:6.7新特性介绍
  5. html图片上加水印,css给图片添加水印
  6. P NP NPC(1)(转载)
  7. 多线程之NSThread
  8. ASP.NET中 Bin,App_Browser,App_code,App_Data,App_Theme 等文件
  9. iis mysql端口修改_如何处理IIS和Apache之间经常端口冲突
  10. Ubuntu配置机顶盒踩坑记录(Airplay/DLNA/UPuP/Miracast)
  11. Basler相机开发流程
  12. C语言编程之一个最优美的图案
  13. 自动锁定计算机快捷键,电脑自动锁屏的快捷键是什么
  14. JQuery使用及基础原理解析相关笔记(一)
  15. 汉字转拼音(不带音调)
  16. 实现运动目标检测(opencv3)(一)
  17. php字符串去空格函数,php去掉字符串中的空格
  18. c语言 数字翻译成英文,100数字翻译成英语?
  19. tplink无线网卡的linux,Ubuntu 13.10 使用 TP-LINK TL-WN725N v2.0
  20. win10快速关机_WIN10系统几种方便快速的关机方式

热门文章

  1. 107. Binary Tree Level Order Traversal II
  2. 难忘的一天——装操作系统(三)
  3. 【机器学习】RNN循环神经网络
  4. 先验概率,后验概率,条件概率,贝叶斯
  5. 处理器解决物联网和人工智能的融合
  6. Python:爬虫框架Scrapy的安装与基本使用
  7. Java 反射 (快速了解反射)
  8. android支付宝调用
  9. Execution failed for task ':app:mergeDebugResources'.
  10. 上三角矩阵的特征值分解