Pandas数据分析 - 缺失值判断 - isnull()等 用法

numpy用isnan()检查是否存在NaN(Not a Number)。

pandas用.isna()或者.isnull()检查是否存在NaN。

判断缺失值:data.isna() / data.isnull(); data.notna()/ data.notnull()

填充缺失值:data.fillna(value=" ")

删除缺失值:data.dropna()

import numpy as np
import pandas as pd
df=pd.DataFrame(np.ones([5,2]),columns=['col1','col2'])
df['col3']=['a','b','a',np.nan,np.nan]
df['col4']=[3,2,3,np.nan,2]
df=df.reindex(columns=['col3','col4','col1','col2'])  #将新增的一列排在第一列
df


col3	col4	col1	col2
0	a	3.0	1.0	1.0
1	b	2.0	1.0	1.0
2	a	3.0	1.0	1.0
3	NaN	NaN	1.0	1.0
4	NaN	2.0	1.0	1.0
# 元素级别的判断,把对应的所有元素的位置都列出来,元素为空或者NA就显示True,否则就是False
pd.isna(df)/df.isna()


	col3	col4	col1	col2
0	False	False	False	False
1	False	False	False	False
2	False	False	False	False
3	True	True	False	False
4	True	False	False	False



pd.isnull(df)/df.isnull()


	col3	col4	col1	col2
0	False	False	False	False
1	False	False	False	False
2	False	False	False	False
3	True	True	False	False
4	True	False	False	False
pd.notna(df)/df.notna()



col3	col4	col1	col2
0	True	True	True	True
1	True	True	True	True
2	True	True	True	True
3	False	False	True	True
4	False	True	True	True


pd.notnull(df)/df.notnull()


	col3	col4	col1	col2
0	True	True	True	True
1	True	True	True	True
2	True	True	True	True
3	False	False	True	True
4	False	True	True	True
df.isnull().sum()


col3    2
col4    1
col1    0
col2    0
dtype: int64
# 列级别的判断,只要该列有为空或者NA的元素,就为True,否则False
df.isnull().any()

col3     True
col4     True
col1    False
col2    False
dtype: bool



# 将为空或者NA的列找出来
df.columns[df.isnull().any()].tolist()

['col3', 'col4']



#设定参数选择筛选掉全部为NA的行
df.dropna(how='all')

	col3	col4	col1	col2
0	a	3.0	1.0	1.0
1	b	2.0	1.0	1.0
2	a	3.0	1.0	1.0
3	NaN	NaN	1.0	1.0
4	NaN	2.0	1.0	1.0


#也可以按列对缺失进行筛选
df.dropna(how='all',axis=1)

	col3	col4	col1	col2
0	a	3.0	1.0	1.0
1	b	2.0	1.0	1.0
2	a	3.0	1.0	1.0
3	NaN	NaN	1.0	1.0
4	NaN	2.0	1.0	1.0
df.isnull().values


array([[False, False, False, False],
       [False, False, False, False],
       [False, False, False, False],
       [ True,  True, False, False],
       [ True, False, False, False]])


# 可以只显示存在缺失值的行列,清楚的确定缺失值的位置。
df[df.isnull().values==True]


	col3	col4	col1	col2
3	NaN	NaN	1.0	1.0
3	NaN	NaN	1.0	1.0
4	NaN	2.0	1.0	1.0
# 数值型 -> 平均值,文本数据 -> NaN
df['col4'] = round(df['col4'].fillna(value=df['col4'].mean()), 2) 
df


col3	col4	col1	col2
0	a	3.0	1.0	1.0
1	b	2.0	1.0	1.0
2	a	3.0	1.0	1.0
3	NaN	2.5	1.0	1.0
4	NaN	2.0	1.0	1.0
df.dropna()


col3	col4	col1	col2
0	a	3.0	1.0	1.0
1	b	2.0	1.0	1.0
2	a	3.0	1.0	1.0

你可能感兴趣的:(python,数据分析,python,pandas)