Pandas-缺失数据

缺失数据

本章学习关于缺失数据的处理,具体包括缺失观测及其类型、缺失数据的运算与分组、填充与剔除、插值。

缺失观测及其类型

了解缺失信息

可以使用isna和notna来了解缺失信息,对series使用会返回布尔列表,对DateFrame使用会返回布尔表。

三种缺失符号

1、np.nan,它不等于任何东西,在numpy中的类型是浮点。
2、None,会等于它本身。
3、NaT,是针对时间序列的缺失值。

缺失数据的运算与分组

加法与乘法运算规则

1、使用加法时,视为0。
2、使用乘法时,视为1。
3、使用累计函数时,缺失值会自动跳过。

groupby中的缺失值

groupby方法会自动忽略为缺失值的组。

缺失数据的填充与剔除

填充

值填充:fillna方法
前向填充:ffill方法
后向填充:backfill方法

剔除

dropna方法。
1、涉及到的参数:axis=0: 删除包含缺失值的行;axis=1: 删除包含缺失值的列。how=‘all’,删除全为缺失值的行或列,how=‘any’,删除存在缺失值的行或列。axis和how参数结合使用。
2、可以使用subset参数在某一组列范围内寻找缺失值。

插值

线性插值

1、与索引无关的插值可直接用interploate方法来实现。
2、与索引有关的插值:method中的index和time选项可以使插值线性依赖索引。

高级插值

高级插值是运用多项式插值、样条插值等方法。

练习

练习一

(a)请以列类型读入数据,并选出C为缺失值的⾏。

df=pd.read_csv('pandas_data/Missing_data_one.csv').convert_dtypes()
df.head()
df.dtypes
#选出C为缺失值的行
df[df['C'].isna()]

在这里插入图片描述
在这里插入图片描述
(b)现需将A中的部分单元转为缺失值,单元格中的最小转换概率为25%,且概率⼤小与所在⾏B列单元的值成正比。

df = pd.read_csv('pandas_data/Missing_data_one.csv').convert_dtypes()
total_b = df['B'].sum()
min_b = df['B'].min()
df['A'] = pd.Series(list(zip(df['A'].values
                    ,df['B'].values))).apply(lambda x:x[0] if np.random.rand()>0.25*x[1]/min_b else np.nan)
df.head()

在这里插入图片描述

练习二

df1=pd.read_csv('pandas_data/Missing_data_two.csv')
df1.head()

在这里插入图片描述
(a)统计各列缺失的比例并选出在后三列中至少有两个非缺失值的行。

df1.isna().sum()/df1.shape[0]
#shape[0]读取行数,shape[1]读取列数

在这里插入图片描述

#后三列中至少有两个非缺失值的行(最多有一个缺失值的行)
df2 = df1[df1.iloc[:,-3:].isna().sum(1)<=1] #iloc通过索引行、列号来取行数据
df2.head()

在这里插入图片描述
(b)请结合身高列和地区列中的数据,对体重列进行合理插值。
思路:先根据地区分组,在各个地区内根据身高对体重进行线性插值。

df_method_1 = df1.copy()
for name,group in df_method_1.groupby('地区'):
    df_method_1.loc[group.index,'体重'] = group[['身高','体重']].sort_values(by='身高').interpolate()['体重']
df_method_1['体重'] = df_method_1['体重'].round(decimals=2)
df_method_1.head()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值