Python—关于Pandas缺失值问题(国内唯一)

获取文中的CSV文件用于代码编程以及文章首发地址,请点击下方超链接

获取CSV,用于编程调试请点这

在本文中,我们将使用Python的Pandas库逐步完成许多不同的数据清理任务。具体而言,我们将重点关注可能是最大的数据清理任务,即 缺少值。

缺失值的来源

在深入研究代码之前,了解丢失数据的来源很重要。这是数据丢失的一些典型原因:

用户忘记填写字段。

从旧版数据库手动传输时,数据丢失。

发生编程错误。

用户选择不填写字段。

其中一些来源只是简单的随机错误。在其他时候,可能会有更深层的原因导致数据丢失。

准备工作

在开始清理数据集之前,最好先大致了解一下数据。

有哪些功能?

预期的类型是什么(int,float,string,boolean)?

是否有明显的缺失数据(熊猫可以检测到的值)?

是否还有其他类型的丢失数据不太明显(无法通过Pandas轻松检测到)?

了说明我的意思,让我们开始研究示例。

我们要使用的数据是非常小的房地产数据集。获取CSV文件。你可以单击此处获取,以便可以进行编码。

在这里插入图片描述

快速浏览一下数据:

快速了解数据的一种好方法是查看前几行。在Pandas中,你要编写以下代码:

# Importing libraries import pandas as pd import numpy as np # Read csv file into a pandas dataframe df = pd.read_csv("property data.csv") # Take a look at the first few rows print df.head() Out: ST_NUM ST_NAME OWN_OCCUPIED NUM_BEDROOMS 0 104.0 PUTNAM Y 3.0 1 197.0 LEXINGTON N 3.0 2 NaN LEXINGTON N 3.0 3 201.0 BERKELEY NaN 1.0 4 203.0 BERKELEY Y 3.0

我知道我说过我们将使用Pandas,但是可以看到我也使用了Numpy。稍后我们将使用它来重命名一些缺失的值。

导入库后,我们将csv文件读取到Pandas数据框中。

使用该方法,我们可以轻松看到前几行。(使用.head()方法)

从列名称中推断出以下字符组非常容易:

ST_NUM: 街道号码

ST_NAME: 街道名称

OWN_OCCUPIED:住所所有人是否被占用

NUM_BEDROOMS:卧室数

我们还可以进行设置,获取的数据类型是啥?

ST_NUM:float或int…某种数字类型

ST_NAME: 细绳

OWN_OCCUPIED:字符串…Y(“是”)或N(“否”)

NUM_BEDROOMS:float或int,数字类型

标准缺失值

“标准缺失值”是什么意思?这些是Pandas可以检测到的缺失值。

回到我们的原始数据集,让我们看一下“ ST_NUM”列。

在这里插入图片描述

第三列中有一个空单元格。在第七行中,有一个“ NA”值。

显然,这些都是缺失值。让我们看看Pandas如何处理这些问题

# 查看ST_NUM列 print df['ST_NUM'] print df['ST_NUM'].isnull() # 查看ST_NUM列 Out: 0 104.0 1 197.0 2 NaN 3 201.0 4 203.0 5 207.0 6 NaN 7 213.0 8 215.0 Out: 0 False 1 False 2 True 3 False 4 False 5 False 6 True 7 False 8 False

看一下该列,我们可以看到Pandas在空白处填充了“ NA”。使用该方法,我们可以确认缺失值和“ NA”都被识别为缺失值。两个布尔响应均为。isnull() 和True

这是一个简单的示例,但强调了一个重点。Pandas会将空单元格和“ NA”类型都识别为缺失值。 下面,我将介绍一些Pandas无法识别的类型。

非标准缺失值

有时可能是缺少具有不同格式的值的情况。

让我们看一下“Number of Bedrooms”一栏,了解我的意思。

在这里插入图片描述

在此列中,有四个缺失值。

n/a

NA

na

从上面中,我们知道Pandas会将“ NA”识别为缺失值,但其他的情况呢?让我们来看看。

# 看NUM_BEDROOMS这一栏 print df['NUM_BEDROOMS'] print df['NUM_BEDROOMS'].isnull() Out: 0 3 1 3 2 n/a 3 1 4 3 5 NaN 6 2 7 -- 8 na Out: 0 False 1 False 2 False 3 False 4 False 5 True 6 False 7 False 8 False

就像以前一样,Pandas认为“ NA”是缺失的价值。不幸的是,其他类型未被识别。

如果有多个用户手动输入数据,则这是一个常见问题。也许我喜欢使用“ n / a”,但是其他人喜欢使用“ na”。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdwjj.html