【编程实践】Joyful-Pandas(下)Task01(第六章):缺失数据
缺失数据和文本数据(尤其是混杂性文本)是数据预处理中比较麻烦的类型,本章节聚焦于缺失数据。
Nullable类型和String类型可能在未来成为Pandas的主流数据类型。
Datawhale学习要求
理论部分
- 理解Nullable类型与NA符号
- 掌握缺失值的填充与剔除
- 掌握常见缺失值插值方法
练习部分
- 两道缺失数据练习题
Nullable类型与NA符号
Pandas 1.0之前的版本:三种缺失符号
缺失符号 | np.nan | None | np.NaT |
---|---|---|---|
类型 | float64 | Nonetype | pandas._libs.tslibs.nattype.NaTType |
equal的时候是否会包括在内 | 不包括 | 包括 | 不包括 |
某列出现该值的类型 | 1.数值型,布尔型统一转换为float64;2.字符型统一转换为O(object类型) | 1.None传入数值型自动变换为np.nan;None传入时间型变量自动变换为np.NaT;2.None传入布尔类型,不改变原布尔列表;3.None传入字符型为NoneType | 时间型变量类型不改变 |
** Pandas 1.0之后的版本:Nullable类型与NA符号**
官方鼓励用户使用新的数据类型和缺失类型pd.NA
缺失数据的运算与分组
加号与乘号规则
- 使用加法时,缺失值为0
- 使用乘法时,缺失值为1
- 使用累计函数时,缺失值自动略过
groupby方法中的缺失值
- 自动忽略为缺失值的组
填充与剔除
- fillna方法
- dropna方法
插值(interpolation)
- 线性插值
- 高级插值方法:样条插值、多项式插值、阿基玛插值等
- 限制参数
问题
问题一:如何删除缺失值占比超过25%的列?
//
import pandas as pd
import numpy as np
# 创建一个有不同缺失情况的dataframe对象
df_d = pd.DataFrame({
'A':[np.nan,np.nan,np.nan,np.nan,np.nan,np.nan],'B':[np.nan,np.nan,np.nan,np.nan,np.nan,2],'C':[np.nan,np.nan,np.nan,np.nan,2,1],'D':[np.nan,np.nan,np.nan,3,2,1],'E':[np.nan,np.nan,4,3,2,1],'F':[np.nan,5,4,3,2,