python pandas 如何找到NaN、缺失值或者某些元素的索引名称以及位置,np.where的使用
生活随笔
收集整理的這篇文章主要介紹了
python pandas 如何找到NaN、缺失值或者某些元素的索引名称以及位置,np.where的使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
我們在處理數(shù)據(jù)的時候,經(jīng)常需要檢查數(shù)據(jù)的質(zhì)量,也需要知道出問題的數(shù)據(jù)在哪個位置。我找了很久,也嘗試了很多辦法,都沒能找到一種非常直接的函數(shù),本文所要介紹的是一種我認(rèn)為比較方便的方法: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
可以看到結(jié)果返回了一個元祖tuple,里面有兩個元素,都是np.ndarray類型的,第一個是行號,第二個是指明列的位置,所以5 是在第2行,第3列
如果我們想檢查數(shù)據(jù)里面摻雜的缺失值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判斷,結(jié)果很奇怪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 的另一個函數(shù) 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
但如果你覺得只知道行號,列號不能滿足你的需求,還想知道元素的索引名稱
# 我們現(xiàn)在的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 是獲取行名稱,對應(yīng)后面的[0]取行號In [36]: df.columns[np.where(np.isnan(df))[1]]
Out[36]: Index(['x', 'x', 'x', 'x'], dtype='object')
# df.columns 是獲取列名稱,對應(yīng)后面的[1]取列號- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
Over
總結(jié)
以上是生活随笔為你收集整理的python pandas 如何找到NaN、缺失值或者某些元素的索引名称以及位置,np.where的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 余弦相似和内积的意义? 区别
- 下一篇: RuntimeError: Assert