问一下大家 数据分析时 异常值有2种类型

第一种是无意义的值 比如统计年龄时出现了负数 第二种是离群值 去除异常值时应该先除去前者还是先除去后者?

在数据分析时,通常需要先除去无意义的值,再去除离群值。这是因为无意义的值会对数据分布造成极大的影响,可能会导致错误的统计结果。而离群值则可能反映出数据中的特殊情况,例如异常事件、特殊人群等,应该先了解其背景和原因,再考虑是否去除。

以您举的例子来说,出现负数的年龄很可能是数据采集或输入时出现的问题,对于数据分析来说是无意义的值,应该先进行清理。而对于离群值,比如某些年龄明显偏高或偏低,可能是特殊人群(如百岁老人或幼儿)的数据,或者是输入误差等原因导致的异常值,需要进一步了解其背景和原因后再考虑是否去除。

在清理异常值时,可以使用一些统计方法,例如均值、中位数、标准差等来判断和筛选异常值。同时,应该注意保留足够的样本量,避免过分清理导致数据失真。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7699081
  • 这篇博客你也可以参考下:梯度下降算法主要通过哪两个控制因子实现最优参数选择?这两个因子分别起到什么作用?为什么计算损失函数最优值采用梯度下降算法而不是直接对损失函数求导数等于0时的最优解?如何判断梯度下降算法是否正确工作?
  • 除此之外, 这篇博客: 2021年软件测试必看的2大知识点:如何转自动化测试?学习软件测试好还是开发好?中的 一、软件测试如何从功能测试转成自动化测试? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    其实,不能孤立的对待自动化测试,更不要简单的理解,引入自动化测试一定可以提升团队的工作效率,减少成本问题。

    在做自动化测试之前,要思考三个问题:

    • 问:①什么时候介入自动化测试更好?
    • 答:其实,项目一开始是不适合直接介入自动化测试的,因为用户的界面,接口等还没有稳定下来,在这个时间段,代码会频繁的改动,维护的成本也比较高;而一个项目到了后期或者是维护的阶段,介入自动化测试,为回归测试做好准备
    • 问:②项目的自动化率和自动化程度
    • 答:虽然项目的一开始并不适合直接介入自动化测试,不过,还是有一些比较稳定的环节,比方说,环境的搭建,软件的部署,稳定的公用接口等等,当然啦,还是要结合具体的项目去分析,灵活的分析应用。
    • 问:③所有的项目都可以用自动化测试?
    • 答:不!虽然自动化测试有很多好处,但是并非所有的项目都适合自动化测试,那么,什么样的项目适合自动化测试呢?比如压力测试,覆盖率测试,以及第一条提到的,以回归测试为主的项目,需要长期的维护

    虽然说自动化测试做的好,可以省掉很多成本(时间,精力,人力等等)的,但是有很多人把节省成本当成目的,这样对于一个项目来说,是非常致命的。

    那么,软件测试从业人员如何提升自己的技能,从功能测试转成自动化测试

    按照软件测试的学习大纲,我总结了一份针对0基础的小白视频教程,已经上传到我的测试交流群310357728,由易到难,非常全面,目前还在持续更新ing,需要的童鞋可以自行领取。

    ①学习一门编程语言,再接触自动化测试工具

    学习编程语言,无论是学习python还是Java,都是可以的,但是从学习的难易程度上,可以先学python(比较好上手),再学Java,在学习的过程当中,不要把自己当成一个从事软件测试的人员,而是当成开发,系统的去进行学习编程语言,可以说,语言水平的高低,也决定了自动化测试水平的高低

    ②先打好基础,而不是只学习自动化测试工具

    磨刀不误砍柴工,先了解掌握http协议,在学习fiddler、soapUI、loadrunner等工具,先理解HTML,才会理解firebug~

    不要一上来就是我学了工具就行了!

    ③给自己定下明确的目标

    很多人越学习越迷茫,为什么呢?不知道该怎么学习,觉得自己这里那里都存在欠缺的地方。

    那么,在学习之前,先弄清楚自己,自己目前的定位,即对自己的各项能力进行评估,之后就是如何学习,比如可以投入哪些时间?有多少精力?有多少资金?哪些问题自己可以通过自学搞定?又有哪些问题需要请教别人?自己计划什么时候学好?

    ④选择好一个方向或者说切入点

    我们知道自动化测试又分为接口自动化,app自动化,web自动化,辅助测试脚本,我的建议是先选择一门语言(比如python,Java),然后从接口自动化测试开始着手,之后在学习app自动化,web自动化

    接口自动化:

    Python+Unittest+HtmlTestRuner+Jenkins和Java+Httpclient+TestNG+Jenkins

    web自动化:

    Python+Webdrver+HtmlTestRunner+Jenkins,Java+Webdriver+TestNG+Jenkins

    App自动化:

    Robotium+Java+TestNG+Jenkins,Appium+Java+TestNG+Jenkins,Appium+Python+HtmlTestRunner

    ·辅助测试脚本:以Shell,Python为主来简化重复的工作,过滤日志等

    ⑤不要贪多,学会活学活用,把理论知识变成为项目实际操作

    很多人一开始就贪多,觉得自己什么都要学,什么都要学好,这样的学习是无效的,也比较容易囫囵吞枣,没有学进去,甚至造成混淆等等问题。

    另外,一定要把所学的理论知识用上,边学习边拿项目练手,这样不仅可以更快的学习,同时也能提升自己工作经验和项目经验

    ⑥不要以为学习了自动化测试工具,就等于掌握了自动化测试

  • 您还可以看一下 Abel小智老师的嵌入式开发系统学习路线 从基础到项目 精品教程 工程师必备课程 物联网课程中的 如何使用回调函数?小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    答案:

    如何处理数据分析中的异常值?

    在处理异常值时,首先应该去除无意义的异常值,例如负数年龄等。接下来处理离群值:

    1. 检查数据收集和输入错误:异常值可能是由人为或交通意外事故等原因造成的,要仔细检查数据的来源和收集方式。

    2. 采用简单的替换方法:用缺失值、平均值、中位数、最近邻等替换异常数据。

    3. 使用聚类分析、回归分析、离群值分析或箱线图等高级技术来检测和处理异常值。

    针对离群值,以下是一些常用方法:

    1. 3σ原则:认为任何距离平均值3倍标准差之外的值都是异常值。
    import numpy as np
    
    data = np.random.normal(loc=0, scale=1, size=100) #生成正态分布数据
    mean = np.mean(data) #计算均值
    std = np.std(data, ddof=1) #计算标准差
    low = mean - 3 * std #下限
    high = mean + 3 * std #上限
    outliers = [x for x in data if x < low or x > high] #计算离群值
    
    1. 箱型图法:将数据按照大小排序,然后画出箱型图,箱子之外的点即为离群值。
    import matplotlib.pyplot as plt
    
    fig, ax = plt.subplots()
    result = ax.boxplot(data)
    outliers = [flier.get_ydata() for flier in result["fliers"]] #计算离群值
    
    1. DBSCAN:一种聚类分析的算法,将数据点分为核心点、边界点和噪声点,噪声点即为离群值。
    from sklearn.cluster import DBSCAN
    
    dbscan = DBSCAN(eps=1, min_samples=3)
    dbscan.fit(data.reshape(-1, 1))
    outliers = data[dbscan.labels_ == -1] #计算离群值
    
    1. Isolation Forest:利用非线性分离随机数据的能力,构建一颗随机的决策树,来判断该值是否为离群值。
    from sklearn.ensemble import IsolationForest
    
    isoforest = IsolationForest(n_estimators=100, contamination=0.01)
    isoforest.fit(data.reshape(-1, 1))
    outliers = data[isoforest.predict(data.reshape(-1, 1)) == -1] #计算离群值
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^