PyPackage01---Pandas17_null、inf筛选

判断数据集是否存在null、inf,快速定位所在列、行,方便分析原因

无穷大、无穷小处理

import pandas as pd
import numpy as np

# Create dataframe using dictionary
data = {'Student ID': [10, 11, 12, 13, 14], 'Age': [
    23, 22, 24, 22, np.nan], 'Weight': [66, 72, np.inf, 68, -np.inf]}

df = pd.DataFrame(data)
df
Student ID Age Weight
0 10 23.0 66.0
1 11 22.0 72.0
2 12 24.0 inf
3 13 22.0 68.0
4 14 NaN -inf

是否存在inf

这里null也是非finite的

d = np.isfinite(df)
display(d)
Student ID Age Weight
0 True True True
1 True True True
2 True True False
3 True True True
4 True False False

都是有限数据

np.all(np.isfinite(df))
False

存在有限数据

np.any(np.isfinite(df))
True

定位行列

定位所在列

np.isfinite(df).sum()
Student ID    5
Age           4
Weight        3
dtype: int64
np.isfinite(df).all()
Student ID     True
Age           False
Weight        False
dtype: bool

定位所在行

np.isfinite(df).T.all()
0     True
1     True
2    False
3     True
4    False
dtype: bool
df[list(np.isfinite(df).all()[np.isfinite(df).all() == False].index)].loc[list(
    np.isfinite(df).T.all()[np.isfinite(df).T.all() == False].index), :]
Age Weight
2 24.0 inf
4 NaN -inf

这样找到无穷大值所在的行列,颇为麻烦

na值处理

df.isna().sum()
Student ID    0
Age           1
Weight        0
dtype: int64
df.isnull().sum()
Student ID    0
Age           1
Weight        0
dtype: int64

同样处理逻辑,直接看代码

np.isnan(df)
Student ID Age Weight
0 False False False
1 False False False
2 False False False
3 False False False
4 False True False
df[list(np.isnan(df).any()[np.isnan(df).any() == True].index)].loc[list(
    np.isnan(df).T.any()[np.isnan(df).T.any() == True].index), :]
Age
4 NaN

                                2023-07-26 阴 于南京市江宁区

你可能感兴趣的:(★★★Python,#,★★Python,Package,pandas)