缺失数据

第6章 缺失数据

1.缺失观测及其类型

1.1 缺失信息
1.2 三种缺失符号
1.3 Nullable类型与NA符号
1.4 NA特性
1.5 convert_dtypes方法
2.缺失数据的处理(运算与分组)
2.1 加乘累计
2.2 groupby方法中的缺失值
3.填充与剔除
3.1 fillna方法(填充)
3.2 dropna方法(剔除)
4.插值
4.1线性插值
4.2高级插值

import pandas as pd
import numpy as np
df = pd.read_csv('data/table_missing.csv')

1.缺失观测及其类型

1.1 缺失信息

# 返回布尔代数
df['Physics'].isna()
df['Physics'].notna()
# DataFrame使用会返回布尔表
df.isna()
# 缺失值统计
df.isna().sum()
# 缺失信息
df.info()

1.2 三种缺失符号

  1. np.nan
    不等于任何东西,包括自己,为什么np.nan会不等于自己,如果等于自己的,不利于统计,例如要统计相等的值。
    np.nan在numpy中为浮点型,数据集读取时,只要有缺失值,就会是浮点型。
pd.Series([1,np.nan,3]).dtype
#np.nan导致series中包含浮点型,所以series整体浮点型

对于布尔类型的列表,如果是np.nan填充,那么它的值会自动变为True而不是False。

pd.Series([1,np.nan,0],dtype='bool')
#dtype=bool将浮点型的np.nan转换为bull

但当修改一个布尔列表时,会改变列表类型,而不是赋值为True

s = pd.Series([True,False],dtype='bool')
s[1]=np.nan
s
#np.nan将bool型的series强制转换为浮点型

在所有的表格读取后,无论列是存放什么类型的数据,默认的缺失值全为np.nan类型
因此整型列转为浮点;而字符由于无法转化为浮点,因此只能归并为object类型(‘O’),原来是浮点型的则类型不变

在这里插入图片描述

  1. None
    None等于自身,布尔值为False,修改布尔值不会改变数据类型,在传入数值类型后,会自动变为np.nan。
  2. NaT
    NaT是针对时间序列的缺失值,是Pandas的内置类型,可以完全看做时序版本的np.nan,与自己不等,且使用equals是也会被跳过

1.3 Nullable类型与NA符号
(a)Nullable整型Int
(b)Nullable布尔boolean
(c)string类型

1.4 NA的特性
(a)逻辑运算
只需看该逻辑运算的结果是否依赖pd.NA的取值,如果依赖,则结果还是NA,如果不依赖,则直接计算结果
(b)算术运算和比较运算
这里只需记住除了下面两类情况,其他结果都是NA即可

pd.NA ** 0
1 ** pd.NA

1.5 convert_dtypes方法
读取数据时,就把数据列转为Nullable类型

2 缺失数据的运算与分组

2.1 加号与乘号规则
使用加法时,缺失值为0
使用乘法时,缺失值为1
使用累计函数时,缺失值自动略过

s.pct_change()
# DataFrame.pct_change(periods=1, fill_method=‘pad’, limit=None, freq=None, **kwargs)
# 表示当前元素与先前元素的相差百分比,当然指定periods=n,表示当前元素与先前n 个元素的相差百分比。

2.2 groupby方法中的缺失值
自动忽略为缺失值的组

3.填充与剔除

3.1 fillna方法
(a)值填充与前后向填充(分别与ffill方法和bfill方法等价)
(b)填充中的对齐特性
3.2 dropna方法
(a)axis参数:表示按行或列进行剔除。
(b)how参数:可以选all或者any,表示全为缺失去除和存在缺失去除。
(c)subset参数:在某一组列范围中搜索缺失值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值