Pandas:如何检测数据框中的峰值点(异常值)?

2024-01-25

我有一个带有多个速度值的 pandas 数据框,这些速度值是连续移动的值,但它是传感器数据,因此我们经常在中间的某些点上出现错误,移动平均值似乎也没有帮助,所以我可以使用什么方法用于从数据中删除这些异常值或峰值点?

Example:

data points = {0.5,0.5,0.7,0.6,0.5,0.7,0.5,0.4,0.6,4,0.5,0.5,4,5,6,0.4,0.7,0.8,0.9}

在此数据中,如果我看到点 4、4、5、6 完全是异常值, 在我使用 5 分钟窗框的滚动平均值来平滑这些值之前,但我仍然得到了这些类型的很多尖点,我想将其删除,任何人都可以建议我任何技术来消除这些点。

I have an image which is more clear view of data: enter image description here

如果您在这里看到数据如何显示我必须删除的一些异常点? 有什么想法可以消除这些点吗?


我真的认为 z 分数使用scipy.stats.zscore() https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.zscore.html是去这里的路。查看相关问题这个帖子 https://stackoverflow.com/questions/50904088/deleting-the-same-outliers-in-two-timeseries/50906623#50906623。他们关注的是使用哪种方法before消除潜在的异常值。在我看来,您的挑战要简单一些,因为根据提供的数据判断,识别潜在的异常值将非常简单,而无需转换数据。下面是执行此操作的代码片段。但请记住,什么看起来像异常值,什么看起来不像异常值将完全取决于您的数据集。并且删除后some异常值,以前看起来不像异常值的东西,现在突然变得像异常值。看一看:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from scipy import stats

# your data (as a list)
data = [0.5,0.5,0.7,0.6,0.5,0.7,0.5,0.4,0.6,4,0.5,0.5,4,5,6,0.4,0.7,0.8,0.9]

# initial plot
df1 = pd.DataFrame(data = data)
df1.columns = ['data']
df1.plot(style = 'o')

# Function to identify and remove outliers
def outliers(df, level):

    # 1. temporary dataframe
    df = df1.copy(deep = True)

    # 2. Select a level for a Z-score to identify and remove outliers
    df_Z = df[(np.abs(stats.zscore(df)) < level).all(axis=1)]
    ix_keep = df_Z.index

    # 3. Subset the raw dataframe with the indexes you'd like to keep
    df_keep = df.loc[ix_keep]

    return(df_keep)

原始数据:

测试运行 1:Z 分数 = 4:

如您所见,由于级别设置得太高,没有删除任何数据。

测试运行 2:Z 分数 = 2:

现在我们已经取得进展了。两个异常值已被删除,但仍然存在一些可疑数据。

测试运行 3:Z 分数 = 1.2:

这看起来真的很好。现在剩下的数据似乎比以前分布得更均匀了一些。但现在原始数据点突出显示的数据点开始看起来有点像潜在的异常值。那么该停在哪里呢?这完全取决于你!

编辑:这是简单复制粘贴的全部内容:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from scipy import stats

# your data (as a list)
data = [0.5,0.5,0.7,0.6,0.5,0.7,0.5,0.4,0.6,4,0.5,0.5,4,5,6,0.4,0.7,0.8,0.9]

# initial plot
df1 = pd.DataFrame(data = data)
df1.columns = ['data']
df1.plot(style = 'o')

# Function to identify and remove outliers
def outliers(df, level):

    # 1. temporary dataframe
    df = df1.copy(deep = True)

    # 2. Select a level for a Z-score to identify and remove outliers
    df_Z = df[(np.abs(stats.zscore(df)) < level).all(axis=1)]
    ix_keep = df_Z.index

    # 3. Subset the raw dataframe with the indexes you'd like to keep
    df_keep = df.loc[ix_keep]

    return(df_keep)

# remove outliers
level = 1.2
print("df_clean = outliers(df = df1, level = " + str(level)+')')
df_clean = outliers(df = df1, level = level)

# final plot
df_clean.plot(style = 'o')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas:如何检测数据框中的峰值点(异常值)? 的相关文章

  • python 打开相对文件夹中所有以.txt结尾的文件

    我需要打开并解析文件夹中的所有文件 但我必须使用相对路径 类似于 input files 我知道在 JavaScript 中你可以使用 path 库来解决这个问题 我怎样才能在Python中做到这一点 这样您就可以获得路径中的文件列表作为列
  • 将元组列表转换为字符串 Python

    例如 我用 python 编写了一个返回列表的函数 1 1 2 2 3 3 但我希望输出为字符串 这样我就可以用另一个字符替换逗号 这样输出就是 1 1 2 2 3 3 有什么简单的方法可以解决这个问题吗 感谢您提前提供任何提示 这看起来像
  • Pandas cut 方法不包括下限

    我正在尝试对包含 0 到 100 范围内的年龄的数据帧列进行分箱 当我尝试使用垃圾箱来包含零年龄时 它不起作用 这是一个使用包含我的数据范围的列表的演示 pd cut pd Series range 101 0 24 49 74 100 范
  • PRAW 出现 SSLError?

    我正在尝试开始使用 PRAW 但在使用 login 时遇到问题 我有以下代码 import praw r praw Reddit This is a test bot r login myRedditUsername password 我收
  • Python 将 0 计算为 False

    在 Python 控制台中 gt gt gt a 0 gt gt gt if a print L gt gt gt a 1 gt gt gt if a print L L gt gt gt a 2 gt gt gt if a print L
  • Python服务器“通常只允许每个套接字地址使用一次”

    我正在尝试用 python 创建一个非常基本的服务器 它侦听端口 当客户端尝试连接时创建 TCP 连接 接收数据 发回某些内容 然后再次侦听 并无限期地重复该过程 这是我到目前为止所拥有的 from socket import server
  • Python textwrap.wrap 导致 \n 问题

    所以我只是重新格式化了一堆代码以合并textwrap wrap 却发现我所有的 n都消失了 这是一个例子 from textwrap import wrap def wrapAndPrint msg width 25 wrap msg to
  • 如何在Python中比较列表列表中的元素以及比较列表列表中的键?

    我有以下顺序 seq ATG ATG ATG ATG GAC GAT GAA CCT GCC GCG GCA GCT 这是一个字典键 用于存储每个密码子的氨基酸值 三联碱基 例如ATG GCT etc aminoacid TTT F TTC
  • Tensorflow:Cuda 计算能力 3.0。所需的最低 Cuda 能力为 3.5

    我正在从源安装tensorflow 文档 https www tensorflow org versions r0 10 get started os setup html installing from sources Cuda驱动版本
  • 使用 rpy2 将 NULL 从 Python 转换为 R

    在 R 中经常NULL值用作默认值 使用 Python 和 RPy2 如何显式提供NULL争论 None不可兑换 NotImplementedError 字符串 NULL 只会被转换为字符串 并在执行过程中导致错误 采取以下示例 使用tsi
  • 即使使用标头和 Session 对象,Python requests.get 也会失败并出现 403 禁止

    我正在发出 GET 请求来获取 JSON 它在任何设备上的任何浏览器中都可以正常工作 但不能通过 python 请求 url https angel co autocomplete new tags params query sci tag
  • Kivy错误(python 2.7):sdl2导入错误

    我尝试在我的 Python 2 7 项目 在 PyCharm Windows 10 环境中 上使用 kivy 但出现以下错误 如果有人可以帮助我吗 谢谢 PS 我多次尝试卸载 重新安装库等 并按照像这样的帖子上的建议进行操作 但它不起作用
  • 更改 Windows 上的 virtualenv 文件夹

    计算机修复后 我的 python 项目目录 Windows 发生了变化 比如从 d 到 f 现在我所有的 virtualenv 都坏了 激活 env 后 virtualenv 中的项目无法找到依赖项 并且自定义脚本 来自 env scrip
  • 有什么理由不在Python中混合使用多处理和线程模块

    我正在考虑使用Python来实现一个需要大量多线程的程序 另一个要求是它将在桌面上运行 因此拥有许多进程将使应用程序显得混乱且难以杀死 在任务管理器中 因此 我正在考虑使用线程和多处理模块来减少进程数量 据我了解 GIL 仅适用于单个进程
  • pygame.image.load 不工作

    我正在尝试为游戏创建世界地图 但是当我尝试将世界地图加载到屏幕上时 命令行告诉我无法执行此操作 这是代码 import sys import pygame from pygame locals import pygame init Surf
  • Python 柯里化任意数量的变量

    我正在尝试使用柯里化在 Python 中进行简单的函数添加 我找到了这个咖喱装饰器here https gist github com JulienPalard 021f1c7332507d6a494b def curry func def
  • 编写 CherryPy 装饰器以进行授权

    我有一个cherrypy应用程序 在某些视图上我想开始只允许某些用户查看它们 并将其他任何人发送到需要授权的页面 有没有办法使用自定义装饰器来做到这一点 我认为这将是最优雅的选择 这是我想做的一个基本示例 class MyApp autho
  • 添加条件计数器:基于其他列的值的计数器列

    我有一张这样的桌子 id id2 val a red apple a red orange b blue fish c violet beef a yellow banana a black pork 我想根据 id 和 id2 的值创建一
  • Django Python - LDAP 身份验证

    我目前正在研究 Django Python 我的目标是从 Ldap 目录对用户进行身份验证 我确实有 python 代码来访问 ldap 目录并检索信息 Code import ldap try l ldap open ldap forum
  • 我收到错误:rest_framework.request.WrappedAttributeError:'CSRFCheck'对象没有属性'process_request'

    urls py from django conf urls import url from django contrib import admin from django conf import settings from django c

随机推荐

  • 如何在弹出控制器中设置带有标题的导航栏[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何在弹出控制器中设置带有标题的导航栏 我想要详细的解释 请帮帮我 提前致谢 SomeViewController popContentV
  • 在 Google Cloud Bigtable 中填充数据需要很长时间

    我使用以下代码将数据填充到 Bigtable 中 CloudBigtableScanConfiguration config new CloudBigtableScanConfiguration Builder withConfigurat
  • 在 postgresql 中更新返回订单

    我有一个查询更新表中的行 我希望查询更新行并返回受影响的行 目前我有 UPDATE employees SET name John RETURNING employees 这很好用 但是 如果我想按指定顺序返回受影响的行该怎么办 就像是 U
  • 如何在经典 ASP 上进行参数化 SQL 查询?

    有人可以向我展示在 VBscript 中使用经典 ASP 执行参数化 SQL 查询的最简单方法吗 最好有一个可编译的例子 使用 adodb command 对象 with createobject adodb command activeC
  • c3p0 日志记录不起作用

    我没有得到 c3p0 日志记录 我的log4j 属性文件如下 log4j logger org hibernate INFO hb log4j logger org hibernate SQL DEBUG log4j logger org
  • Angular 6.0 firebase 托管部署不起作用

    我正在寻找有关如何正确设置的教程firebase tools托管我的 Angular 6 0 项目 我发现总是这样 firebase init then select the Hosting What do you want to use
  • 如何从 iPhone 应用程序中更改显示的 UIKeyboard 的语言?

    在我的 iPhone 应用程序中 我想更改显示的 UIKeyboard 的语言 我怎样才能做到这一点 来自iPhone 应用程序编程指南 http developer apple com iphone library documentati
  • 无法让 Netbeans 调试器适用于 python

    乌班图9 10 网豆 6 7 1 每当我启动调试器时 它都会崩溃并出现以下错误 我已将项目属性设置为正确的 python 版本 尽管它的设置似乎没有任何区别 我还注意到 PythonConsole 窗口报告 Python 2 5 0 正在运
  • 网络提供商停止提供更新

    我注意到我的应用程序很少 每隔几天 就会停止接收新的位置更新 位置侦听器已向网络和 GPS 提供商注册 GPS 提供商已关闭 因此任何位置更新均来自网络提供商 每隔几天左右 我就会注意到该位置很旧并且没有更新 从我的调试日志中 我可以看到位
  • 如何在不调用 setter 注入的情况下丰富 StructureMap 中的对象组合?

    我正在尝试构建一个实现IHttpControllerActivator与 StructureMap 的接口 这样我就可以解决控制器的依赖关系 该控制器依赖于HttpRequestMessage正在 MVC Web API 管道中进行处理 我
  • 如何在 Bash 中编写奇特的缩进多行大括号扩展?

    我正在处理这样的一行 mkdir p DEST ROOT PATH DEST DIR1 DEST DIR2 DEST DIRN 这条线相当长 我想对其进行切割 使其宽度适合 80 列的线 我试图用反斜杠转义行尾 但空格对齐破坏了扩展 ech
  • 如何从 Codepen 获取代码并在本地使用?

    如何从 codepen 获取代码 并在本地文本编辑器中使用它 http codepen io mfields pen BhILt http codepen io mfields pen BhILt 我试图在本地玩这个创作 但是当我在 Chr
  • SFML 未静态链接到 openal32(静态链接到所有其他依赖项)

    我使用 CMake for MinGW 编译了 SFML 运行 mingw32 make install 后 一切都已构建并安装 没有错误 但运行示例时 pong exe sound exe sound capture exe 和 voip
  • 检测距离集合视图中心最近的集合视图单元

    怀疑我在下面做了一些根本错误的事情 我有一个水平集合视图 拖动后我想将最近的单元格捕捉到中心 但我的结果是不可预测的 我在这里做错了什么 func scrollViewDidEndDragging scrollView UIScrollVi
  • 在 React 中将函数作为 useEffect 的依赖项传递的用例

    我开始学习 React 并发现了代码片段 其中函数作为 useEffect 中的依赖数组传递 我想知道此类函数作为依赖项传递的用例以及为什么我们需要将该函数作为依赖项传递 第一 这仅在以下情况下才有意义 useEffect回调使用该函数 所
  • 如何在输入时设置输入框文本的格式

    在 html 输入框中输入数字时如何格式化该数字 例如 我想输入数字 2000 当我输入第四位数字时 文本 当前显示在文本框中 将自动格式化为 2 000 带逗号 my modified code based on Moob answer
  • Spacy 中有二字母组和三字母组功能吗?

    下面的代码将句子分成单独的标记 输出如下 cloud computing is benefiting major manufacturing companies import en core web sm nlp en core web s
  • Android 增长堆 - 我应该担心吗?

    我读过一些关于应用程序在前端时 保留 16MB 内存的内容 至少 作为一名开发人员 我应该依靠这一点 尽管根据设备的不同 它可能会更多 我支持低至 2 2 froyo 所以很多设备都不会是高端设备 我在 Logcat 中收到一些消息说 03
  • 将数据添加到 socket.io 对象

    我有一个与上一个问题类似的问题 将数据添加到 socket io 套接字对象 https stackoverflow com questions 17351881 adding data to a socket io socket obje
  • Pandas:如何检测数据框中的峰值点(异常值)?

    我有一个带有多个速度值的 pandas 数据框 这些速度值是连续移动的值 但它是传感器数据 因此我们经常在中间的某些点上出现错误 移动平均值似乎也没有帮助 所以我可以使用什么方法用于从数据中删除这些异常值或峰值点 Example data