1 / 8
文档名称:

三种使用python进行数据异常值预处理方法对比.docx

格式:docx   大小:143KB   页数:8页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

三种使用python进行数据异常值预处理方法对比.docx

上传人:夜紫儿 2022/6/14 文件大小:143 KB

下载得到文件列表

三种使用python进行数据异常值预处理方法对比.docx

文档介绍

文档介绍:三种使用 python 进行数据异常值预处理方法对比
一、前言
本文利用 python 代码,涉及了数据预处理环节, 目的是去除异常值,涉及的三种方法利用 pandas、numpy 等等实现,并进行可视化对比,对比各种方法的优劣势。arker='o', linestyle='none', color='r', alpha=)
df['u_medf']
threshold=3)
outlier_idx
= get_median_filtered(df['u'].values,
= (df['u_medf'].values !=
df['u'].values)[0]
fig, ax = (figsize=figsize)
df['u'].plot() df['u'][outlier_idx].plot(**kw)
_ = (-50, 50)
结果是:
结果分析:总体还行,但是丢失了 2 个异常值。
四、使用方法 detect_outlier_position_by_fft()
代码如下:
def detect_outlier_position_by_fft(signal, threshold_freq=,
frequency_amplitude=.001): signal = ()
fft_of_signal = (signal)
outlier = (signal) if abs((signal)) > abs((signal)) else (signal)
if ((fft_of_signal[threshold_freq:]) > frequency_amplitude):
index_of_outlier = (signal == outlier) return index_of_outlier[0]
else:
return None
进行可视化:
outlier_idx = []
y = df['u'].values
opt = dict(threshold_freq=,
frequency_amplitude=)
win = 20
for k in range(win*2, , win):
idx = detect_outlier_position_by_fft(y[k-win:k+win],
**opt)
if idx is not None:
(k + idx[0] - win) outlier_idx = list(set(outlier_idx))
fig, ax = (figsize=(7, )) df['u'].plot()
df['u