此时我是不是该喊一声“我胡汉三又回来啦!!!”

这篇博客容许我摸一下数据清洗的裤脚......


1.首先。

这是在网上找的数据,一个心脏病的数据集,英文不好的默默打开翻译,被我悄悄的做了手脚变成“脏数据”。



2.去重

(1)将文本传入kettle,转换为excel文件

(2)进行去重步骤操作,可以看到有4条重复数据被去除,输出表格。

3.使用拉格朗日填补空缺值(一度读成朗格拉日(๑°ㅁ°๑)‼)

(1)话不多说直接上代码

#coding=utf-8
import pandas as pd
from scipy.interpolate import lagrange  # 导入拉格朗日函数inputfile = 'D:/heart0.xls'
outputfile = 'D:/heart01.xls'   #数据输入输出路径def FillNaN(input, output, k=5):  #取k=5data = pd.read_excel(input, header=None)  #读入数据title = data[:1] #数据列名data = data[1:]  #将列名去掉只取数值for i in range(len(data.columns)):for j in range(1, len(data)+1):   #循环每个值if j < k :     #当被插值位置距第一行<5y = data[i][list(range(1, j)) + list(range(j+1, j+1+k))]  #取数y = y[y.notnull()]  # 剔除空值if (data[i].isnull())[j]:  #遇空值的话data[i][j] = round(lagrange(y.index, list(y))(j))   #插值并返回插值多项式,代入j得到插值结果,四舍五入elif (j >= k) and (j < len(data) - k):  #位置距第一行>=5,距最后一行>5y = data[i][list(range(j-k, j)) + list(range(j+1, j+1+k))]y = y[y.notnull()]if (data[i].isnull())[j]:data[i][j] = round(lagrange(y.index, list(y))(j))elif j >= len(data) - k:  #距最后一行<=5y = data[i][list(range(len(data)-1-2*k, j)) + list(range(j+1, len(data)))]y = y[y.notnull()]if (data[i].isnull())[j]:data[i][j] = round(lagrange(y.index, list(y))(j))data = pd.concat([title, data])  #将列名和数值合并data.to_excel(output, header=None, index=False)  #输出结果写入文件FillNaN(inputfile, outputfile)

(2)数据被填补

4.错误分析

(1)KeyError: 0L

Traceback (most recent call last):
  File "C:/Users/DELL/Desktop/PycharmProject/python/cnki.py", line 54, in <module>
    FillNaN(inputfile, outputfile)
  File "C:/Users/DELL/Desktop/PycharmProject/python/cnki.py", line 38, in FillNaN
    if (data[i].isnull())[j]:  #遇空值的话
  File "C:\Users\DELL\Anaconda\lib\site-packages\pandas\core\series.py", line 521, in __getitem__
    result = self.index.get_value(self, key)
  File "C:\Users\DELL\Anaconda\lib\site-packages\pandas\core\index.py", line 1595, in get_value
    return self._engine.get_value(s, k)
  File "pandas\index.pyx", line 100, in pandas.index.IndexEngine.get_value (pandas\index.c:3113)
  File "pandas\index.pyx", line 108, in pandas.index.IndexEngine.get_value (pandas\index.c:2844)
  File "pandas\index.pyx", line 154, in pandas.index.IndexEngine.get_loc (pandas\index.c:3704)
  File "pandas\hashtable.pyx", line 375, in pandas.hashtable.Int64HashTable.get_item (pandas\hashtable.c:7224)
  File "pandas\hashtable.pyx", line 381, in pandas.hashtable.Int64HashTable.get_item (pandas\hashtable.c:7162)
KeyError: 0L

问题分析:我开始以为是OL,所以一直没找到错误。其实它是0L,即DataFrame的行是从1开始数的直到最后一行,所以它出这个错误就是你在访问它的值时超过了范围,在正确范围内就可以了。

问题解决:我将访问范围设置为  for j in range(1, len(data)+1):

(2)TypeError: 'Int64Index' object is not callable

Traceback (most recent call last):
  File "C:/Users/DELL/Desktop/PycharmProject/python/cnki.py", line 25, in <module>
    data[i][j] = ployinterp_column(data[i], j)
  File "C:/Users/DELL/Desktop/PycharmProject/python/cnki.py", line 20, in ployinterp_column
    return lagrange(y.index(), list(y))(n)
TypeError: 'Int64Index' object is not callable

问题分析:一开始是看书上代码写的,它是先写了一个函数然后填值,看好多网上也是类似这样:

def ployinterp_column(s, n, k=5):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 range(len(data.columns)):for j in range(1,len(data)+1):        if (data[i].isnull())[j]:         data[i][j] = ployinterp_column(data[i], j)

原因我也不清楚,可能人家的数据能跑出来,我的就不可以(ಥ _ ಥ)

问题解决:将s直接替换为data(i),n换成j.

5.我的平均值填补渣渣链接......http://blog.csdn.net/tt_258/article/details/69359631

数据去重 填补空缺值(拉格朗日)相关推荐

  1. 07 ,pandas 基本使用 :读数据,查看数据,数据类型,帮助,列名,数据形状,数据计算,,填补空缺值

    1 ,pandas 主要作用 : 数据分析 2 ,pandas 底层 : numpy 3 ,数据准备 : 食品信息 文件名 : food_info.csv 文件地址 : 链接:https://pan. ...

  2. pandas数据清洗:案例详解 fillna函数 填补空缺值

    pandas数据清洗:fillna函数填补空缺值 1 fillna函数简介 2 填补空缺值3种方法 2.1 构建学习数据 2.2 填补特定值 2.3 用前一个非空缺值填充 2.4 用后一个非空缺值填充 ...

  3. Arcgis填补栅格空缺值Nodata

    Arcgis填补栅格空缺值Nodata 在使用栅格图层的时候,经常会遇到所需范围内的栅格存在Nodata的情况.利用Arcgis的[栅格计算器/raster calculator]工具+[焦点统计/F ...

  4. pandas删除数据、空缺值处理、重复值处理

    1.删除指定的行或列 t1 = pd.DataFrame(np.arange(12).reshape((3,4)).astype("int"), index = list(&quo ...

  5. 数据清理之重复值、缺失值的基本处理方法

    文章目录 数据去重 检测缺失值 缺失值的处理 删除 缺失值的填补替换 数据去重 python数据清洗中去重常用drop_duplicates函数,下面是它的参数说明 参数名称 说明 subset 接收 ...

  6. python处理空缺值

    1.计算空缺率 mark一下pandas.shape()的用法 print("表格尺寸 = {}".format(data.shape)) # 计算表格行列数 #print(dat ...

  7. MapReduce的数据去重功能

    实验材料及说明 现有某电商网站用户对商品的收藏数据,记录了用户收藏的商品id以及收藏日期,文件名为buyer_favorite.buyer_favorite包含:买家id,商品id,收藏日期这三个字段 ...

  8. MapReduce基础开发之二数据去重和排序

    因Hadoop集群平台网络限制,只能在eclipse里先写好代码再提交jar到集群平台namenode上执行,不能实时调试,所以没有配置eclipse的hadoop开发环境,只是引入了hadoop的l ...

  9. python数据去重的函数_python去重函数是什么

    数据去重可以使用duplicated()和drop_duplicates()两个方法. DataFrame.duplicated(subset = None,keep ='first')返回boole ...

最新文章

  1. 现在转行学习UI设计好不好就业
  2. 小程序动态class_微盛小程序“圈子动态”来了!仿朋友圈发布动态,引流拓客神器...
  3. 【基于深度学习的脑电图识别】数据集篇:脑电信号自动判读的大数据
  4. cmake 编译Release版本
  5. 图像分析:二值图像连通域标记
  6. 第四篇 前端学习之JQuery基础
  7. 卡尔曼滤波与组合导航原理_卫星知识科普:一种基于卫星共视的卡尔曼滤波算法!...
  8. 【数据竞赛】2020首届海洋目标智能感知国际挑战赛冠军方案分享
  9. redis入门demo
  10. asp.net网页上嵌入Flash显示
  11. TQ210——S5PV210启动过程
  12. layui的轮播图片自适应大小_如何使用LayUI实现网页轮播图
  13. b站怎么删自己的专栏_麦当劳B站直播翻车,品牌B站营销到底应该怎么做?
  14. linux系统运行application,[分享]分享曾经做过的一个嵌入式系统application框架 | 勤奋的小青蛙...
  15. 在php中新建一个系统,免费开源的PHP语言CMS系统充让您在一天内建立一个网站
  16. Python学习笔记 之 函数进阶
  17. android横向滑动分享,Android将ListView逆时针旋转90°实现横向滑动
  18. webstrom 汉化方法
  19. 举办2021创业者线下沙龙心得与感悟
  20. ToolScanner.java:8: 错误: 编码GBK的不可映射字符 //澹版槑绫? JAVA输出中文乱码

热门文章

  1. Smartform 介绍
  2. 使用腾达(Tenda)路由器部分网址突然打不开,怎么办?
  3. 独特原创不是写出来的 从无字天书说内容营销
  4. 大咖云集--优麒麟受邀参加《DIVE全球基础软件创新大会》
  5. 交换机Access、Hybrid和Trunk三种模式
  6. 转:媒体评出美国薪酬最高25家科技公司:思科居首
  7. 瑞萨IDE:CS+ for CC新建工程配置方法
  8. matlab2014 整数规划,整数规划模型的Matlab程序实现
  9. Successful WSASTARTUP not yet performed
  10. JS中split函数的简单使用