【pandas】空数据处理

数据清洗是对一些没有用的数据进行处理的过程。

很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况,如果要使数据分析更加准确,就需要对这些没有用的数据进行处理。


数据准备

import pandas as pd

data = pd.read_csv(r'../input/pandas/property-data.csv')
data

在这里插入图片描述


1、判断空值 .isna()

data.isna()

在这里插入图片描述
对比可以看出:Pandas 把 NaN 当作空数据,na 和 – 不是空数据

在这里插入图片描述
我们可以在读取数据的时候,指定哪些属于空数据

data = pd.read_csv('../input/pandas/property-data.csv', na_values = ["NaN", "na", "--"])
data.isna()

在这里插入图片描述

#  统计每个特征的空值的数量,再按照空值数量降序排列
data.isna().sum().sort_values(ascending=False)

在这里插入图片描述


2、空值删除 .dropna()

如果我们要删除包含空字段的行,可以使用 dropna() 方法,语法格式如下

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

参数说明:

  • axis:默认为 0,表示逢空值剔除整行,如果设置参数 axis=1 表示逢空值去掉整列。
  • how:默认为 ‘any’ ,如果一行(或一列)里任何一个数据有出现 NA 就去掉整行,如果设置 how=‘all’ , 一行(或列)都是 NA 才去掉这整行。
  • thresh:设置需要多少非空值的数据才可以保留下来的。
  • subset:设置想要检查的列。如果是多个列,可以使用列名的 list 作为参数。
  • inplace:如果设置 True,将计算得到的值直接覆盖之前的值并返回 None,修改的是源数据。

假设我们要删掉 ‘ST_NUM’ 和 ‘NUM_BEDROOMS’ 中有空值的行, 并且直接在原数据里面删 ( inplace=True )

data.dropna(subset=['ST_NUM', 'NUM_BEDROOMS'], inplace=True)
data

在这里插入图片描述


3、空值替换 .dropna()

data['NUM_BEDROOMS'].fillna('0.0', inplace = True)
data

在这里插入图片描述

除了直接指定常数替换,常用的替换空单元格的方法是计算列的均值(mean:所有值加起来的平均值)中位数值(median 排序后排在中间的数)众数(mode 出现频率最高的数)

1) 用平均值填充

x = data["ST_NUM"].mean()
data["ST_NUM"].fillna(x, inplace = True)
data

在这里插入图片描述

2) 用中位数填充

```python
x = data["ST_NUM"].median()
data["ST_NUM"].fillna(x, inplace = True)
data

在这里插入图片描述

3) 用众数填充

x = data["ST_NUM"].mode()
data["ST_NUM"].fillna(x, inplace = True)
data

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Enzo 想砸电脑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值