1. 首页 > 录取查询

Python数据预处理基础教程(第二部分)

常见的不规则数据主要包括缺失数据、重复数据和异常数据。在开始正式的数据分析之前,我们需要先对这些不规则的数据进行处理。

一、缺失值的处理

缺失值是指由于某种原因导致部分数据为空。我们一般有两种方式来处理空数据。一是删除,即删除含有缺失值的数据;另一个是填充。即用某个值替换数据缺失的部分。

1.查看缺失值

处理缺失值,首先要找到缺失值,即检查哪些列有缺失值。

(1)Excel实现

在Excel中,我们首先选择一列没有缺失值的数据,看看该列中有多少数据,然后将其他列的计数与该列进行比较。如果该列中的数据个数小于该列中的数据个数,则说明存在缺失值。区别在于缺少数字。

下图中,非缺失值列的数据个数为5,性别列的数据个数为4,即性别列中有1个缺失值。

如果想要查看整个数据表中每一列的缺失数据,则需要逐一选择每一列来判断该列是否存在缺失值。

如果数据不多,想看看是哪个单元格缺失了,可以使用定位条件(按快捷键Ctrl+G,弹出定位条件对话框)来查找。在定位条件对话框中选择空值,点击确定即可选择全部空值,如下图:

通过定位条件选择缺失值的结果如下图所示:

(2)Python实现

在Python中直接调用info()方法会返回每列的缺失值。我们之前使用过info()方法,但是没有说明这个方法可以确定缺失的数据。

Python中的缺失值一般用NaN表示。从info()方法的结果来看,性别列是3个非空对象,说明性别列有3个非空值,而其他列有4个非空值。性别列具有空值。

我们还可以使用isnull() 方法来确定哪个值是缺失值。如果是缺失值,则返回True,如果不是缺失值,则返回False。

2.删除缺失值

缺失值有两种类型。一是某行缺少一个字段;另一种是一行中所有字段都缺失,即为空行。

(1)Excel实现

在Excel中,两种类型的缺失值都可以通过在定位条件对话框(按快捷键Ctrl+G弹出定位条件对话框)对话框中选择空值来查找。

这样,包含缺失值的部分就会被选中,包括特定的单元格和整行。然后单击鼠标右键,在弹出的删除对话框中选择删除整行选项,点击确定按钮即可完成整行删除。删除行。

(2)Python实现

在Python中,我们使用dropna()方法。 dropna() 方法默认删除包含缺失值的行。也就是说,如果一行有缺失值,它将被删除。

运行dropna()方法后,删除包含NaN的行并返回删除的数据。如果要删除空白行,只需向dropna() 方法传递一个参数how=all ,这样只会删除全部为空值的行,而不是全部为空值的行不会被删除已删除。

上表第二行中,只有性别字段有空值,因此使用dropna(how="all")时,并没有删除第二行,而是删除了全为NaN值的第三行。

3. 填写缺失值

上面介绍了缺失值的删除,但是数据是宝贵的。一般情况下,只要缺失数据比例不太高(不大于30%),尽量不要删除,而是选择填充。

(1)Excel实现

在Excel中,填充缺失值与删除缺失值是一样的。它还使用定位条件。首先找到缺失值,然后在第一个缺失值所在的单元格中输入要填充的值。最常用的就是用0填充,输入后按Ctrl+Enter组合键将所有缺失的值填满。

缺失值填充前后对比如下图所示:

年龄用数字填写是合适的,但性别用数字填写是不合适的。那么可以单独填写吗?答案是肯定的,只要选择你想要填充的列,按照填充所有数据的方式进行填充即可。只是需要执行多次操作来填充几列。

上图是填充前后的对比。我们用平均值填充年龄列,用众数填充性别列。

除了用0填充、平均填充、众数填充之外,还有前向填充(即用缺失值的前一个非缺失值进行填充,比如缺失值的前一个非缺失值)上例中数字A3对应的年龄)值为16)、后向填充(对应前向填充)等。

(2)Python实现

在Python中,我们使用fillna()方法来填充数据表中的所有缺失值。只需在fillna后面的括号中输入要填充的值即可。

在Python中,我们还可以按不同的列进行填充,只需在fillna()方法的括号中指定列名即可。

上面的代码中只填充了这一列,其他列没有做任何改变。

您还可以同时使用不同的值填充多个列:

二、重复值处理

重复数据是指同一记录有多个记录。我们通常会删除此类数据。

假设你是一名数据分析师,你的主要工作是分析公司的销售情况。您有该公司2018年8月的销售明细(一条明细总是对应一条交易记录),并且您想查看8月份的整体交易量。多少钱?最简单的方法是查看有多少交易明细。但这里可能存在重复的交易记录,所以必须先删除重复的。

(1)Excel实现

在Excel中,点击菜单栏的数据工具删除重复值即可删除重复数据,如下图:

删除前后对比如下图:

默认情况下,Excel的删除重复值是对所有值进行重复值判断。有四个字段:订单号、客户姓名、唯一识别码(类似于身份证号)、交易时间。 Excel 将判断这四个字段是否相等。仅当它们相等时才会被删除并保留第一个(行)值。

当您了解该公司8 月份的交易明细后,您想查看8 月份总共有多少客户,以及每个客户8 月份第一笔交易的日期。

查看客户数量,只需通过客户唯一识别码去重即可。 Excel 默认选择全部。我们可以取消选择,选择唯一的识别码进行重复数据删除。这样,重要的唯一识别码的重复就会被删除,如下图:

因为Excel默认保留第一条记录,而我们想要得到每个客户较早的交易日期,所以我们需要先将时间按升序排序,让较早的时间排在前面,这样在删除时就会较早的交易日期被保留。

删除前后对比如下图:

(2)Python实现

在Python中,我们使用drop_duplicates()方法,该方法默认对所有值进行重复值判断,并默认保留第一个(行)值。

上面的代码是对所有字段进行重复值判断。我们也可以只对某一列或几列进行重复值删除判断。我们只需要在drop_duplicates()方法中指定要判断的列名即可。

您还可以使用多列来删除重复项。只需要以列表的形式将多个列名传递给参数子集即可。例如,按名称和唯一识别码删除重复项。

您还可以自定义删除重复项时保留哪一个。默认保留第一个,您也可以设置保留最后一个,或者不保留全部。通过传入参数keep来设置。参数keep默认值为first,表示保留第一个值;也可以是last,表示保留最后的值;或者它可以是False,这意味着删除所有重复值。

三、异常值的检测与处理

离群值是指与正常数据相比过高或过低的数据。例如,一个人的年龄为0岁或300岁,这被认为是异常值,因为与实际情况相差太大。

1.异常值检测

处理异常值,首先要检测它们,即找到异常值。查找异常值的主要方法有3种。

根据业务经验划定不同指标的正常范围,超出此范围的值均算作异常值。

通过绘制箱线图,比箱线图上边缘(下边缘)大(小)的点称为异常值

如果数据服从正态分布,可以使用3原理;如果某个值与平均值之间的偏差超过三个标准差,则我们认为该值是异常值。

箱线图如下所示:

下图为正态分布图。我们将大于+3的值称为异常值。

2.异常值处理

处理异常值的方法一般有以下几种:

最常用的处理方式是删除。

将异常值视为缺失值。

将异常值视为特殊情况并研究其发生的原因。

(1)Excel实现

在Excel中,要删除离群值,只需过滤找到离群值对应的行,然后右键单击并选择删除即可。

填充异常值实际上就是替换异常值。另外,先使用过滤功能找出离群值,然后将这些离群值替换为要填充的值。

(2)Python实现

在Python中,删除异常值的方法与Excel中的方法类似。在Python中,通过过滤来删除异常值。比如df表中有一个年龄的指标,想要删除年龄大于200的值,可以过滤掉年龄不大于200的值,过滤掉的部分就是新的删除大于200的值后的表。

填充异常值意味着替换异常值。 Replace() 方法可用于替换特定值。

四、数据类型转换

1. 数据类型

(1)Excel实现

Excel中常用的数据类型是菜单栏数字选项下的数据类型。您可以选择其他数据格式,如下图所示:

在Excel中,只要选择一列,就可以在菜单栏中看到该列的数据类型。

当选择交易时间列时,菜单栏中会显示日期,说明交易时间列的数据类型为日期格式,如下图所示:

(2)Python实现

Pandas 不像Excel 那样详细。它主要有6种数据类型,如下图所示:

在Python中,不仅可以使用info()方法获取每一列的数据类型,还可以使用dtype方法获取某一列的数据类型。

2. 类型转换

我们之前说过,不同的数据类型可以做不同的事情,所以我们需要对数据进行类型转换,将数据转换成我们需要的类型。

(1)Excel实现

如果要更改Excel中某一列的数据类型,只需选择该列,然后通过数字菜单栏中的下拉菜单选择要转换的目标类型即可。

下图是将文本类型数据转换为数字类型数据。数值型数据默认保留两位小数,也可以设置为其他数字。

(2)Python实现

在Python中,我们使用astype()方法来转换数据类型。可以在astype后面的括号中指定要转换的目标类型。

五、索引设置

索引是查找数据的基础。设置索引的目的是为了方便我们查找数据。比如说,你去超市买了很多食材。当你回到家时,你需要把它们放进冰箱里。放入它们的过程实际上是一个索引过程。例如,蔬菜放入冰箱,肉类放入冷冻室。这样,您在搜索时就可以快速找到它们。

1.为非索引表添加索引

有些表没有索引。在这种情况下,您需要为此类表添加索引。

(1)Excel实现

在Excel中,一般都有索引。如果没有索引,数据看起来会很乱。当然,也有例外。数据表没有索引。这时插入一行和一列就是给表添加索引。

添加索引前后对比如下图所示。序号列是行索引,字段名称是列索引。

(2)Python实现

在Python中,如果表没有索引,默认会使用从0开始的自然数作为索引,比如下面:

通过向表df的columns参数传入列索引值,在index参数中传入行索引值,就达到了为非索引表添加索引的目的。具体实现如下:

2.重置索引

重置索引一般是指行索引的设置。有些表虽然有索引,但并不是我们想要的索引。例如,有一个表使用序列号作为行索引,我们想使用订单号作为行索引。如何实现这一目标?

(1)Excel实现

在Excel中重置行索引相对简单。您想使用哪一列作为行索引,只需将此列拖到第一列即可。

(2)Python实现

在Python中,您可以使用set_index()方法来重置索引列。只需在set_index() 中指定要用作行索引的列的名称。

重置索引时,还可以向set_index() 方法传入两个或多个列名。我们将这种使用表中多列的方法称为分层索引。当列包含多个重复值时,通常使用层次索引。分层索引的示例如下,其中a、b、c和d各有多个重复值。

3. 重命名索引

重命名索引就是修改现有的索引名称,即更改字段名称。

(1)Excel实现

Excel中重命名索引比较简单,直接修改字段名即可。

(2)Python实现

在Python中重命名索引,我们使用rename()方法,在重命名后的括号中指定要修改的行索引和列索引名称。

4. 重置索引

重置索引主要用在层次索引表中。重置索引将索引列返回为列。

下图左侧表格中,Z1和Z2为分层索引。重置索引后,两个索引Z1和Z2以列的形式返回,成为两个常规列。

在Python中,使用reset_index()方法。 reset_index()方法常用参数如下:

level参数用于指定将分层索引的哪一层转换为列。第一个索引为0级,第二个索引为1级。默认为所有索引,即所有索引默认都转换为列。

drop参数用于指定是否删除原来的索引,即不将其作为新列使用。默认为False,即不会删除原索引。

inplace参数用于指定是否修改原始数据表。

reset_index()方法经常用于数据分组和数据透视表。

关于Python数据预处理基础教程(第二部分)和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

相关问答

问:Python数据分析入门教程(二):数据预处理 这篇教程讲了什么?
2个回答
北染陌人

答: 这篇文章主要介绍了在 Python 数据分析中数据预处理的重要性以及常用的方法。它涵盖了从数据清洗、转换到特征工程等各个环节,并提供了具体的代码示例和详细的讲解,帮助读者更好地理解和掌握数据预处理技能。

143 人赞同了该回答

孤者何惧

答: 这篇文章旨在为想要学习 Python 数据分析的人提供一个入门指南,通过通俗易懂的语言和案例展示,让读者能够快速掌握数据预处理的基本概念和实践技巧,为后续的机器学习和数据挖掘工作打下坚实的基础。

124 人赞同了该回答

问:Python数据分析入门教程(二):数据清洗是什么意思?
2个回答
作业是老师的私生子

答: 数据清洗是指从原始数据中识别并消除包含错误、重复、缺失或不完整内容的数据。它是一种非常重要的数据预处理步骤,因为不干净的数据会导致分析结果的偏差和误差。

77 人赞同了该回答

娇眉恨

答: 数据清洗包括多种操作,例如去除重复记录、处理缺失值、纠正格式错误等。这篇文章会具体讲解几种常见的 Python 数据清洗方法,并提供示例代码展示如何应用这些方法进行数据清理。

70 人赞同了该回答

问:Python数据分析入门教程(二):特征工程有哪些常用技巧?
2个回答
凝残月

答: 特征工程是指通过对原始数据的加工和转换,创造出更符合算法需要的特征的过程。常用的特征工程技巧包括:数值特征的缩放、标准化、转化成分类特征,以及创建新的特征组合等。

100 人赞同了该回答

我没有爱人i

答: 这篇文章会介绍几种常见的特征工程技巧,并结合实际案例讲解如何运用这些技巧有效提升模型的预测精度。此外,也会分享一些经验和建议,帮助读者在特征工程阶段更明智地选择合适的策略。

238 人赞同了该回答

本文由发布,不代表一本线高考网立场,转载联系作者并注明出处:https://www.yibenxian.com/cha/73731.html

联系我们

在线咨询:点击这里给我发消息

微信号:weixin888

工作日:9:30-18:30,节假日休息