本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1、修复原理
2、数据修复的代码
# -*- coding: UTF-8 -*-
"""
@Author :远方的星
@Time : 2021/7/5 22:50
@CSDN :https://blog.csdn.net/qq_44921056
@腾讯云 : https://cloud.tencent.com/developer/column/91164
"""
import numpy as np
data = [1360, 1359, 1336, 1325, 1295, 1297, 1299, 1281, 1270, 1265, 1267, 0, 0, 0, 1248, 1260, 1256, 1249, 1263, 1228,
1221, 0, 0, 0, 1229, 1220, 1221, 1246, 1228, 1239]
# 得到数据长度
length = len(data)
# 定义一个空列表用于存放差值数据
difference = []
for i in range(length):
# 挑出为0的地方,即需要修复的数据
if data[i] == 0:
# 计算预测值之前所有值的和
sum_1 = 0
for j in range(i):
sum_1 += data[j]
# 求去平均值
average = sum_1/(i+1)
for k in range(i-1):
a = data[k+1] - data[k]
difference.append(a)
# 求得变化量
difference_average = np.mean(difference)
# 求得修复数据
data_fix = int(round(average + difference_average, 0))
# 使用修复数据替代原来的0值
data[i] = data_fix
print('第{}位数据已经修复,修复的结果为{}'.format(i+1, data_fix))
print('数据全部修复后的结果为:', data)
3、数据修复前后的比较
在数据修复之前,可以使用拉依达准则或者狄克逊准则判断数据是否为异常数据。
为了方便表示,将异常数据表示为空数据。
- 修复前:
- 修复后: