2021-11-07大数据学习日志——Pandas——Pandas数据清洗

01_缺失值处理

 

学习目标

  • 知道什么是缺失值,为什么会产生缺失值
  • 熟练掌握缺失值处理的方式

1.1 pandas 缺失值 NaN 简介

在实际进行数据处理的过程中,很多数据集都含缺失数据。

缺失数据有多重表现形式

1)数据库中,缺失数据表示为NULL

2)在某些编程语言中用NANone表示

3)缺失值也可能是空字符串''或数值 0

4)在 pandas 中使用 NaN 表示缺失值

  • pandas 中的 NaN 值来自 NumPy 库

  • NumPy 中缺失值有几种表示形式:NaN,NAN,nan,他们都一样

    import numpy as np
    print(np.NaN)
    print(np.NAN)
    print(np.nan)

注意点1:缺失值和其它类型的数据不同,它毫无意义,NaN不等于0,也不等于空字符串

print(np.NaN==True)
print(np.NaN==False)
print(np.NaN==0)
print(np.NaN=='')
print(np.NaN==None)

注意点2:两个NaN也不相等

print(np.NaN==np.NaN)
print(np.NaN==np.nan)
print(np.NaN==np.NAN)
print(np.NAN==np.nan)

pandas 判断是否为缺失值方法

方法 说明
pd.isnull(obj)

pd.isna(obj)
判断 obj 是否为缺失值
pd.notnull(obj)

pd.notna(obj)
判断 obj 不为缺失值
print(pd.isnull(np.NaN))
print(pd.isnull(np.nan))
print(pd.isnull(np.NAN))

print(pd.notnull(np.NaN))
print(pd.notnull(42))

判断 Series 中的元素是否是缺失值

方法 说明
series.isnull() 判断 Series 中的每个元素是否为缺失值,返回一个 bool 序列的 Series 数据
# 创建一个包含缺失值的 Series 数据
series = pd.Series([1, 3, np.NaN, 2, np.NaN, 5])
series

# 判断 Series 中的元素是否为 NaN 值
series.isnull()

# 计算 Series 中 NaN 值的数量
series.isnull().sum()

判断 DataFrame 中的数据是否是缺失值

方法 说明
df.isnull() 判断 DataFrame 中的每个元素是否为缺失值,返回一个 bool 序列的 DataFrame 数据
# 创建一个包含缺失值的 DataFrame 数据
df = pd.DataFrame([
    [1, np.NaN, 3],
    [np.NaN, 2, 1],
    [np.NaN, 3, np.NaN]
], columns=['A', 'B', 'C'])
df

# 判断 DataFrame 中的每个元素是否为缺失值
df.isnull()

# 计算 DataFrame 中每一列的缺失值数量
df.isnull().sum()

 

1.2 加载包含缺失值的数据

缺失值从何而来呢?缺失值的来源有两个

1)原始数据包含缺失值

2)数据整理过程中产生缺失值

加载包含缺失值的数据

1)使用 pandas 加载 survey_visited.csv 数据

# 加载包含缺失值的数据
pd.read_csv('./data/survey_visited.csv')

2)pandas 加载数据时,可以设置keep_default_na=False参数,不显示默认缺失值

# 加载数据时,不显示默认的缺失值,默认缺失值填充为''
pd.read_csv('./data/survey_visited.csv', keep_default_na=False)

3)pandas 加载数据时,也可以设置 na_values 参数,指定加载数据时把什么当做缺失值

# na_values=["DR-3"]:加载数据时,把 'DR-3' 当做缺失值
pd.read_csv('./data/survey_visited.csv', na_values=["DR-3"], keep_default_na=False)

注意:在做数据合并的时候,比如mergejoin等操作时,也可能会产生缺失值,参数用法一致,这里不再赘述

1.3 缺失值处理

1.3.1 加载数据并查看缺失情况

注:本案例使用泰坦尼克生存预测数据 titanic_train.csv,其中Survived字段,代表该名乘客是否获救

1) 加载数据集

(1)加载 titanic_train.csv 数据集

# 加载数据
train = pd.read_csv('./data/titanic_train.csv')
pirnt(train.shape)
trai
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值