python - 从数据框中删除不遵循平均趋势的行
问题描述
我正在尝试从延迟“平滑路线”的 GPS 坐标数据框中删除值。
一条平稳的路线是所有值都超出总体趋势范围的路线。
我希望它简单而不使用其他大包(例如scipy
)。`
一个问题是前几个值可能不正确,因此无法使用。数据框可以是任何大小,从几个点到几千个不等。我相信使用较小的数据集会更困难。
最小的例子:
import pandas as pd
df = pd.DataFrame({'a': {0: 52.1, 1: 5.2, 2: 5.3, 3: 5.2, 4: 5.4, 5: 0.0, 6: 5.2}, 'b': {0: 3.0, 1: 3.0, 2: 3.0, 3: 0.0, 4: 46.0, 5: 3.1, 6: 3.2}})
>>> df
a b
0 52.1 3.0
1 5.2 3.0
2 5.3 3.0
3 5.2 0.0
4 5.4 46.0
5 0.0 3.1
6 5.2 3.2
期望的输出:
>>> df
a b
1 5.2 3.0
2 5.3 3.0
6 5.2 3.2
我尝试过使用 z-score,但这并不总是适用于所有用例,因为数据中的微小变化不会被拾取。
解决方案
考虑删除顶部和底部 10 个分位数:
>>> df[(df>=df.quantile(0.10)) & (df<=df.quantile(0.90))].dropna()
a b
1 5.2 3.0
2 5.3 3.0
6 5.2 3.2
您可以根据需要为较大的数据集调整分位数。
推荐阅读
- fortran - Mac更新后编译umfpack时出错
- php - 如何在 Carbon php 中使用自定义格式?
- javascript - 类型错误:setEmail 不是函数
- node.js - 为什么这个 discord.js 批量角色删除代码停止工作?
- python - 如何在不影响“自我”的情况下传递参数
- c# - 在 C# Windowsform 中从数据库中设置数据时设置 datagridview 复选框值
- python - 将日志文件转义为 json 字符串,以便在使用 Python 的 REST 调用中使用
- android - 在 ViewPager Android 中添加超过 2 个不同的视图
- r - 嵌套在 R 中的 for 循环
- java - 延迟加载的集合在junit中为空