第六章——电力窃漏电用户自动识别 实验一

实验一是处理表格中的缺失值,这里用的是拉格朗日插值法
在这里插入图片描述
第六章——电力窃漏电用户自动识别 实验一_第1张图片
其中 x为缺失值对应的下标序号在这里插入图片描述为缺失值的插值结果,在这里插入图片描述为非缺失值在这里插入图片描述的下标序号对全部缺失数据依次进行插补,直到不存在缺失值为止
数据补全代码如下:

# 导入pandas数据分析库
import pandas as pd
# 导入lagrange插值函数
from scipy.interpolate import lagrange
# 忽略警告信息
import warnings
warnings.filterwarnings('ignore')

# 输入数据的路径
inputfile = '../data/missing_data.xls'
# 输出数据的路径
outputfile = '../tmp/missing_data_processed.xls'

# 读取数据
data = pd.read_excel(inputfile, header=None)
# header = n,表明数据中是否存在列名,如果在第0行,则为0,如果没有,则为None

# 定义插值函数
# s为列向量,n为插入数值的位置,k为取前后数据的个数
def ployinterp_column(s, n, k=5):
    # 取数,10个位一组(不包括当前的空值)
    y = s[list(range(n-k, n)) + list(range(n+1, n+1+k))]
    # 去除空值
    y = y[y.notnull()]
    # 返回插值结果
    return lagrange(y.index, list(y))(n)


# 判断是否需要插值
for i in data.columns:
    for j in range(len(data)):
        # 判断是否为空,若为空则插值
        if(data[i].isnull())[j]:
            data[i][j] = ployinterp_column(data[i], j)

# 输出结果
data.to_excel(outputfile, header=None, index=False) # index=False不显示索引值

实验结果见下图:
数据处理后的表(部分)
第六章——电力窃漏电用户自动识别 实验一_第2张图片
对比原数据表(部分)
第六章——电力窃漏电用户自动识别 实验一_第3张图片
可以用上面提到过的拉格朗日式做计算,这里便不再做重复说明,有兴趣的可以自己算一下

你可能感兴趣的:(电力窃漏电用户自动识别,拉格朗日插值法处理缺失值)