pandas:处理缺失值——缺失值的判断、缺失值填充

在实际应用中对于数据进行分析的时候,经常能看见缺失值,下面来介绍一下如何利用pandas来处理缺失值。常见的缺失值处理方式有,过滤、填充。

缺失值的判断

pandas使用浮点值NaN(Not a Number)表示浮点数和非浮点数组中的缺失值,同时python内置None值也会被当作是缺失值。
在这里插入图片描述

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

函数作用:删除含有空值的行或列

  • axis:维度,axis=0表示index行,axis=1表示columns列,默认为0

  • how:"all"表示这一行或列中的元素全部缺失(为nan)才删除这一行或列,"any"表示这一行或列中只要有元素缺失,就删除这一行或列

  • thresh:一行或一列中至少出现了thresh个才删除。

  • subset:在某些列的子集中选择出现了缺失值的列删除,不在子集中的含有缺失值得列或行不会删除(有axis决定是行还是列)

  • inplace:刷选过缺失值得新数据是存为副本还是直接在原数据上进行修改。

默认参数:删除行,只要有空值就会删除,不替换。

df = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'],
                   "toy": [np.nan, 'Batmobile', 'Bullwhip'],
                   "born": [pd.NaT, pd.Timestamp("1940-04-25"), pd.NaT]})

# print(df)
'''
       name        toy       born
0    Alfred        NaN        NaT
1    Batman  Batmobile 1940-04-25
2  Catwoman   Bullwhip        NaT
'''

print(df.dropna())
'''
     name        toy       born
1  Batman  Batmobile 1940-04-25
'''

print(df)
'''
       name        toy       born
0    Alfred        NaN        NaT
1    Batman  Batmobile 1940-04-25
2  Catwoman   Bullwhip        NaT
'''


#delete colums
print(df.dropna(axis=1) )#delete co
'''
       name
0    Alfred
1    Batman
2  Catwoman
'''

#"所有值全为缺失值才删除"
print(df.dropna(how='all'))
'''
       name        toy       born
0    Alfred        NaN        NaT
1    Batman  Batmobile 1940-04-25
2  Catwoman   Bullwhip        NaT
'''

#"至少出现过两个缺失值才删除"
print(df.dropna(thresh=2))
'''
       name        toy       born
1    Batman  Batmobile 1940-04-25
2  Catwoman   Bullwhip        NaT
'''

#"删除这个subset中的含有缺失值的行或列"
print (df.dropna(subset=['name', 'born']))
'''
     name        toy       born
1  Batman  Batmobile 1940-04-25
'''

DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)

函数作用:填充缺失值

  • value:需要用什么值去填充缺失值

  • axis:确定填充维度,从行开始或是从列开始

  • method:ffill:用缺失值前面的一个值代替缺失值,如果axis =1,那么就是横向的前面的值替换后面的缺失值,如果axis=0,那么则是上面的值替换下面的缺失值。backfill/bfill,缺失值后面的一个值代替前面的缺失值。注意这个参数不能与value同时出现

  • limit:确定填充的个数,如果limit=2,则只填充两个缺失值。


df = pd.DataFrame([[np.nan, 2, np.nan, 0],
                   [3, 4, np.nan, 1],
                   [np.nan, np.nan, np.nan, 5],
                   [np.nan, 3, np.nan, 4]],
                  columns=list('ABCD'))

print(df)
'''
     A    B   C  D
0  NaN  2.0 NaN  0
1  3.0  4.0 NaN  1
2  NaN  NaN NaN  5
3  NaN  3.0 NaN  4
'''

#"横向用缺失值前面的值替换缺失值"
print(df.fillna(axis=1, method='ffill'))
'''
     A    B    C    D
0  NaN  2.0  2.0  0.0
1  3.0  4.0  4.0  1.0
2  NaN  NaN  NaN  5.0
3  NaN  3.0  3.0  4.0
'''


#"纵向用缺失值上面的值替换缺失值"
print(df.fillna(axis=0,method='ffill'))
'''
     A    B   C  D
0  NaN  2.0 NaN  0
1  3.0  4.0 NaN  1
2  3.0  4.0 NaN  5
3  3.0  3.0 NaN  4
'''

print(df.fillna(0))
'''
     A    B    C  D
0  0.0  2.0  0.0  0
1  3.0  4.0  0.0  1
2  0.0  0.0  0.0  5
3  0.0  3.0  0.0  4
'''

不同的列用不同的值填充:,可以通过一个字典用fillna,实现对不同的列填充不同的值

#不同的列用不同的值填充:

values={'A':0,'B':1,'C':2,'D':3}
print(df.fillna(value=values))
'''
     A    B    C  D
0  0.0  2.0  2.0  0
1  3.0  4.0  2.0  1
2  0.0  1.0  2.0  5
3  0.0  3.0  2.0  4
'''

对每列出现的替换值有次数限制,此处限制为一次

values={'A':0,'B':1,'C':2,'D':3}
print(df.fillna(value=values,limit=1))
'''
     A    B    C  D
0  0.0  2.0  2.0  0
1  3.0  4.0  NaN  1
2  NaN  1.0  NaN  5
3  NaN  3.0  NaN  4
'''

DataFrame.isna()

判断是不是缺失值:
在这里插入图片描述
isnull同上。

替换空值:

df = pd.DataFrame([[np.nan, 2, np.nan, 0],
                   [3, 4, "", 1],
                   [np.nan, np.nan, np.nan, 5],
                   [np.nan, 3, "", 4]],
                  columns=list('ABCD'))

print(df)
'''
     A    B    C  D
0  NaN  2.0  NaN  0
1  3.0  4.0       1
2  NaN  NaN  NaN  5
3  NaN  3.0       4
'''

如上,缺失值是NAN,空值是没有显示。

替换空值代码:需要把含有空值的那一列提出来单独处理,然后在放进去就好。

clean_z = df['C'].fillna(0)
clean_z[clean_z==''] = 'hello'
df['C'] = clean_z
print(df)
'''
     A    B      C  D
0  NaN  2.0      0  0
1  3.0  4.0  hello  1
2  NaN  NaN      0  5
3  NaN  3.0  hello  4
'''
  • 4
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pandas处理审计缺失值可以通过以下几个步骤来完成: 1. 导入pandas库:首先需要导入pandas库,可以使用以下代码实现: ```python import pandas as pd ``` 2. 读取数据:使用pandas的`read_csv()`函数或其他适用的函数读取审计数据文件,并将其存储为一个DataFrame对象。例如: ```python df = pd.read_csv('audit_data.csv') ``` 3. 检查缺失值:使用`isnull()`函数检查DataFrame中的缺失值。该函数返回一个布尔类型的DataFrame,其中缺失值为True,非缺失值为False。例如: ```python missing_values = df.isnull() ``` 4. 统计缺失值数量:使用`sum()`函数对每一列的缺失值进行求和,可以得到每一列缺失值的数量。例如: ```python missing_count = df.isnull().sum() ``` 5. 处理缺失值:根据具体情况选择合适的方法来处理缺失值。常见的处理方法包括: - 删除缺失值:使用`dropna()`函数删除包含缺失值的行或列。例如: ```python df.dropna() # 删除包含缺失值的行 df.dropna(axis=1) # 删除包含缺失值的列 ``` - 填充缺失值:使用`fillna()`函数填充缺失值。可以使用均值、中位数、众数等方法进行填充。例如: ```python df.fillna(df.mean()) # 使用均值填充缺失值 df.fillna(df.median()) # 使用中位数填充缺失值 df.fillna(df.mode().iloc[0]) # 使用众数填充缺失值 ``` 6. 检查处理结果:再次使用`isnull()`函数检查处理后的DataFrame是否还存在缺失值,以确保缺失值已经被处理

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值