找回密码
 会员注册
查看: 27|回复: 0

pythonpandas数据清洗(三):Z-Score方法识别异常值

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
68585
发表于 2024-9-5 00:42:44 | 显示全部楼层 |阅读模式
上文介绍了数据清洗的方法,箱线图分析,本文继续介绍另一种数据清洗的方法:Z-Score。Z-Score方法就是一种常用的基于标准差来识别异常值的技术。什么是Z-Score?Z-Score,又称为标准分数,是统计学中用于表示一个值与数据集均值之间的偏差程度的一种度量。具体而言,Z-Score是一个观测值减去均值后,再除以标准差的结果。Z-Score可以告诉我们这个观测值在标准正态分布中处于什么位置。数学表达式如下:[Z=\frac{(X-\mu)}{\sigma}]其中:(X)表示单个观测值,(\mu)表示观测值所在样本的均值,(\sigma)表示样本的标准差。如何使用Z-Score识别异常值?Z-Score方法通常用来识别那些距离均值太远的点,即那些在正态分布中属于尾部的观测值。一般认为,如果一个数据点的Z-Score超过一定的阈值(通常是3或-3),则可以将其视为异常值。这是因为,在标准正态分布中,大约99.7%的数据点会落在均值加减3个标准差的范围内。例如,如果一个数据点的Z-Score是4,这意味着这个点比均值高出了4个标准差,这在正态分布中是非常罕见的事件,因此这个数据点很可能是一个异常值。应用示例假设我们有一个数据集,我们首先计算数据集的均值和标准差。然后,我们对数据集中的每一个观测值计算其Z-Score。接下来,我们将Z-Score的绝对值与一个预设的阈值进行比较,比如3,如果Z-Score的绝对值大于3,则将该观测值标记为异常值。在Python中,可以使用Pandas和SciPy库来执行Z-Score方法:importpandasaspdimportnumpyasnpfromscipyimportstatsimportmatplotlib.pyplotasplt#创建一个示例数据集np.random.seed(0)#设置随机种子以获得可重复的结果sales_data=np.random.normal(loc=100,scale=20,size=1000)#生成1000个服从正态分布的销售数据点sales_data=np.append(sales_data,[1000,-200])#添加两个异常值#将数据转换为DataFramedf_sales=pd.DataFrame(sales_data,columns=['Sales'])#计算Z-Scorez_scores=stats.zscore(df_sales['Sales'])#设定阈值,通常情况下,|Z|>3表示异常值threshold=3#标记异常值outliers=np.where(np.abs(z_scores)>threshold)#打印异常值print("Originaloutliers:")print(df_sales.iloc[outliers])#删除异常值df_cleaned=df_sales[(np.abs(z_scores)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-5 08:41 , Processed in 0.527327 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表