python - 如果数据类型是“时间戳”,我们可以过滤掉 z-score <-3 或 >3 的记录吗?
问题描述
我正在尝试用 z-score +- 3 踢出任何/所有记录。我正在测试下面的代码。
from scipy import stats
import numpy as np
z = np.abs(stats.zscore(df))
print(z)
# detect and remove outliers
df_filtered = df
[(z < 3).all(axis=1)]
该任务应该非常简单,但如果数据框中有带有时间戳的字段,显然事情会被抛出。这行代码会引发错误。
z = np.abs(stats.zscore(df))
错误:
TypeError: unsupported operand type(s) for +: 'Timestamp' and 'Timestamp'
数据是这样的:datetime64[ns]
这是这个特定数据的一个小样本。
0 2021-01-16 06:10:11
1 2021-01-16 06:10:11
2 2021-01-16 06:10:11
3 2021-01-16 06:10:11
4 2021-01-16 06:10:11
5 2021-01-16 06:10:11
我只是在寻找一种基本解决方案来同时测试数据框中的所有字段。如果这不可能,我可以更改代码以仅查看 4 个字段,特别是具有时间戳作为数据类型的字段。关于如何进行的任何想法?
解决方案
推荐阅读
- python - 是否可以通过 doctest 测试使用 get_type_hints 的函数?
- c# - C# - 如何在 Linq 中执行 SUM() / SUM()
- c++ - 你能安全地在 Lua CFunction 中弹出函数参数吗?
- automated-tests - 空手道; 单个场景中的多个 url
- google-cloud-dataflow - 如何使用 Apache Beam Python SDK 在两组 json 存储桶上执行“差异”?
- r - 如何修复“FUN中的错误(X [[i]],...):运算符'<-'未实现”在R中
- c# - azure 服务总线的 Azure Function App 延迟重试
- r - 如何洗牌表示为R中总和的函数的一部分?
- java - 向注册表中的环境添加多个值并在 Java 应用程序中检索
- php - 使用php在一段时间后动态更改网站背景