pandas40 数据判断isna,isnull,notna,any,all( tcy)

数据判断:2018/11/8 2019/1/5

1.函数:缺省值判断 

pd.isna(obj) /isnull(obj)   #检测类似数组对象缺失值。
pd.notna(obj) /notnull(obj) #检测类似数组对象非缺失值。

参数:obj:标量或数组
返回:布尔或布尔数组
说明:
    # NA值如None或np.nan,NaT将映射True值。''或np.inf不被视为NA值
    # pandas.options.mode.use_inf_as_na = True#视为na值
    # Series,DataFrame也有此方法;full,notfull是别名 

函数:元素非零判断 

s.all([axis, bool_only, skipna, level]) #判断所有元素都为True(非0)
s.any([axis, bool_only, skipna, level]) #返回任何元素在请求的轴上是否为True
df.all(axis = 0,bool_only = None,skipna = True,level = None,** kwargs )
df.any(axis=0, bool_only=None, skipna=True, level=None, **kwargs)
    # 如系列或Dataframe轴中所有元素都非零,非空或不为假,则返回True。

参数:
axis=0:{0或'index',1或'columns',None},#应减少哪个或哪些轴
   # 0 /'index':减少索引,返回索引为原始列标签的Series
   # 1 /'columns':减少列,返回索引为原始索引的Series
   # None:减少所有轴,返回标量。
skipna=True:排除NA / null值。如整行/列为NA结果为NA。
level=None:int或level name# 如轴是MultiIndex沿级别level计数,折叠为系列
bool_only=None:仅包含布尔列。
   # 如果为None,将尝试使用所有内容,然后仅使用布尔数据。未针对系列实施。
返回:all : 布尔标量,Series或DataFrame(如果指定了级别) 

2.实例1:缺省值判断

# 实例1:标量参数
pd.isna(None)#True

# 实例2:ndarrays数组
array = np.array([[1, np.nan, 3], [4, 5, np.nan]])
pd.isna(array)           #array([[False, True, False],[False, False, True]])

#实例3:索引,返回一个布尔值的ndarray。
index = pd.DatetimeIndex(["2019-07-05", "2019-07-06", None])
b=pd.isna(index)         #array([False, False, True])
type(b)                  #numpy.ndarray

#实例4:序列数据帧
s= pd.Series([1, 2,np.nan,np.inf,''])
df = pd.DataFrame([s.tolist()],columns=list('ABCDE'))

s.isna().tolist()        # [False, False, True, False, False]
df.isna().values.tolist()# [[False, False, True, False, False]]

pd.isna(df1['D'])
df['D'].isna()           # 等价

实例2:非零判断all 

#实例1:系列
pd.Series([True, True]).all() # True
pd.Series([1, 0]).all()       # False

#实例2:DataFrames

# 实例2.1:axis=0默认检查列值是否非零
df = pd.DataFrame({'A': [True, True],'B': [True, False]})
df.all()                #默认检查列值是否非零

#实例2.2:axis='columns'检查行方式值是否都返回True。
df.all(axis='columns')  #检查行值是否非零

#实例2.3:axis=None是否每个值都是True
df.all(axis=None)       # False

# df          df.all()      df.all(axis='columns')
     A    B   A True        0 True
0 True True   B False       1 False
1 True False  dtype: bool   dtype: bool

实例3:非零判断any 

# 实例1:
df.any(axis=None)     # 聚合整个DataFrame #True
pd.DataFrame([]).any()# Series([], dtype: bool)空df是一个空系列

# 实例2:多索引
iterables = [['s1', 's2', 's3', 's4'], ['ss1', 'ss2']]
index=pd.MultiIndex.from_product(iterables, names=['first', 'second'])

df=pd.DataFrame(np.arange(18).reshape(6, 3), index=index[:6], columns=list('ABC'))
df

                A B C
first second
s1  ss1         0 1 2
    ss2         3 4 5
s2  ss1         6 7 8
    ss2         9  10 11
s3  ss1         12 13 14
    ss2         15 16 17

df.any() df.any(level='first') df.any(level='second')

                    A     B    C        A    B    C
A True         first             second
B True         s1 True True True ss1 True True True
C True         s2 True True True ss2 True True True
dtype: bool    s3 True True True

猜你喜欢

转载自blog.csdn.net/tcy23456/article/details/85834380
今日推荐