数据挖掘实现数据转换——拉格朗日插值法对缺失值进行插补代码修正
❗❗❗本文最后更新于 328 天前,其中的信息可能已经过时;如有错误请在文章下方评论✅,欢迎纠错🥰!

实现拉格朗日插值法中。自定义列向量插值函数时,在取值处应使用基于数字索引的iloc方法;在判断元素是否需要插值时,应使用基于自定义索引的loc方法。

# 销量数据路径
inputFile = '../data/catering_sale.xls'
# 输出数据路径
outputFile = '../tmp/sales.xls'
# 读入数据
data = pd.read_excel(inputFile)
# 过滤异常值,将其变为空值
"""data[u'销量'][(data[u'销量'] < 400) | (data[u'销量']) > 5000] = None 此行为错误代码,小括号将data[u'销量']括起来了"""
data[u'销量'][(data[u'销量'] < 400) | (data[u'销量'] > 5000)] = None # |与OR用法相同  ##正确写法是小括号应将data[u'销量'] > 5000括起来"""

# 自定义列向量插值函数
# s为列向量,n为被插值的位置,k为取前后的数据个数,默认为5
def ployinterp_column(s, n, k = 2):
    """# y = s[list(range(n - k, n)) + list(range(n + 1, n + 1 + k))] # 此行为错误代码 取值方法错误"""
    y = s.iloc[list(range(n - k, n)) + list(range(n + 1, n + 1 + k))] #应使用基于数字索引的iloc方法取值
    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.loc[j, i] = ployinterp_column(data[i], j)  # 正确写法是使用基于自定义索引的loc方法取值
data.to_excel(outputFile)
print("success!")
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇