Python数据预处理与异常值检测实操指南
【数据预处理】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σ检测方法的思想实际上源自切比雪夫不等式。
而如果总体是总体,则统计量偏离均值的程度可以通过其标准差来反映,因此:
通常,至少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版本以获取最新更新。