Python数据预处理与异常值检测实操指南

创始人
2024-12-31 08:03:58
0 次浏览
0 评论

【数据预处理】Python数据预处理常见操作

在Python数据预处理中,常见的操作包括查看、转换、清理、获取和连接数据。
首先,我们可以通过查看数据的维度、形状、列名、索引以及各种统计信息来初步了解数据。
例如,使用“data.shape”查看行数和列数,使用“data.info()”检查缺失值,使用“data.describe()”分析数据数值的分布和异常值。
要查看数据的前/尾,可以使用“data.head(10)”和“data.tail(10)”,而“data.columns.tolist()”显示列标签。
数据转换包括调整索引、列名以及处理日期和时间格式。
例如,通过data.set_index('date',inplace=True)'设置日期作为索引,或者使用pd.to_datetime()一次返回一个字符串。
此外,您还可以根据需要提取年、月、日等信息,或者根据条件生成新的列。
数据清理是关键步骤,涉及识别和处理异常值、重复值和缺失值。
通过箱线图或3σ原则找到异常值,并选择删除、填充或变换它们。
重复值通过data.duplicates()和data.drop_duplicates()处理,缺失值通过data.isnull()检查并使用fillna()填充。
检索数据时,您可以使用标签或位置索引来选择特定的行和列,或根据条件过滤数据。
数据连接方法包括基于索引的join()、基于列的join()和沿行或列连接的concat()。
最后,数据预处理还包括聚类,例如计算平均值、最大值或对每个聚类应用自定义函数。
列表推导式用于根据条件执行各种操作,例如计算大于2的值的平方或根据特定模式生成True/False值。

如何检测业务数据中的异常

处理离群值

离群值被定义为与平均值的偏差超过标准的两倍,但脏数据不仅仅包含这种类型的离群值:

1)例如,如果你打开一列数据,看到它是由数字组成的,那么如果你把它感知为数值,那就是一个错误,那么你就要仔细查找原因。
最常见的是,一列数字中混有一些奇怪的字符串或符号和其他元素,如果数万条数据中只有一两个这样的符号。
如果仔细观察的话,很难发现浪费了大量的时间,效率极低。

还有一种常见情况:看似数字,实际上是字符串形式,但在表格中查看时,字符串引号却看不到;这两种情况可以通过查看函数类型来提前发现。
dtypes(),它们使用的对象有差异,大家可以自己搞清楚;

2)几种常用的异常值检测方法:

3σ检测方法

3σ检测方法的思想实际上源自切比雪夫不等式。

0有:

而如果总体是总体,则统计量偏离均值的程度可以通过其标准差来反映,因此:

通常,至少3/4(或75%)的数据位于平均值的2个标准差之内。

所有数据中至少8/9(或88.9%)在平均值的3个标准差以内。

所有数据中至少24/25(或96%)在平均值的5个标准差之内。

所以,如果我们一般将离散值超过三个的数据称为异常值。
这种方法在实际应用中使用起来非常方便,但只适用于单一属性的情况。

z-score

Z-score是一种在一维或低维特征空间中检测参数异常的方法。
该方法假设数据是高斯分布的,并且离群值代表数据点分布的尾部,因此远离数据的平均值。
距离取决于归一化点数zi的设定阈值Zthr,计算公式为:

其中xi是数据点,μ是所有点xi的平均值,δ是数据点xi的平均值。
所有点。
xi标准差。
然后,归一化后,离群值也被归一化,并且它们的绝对值大于Zthr:

Zthr值通常设置为2.5、3.0和3.5。
此方法是使用KNIME工作流程中的“行过滤器”节点实现的。

此类排放处理必须结合最终要求来决定如何处理。
通常不处理或按缺失值法处理。
异常值有时具有非常明显的指标,例如在现金借贷行业,异常值中的坏账水平远高于整体坏账水平或其他区间的坏账水平。
保存并用作决策阈值的参考值

IQR

观察图表或计算IQR(InterQuartileRange)以获得数据分布的第一和第四四分位数。
离群值位于四分位数范围内的点。

这个方法非常简单,只需对数据进行排序即可。
显然这太笼统了,但在现实场景中,观察图表仍然是研究数据分布的好方法。

毕竟,所有复杂的研究都是从一开始的简单研究一步步得到的!

用PyOD工具库进行「异常检测」

异常检测作为一种重要的数据挖掘方法,主要用于发现与正态数据分布不符的异常值,如信用卡欺诈检测、网络入侵检测等,具有广泛的商业应用价值。
在机器学习中,它可以用作预处理工具,防止异常值影响模型训练和预测。
今天要介绍的Python工具库PyOD是异常检测领域备受期待的工​​具。
自2018年发布以来,已获得超过30万次下载和2,500个GitHubstar,跻身数据挖掘工具库前八名,其论文已发表在著名期刊JMLR上并用于各种学术研究。
在之前的文章中,我分享过PyOD的应用,例如《数据挖掘中常见的异常检测算法》。
由于PyOD文档和示例都是英文的,为了方便用户,我专门写了一份中文指南,欢迎大家自由转载。
PyOD包含约20种异常检测算法,涵盖广泛的选项,并配备数据可视化和结果评估功能。
它的安装和使用非常简单,例如通过pip命令`pipinstallpyod`并参考示例文件夹中的lof_example.py来学习API。
PyODAPI设计类似于sklearn中的聚类分析,只需要输入X数据(无监督学习不需要标签)进行“训练”。
启动检测器后,通过“clf.decision_scores”获取异常分数,并通过“clf.labels_”分配异常标签。
下面是一个简单的示例,展示了如何使用PyOD进行异常检测:PyOD界面直观且易于使用,只需几行代码即可实现。
获得输出后,可以进一步评估或可视化分类结果。
另外,还有很多权威的教程可以学习,比如PyOD官方指南和相关网站。
开发团队的计划包括添加更多功能并提供异常检测资源的汇编。
总的来说,PyOD是一个活跃且功能丰富的工具,值得尝试和关注。
请务必关注GitHub版本以获取最新更新。
热门文章
1
Python中的format()方法:字... formatformat在python中的含义2222.22E+00Format...

2
Python编程入门:全面解析Pytho... python的基本语法基本的Python语法如下:1.变量的定义。在编程语言中,...

3
Python字符串大小写转换方法全解析 python中字母的大小写转换怎么实现?在Python中,大小写转换由内置函数处...

4
Python字典:轻松获取最小值键与计算... python在一个字典里,返回值最小元素对应的键,救解在Python字典中,如果...

5
Python字符串去重空格:strip(... Python去除字符串中空格(删除指定字符)的3种方法在Python编程中,处理...

6
Python数组元素数量计算技巧分享 Python输出数组有多少个元素?简介:在本文中,首席CTO笔记将向您介绍Pyt...

7
简述python中pass的作用 pass语句的作用在许多编程语言中,包括Python;PASS语句用于在代码块中...

8
Python def 关键字详解:函数定... def是什么意思编程?戴夫是什么意思?def是Python中的函数定义关键字,用...

9
python不区分大小写的方法 Python字符串不区分大小写在Python中,字符串操作默认区分大小写。但有时...

10
Python字典操作全解析:添加、修改、... Pythondict字典基本操作(包括添加、修改、删除键...