数据帧中的每一列(c)都包含一个包含一些极端异常值的值的时间序列,其目标是删除这些值并用它们替换以前看到的值。你知道吗
下面的代码工作得很好,但是速度非常慢,因为我需要对7个不同的列和总共59个数据帧运行这个操作。不管怎样,有没有办法将这个操作矢量化,或者用另一种方法使它更快?你知道吗
用以前看到的值以外的任何值替换异常值实际上不是一种选择,因为这会干扰数据的时间序列性质。你知道吗
for c in df.columns:
if c == "date":
continue
for i in range(len(dfn)):
if dfn[c].iloc[i] > 5*np.mean(dfn[c]):
dfn[c].iloc[i] = dfn[c].iloc[i-1]
end_df = end_df.append(dfn)
异常值删除替代输入示例:
[10, 28, 39, 48193, 14]
异常值删除替换的输出示例:
[10, 28, 39, 39, 14]
您可以根据所需的条件(在本例中是平均值的5倍)过滤数据帧,并替换为
nan
。然后可以使用内置的pandas
函数fillna
来替换前面看到的值。你知道吗您的代码将
相关问题 更多 >
编程相关推荐