python处理空缺值
1.计算空缺率
mark一下pandas.shape()的用法
print("表格尺寸 = {}".format(data.shape)) # 计算表格行列数
#print(data.shape[0]) # 计算行的个数
#print(data.shape[1]) # 计算列的个数
计算若干行的空缺率
先在数据excel中第一行搞一个header,用来索引;下面代码以2:7列为例
import os
import pandas as pd
import numpy as npos.chdir(r"E:\MCM\2016\2016ProblemCDATA")
data = pd.read_excel("data1.xlsx",header = 0)print("表格尺寸 = {}".format(data.shape)) # 计算表格行列数for i in range(2,8):# 查看某 一/多 列的缺失值isnull()missing_value = data[i].isnull().sum()missing_rate = missing_value/data[i].shape[0]print("col:%d"%i)print("missing_value = %d"%missing_value)print('missing_rate = {}'.format(missing_rate))
2.拉格朗日法插补空缺值
import pandas as pd #导入pandas库
from scipy.interpolate import lagrange #导入拉格朗日函数inputfile = u'E:\\MCM\\2016\\2016ProblemCDATA\\data1.xlsx'
outputfile = u'E:\\MCM\\2016\\2016ProblemCDATA\\data2.xlsx'data= pd.read_excel(inputfile)
data[u'count'][(data[u'count']<100000) | (data[u'count']>200000)] = None #将异常值清空def ployinterp_column(s,n,k=2): #k=2表示用空值的前后两个数值来拟合曲线,从而预测空值y = s[list(range(n-k,n)) + list(range(n+1,n+1-k))] #取值,range函数返回一个左闭右开([left,right))的序列数y = y[y.notnull()]#取上一行中取出数值列表中的非空值,保证y的每行都有数值,便于拟合函数return lagrange(y.index,list(y))(n) #调用拉格朗日函数,并添加索引for i in data.columns: #如果i在data的列名中,data.columns生成的是data的全部列名for j in range(len(data)): #len(data)返回了data的长度,若此长度为5,则range(5)会产生从0开始计数的整数列表if (data[i].isnull())[j]:#如果data[i][j]为空,则调用函数ployinterp_column为其插值data[i][j] = ployinterp_column(data[i],j)data.to_excel(outputfile) #将完成插值后的data写入excel
print("拉格朗日法插补完成,插补后的文件位于:"+str(outputfile))
代码使用的过程中遇到两个问题
2.1TypeError: Can
not cast array data from dtype('float64') to dtype('U32') according to the rule '
原因:
‘U32’和‘S32’都表示numpy数组是一个字符串数组,而不是数字数组。numpy数组中,只要有一项是字符,返回的类型都是字符串数组。
解决办法:
检查数据,把字符串数组换成数字或空值即可。
2.2A value is trying to be set on a copy of a slice from a DataFrame
原因:
在python中默认的切片数据类型是“只读不能写”的,就比如生物实验中的切片,仅供观赏,而使用loc函数定位到的是原dataframe中的列,所以可修改。
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
解决办法:
只不过是个warning,不影响程序跑 ;p
2.3"None of [Int64Index([-2, -1], dtype='int64')] are in the [index]"
原因:
经过艰苦的试错,我发现是因为存在某列数据开头前k个数据有空值,可能这就是lagrange函数的缺陷吧
解决办法:
调整数据,使满足前k个数据不要有空值
ps:同学用matlab插补缺失值是真的容易/(ㄒoㄒ)/~~
python处理空缺值相关推荐
- 07 ,pandas 基本使用 :读数据,查看数据,数据类型,帮助,列名,数据形状,数据计算,,填补空缺值
1 ,pandas 主要作用 : 数据分析 2 ,pandas 底层 : numpy 3 ,数据准备 : 食品信息 文件名 : food_info.csv 文件地址 : 链接:https://pan. ...
- 数据去重 填补空缺值(拉格朗日)
此时我是不是该喊一声"我胡汉三又回来啦!!!" 这篇博客容许我摸一下数据清洗的裤脚...... 1.首先. 这是在网上找的数据,一个心脏病的数据集,英文不好的默默打开翻译,被我悄悄 ...
- python 函数返回值的特殊情况
今天没事和大家一起聊聊python 函数返回值的特殊情况,之前我也碰到过类似方面的问题,到后来查阅了一些资料后,发现原来是这样! 我记得很久以前和大家聊过python列表操作方法,python列表非 ...
- python小课骗局-python小课值吗
Python小课其实是风变编程旗下的Python课.课程更像一个「闯关游戏」,让每个小白学员学编程越学越上瘾. 个人感觉还行,刚学完了他们的爬虫课程.(推荐学习:Python视频教程) 之前机缘巧合在 ...
- pythondict增加-python字典键值对的添加和遍历方法
添加键值对 首先定义一个空字典 >>> dic={} 直接对字典中不存在的key进行赋值来添加 >>> dic["name"]="zh ...
- python 曲线分析_大数据分析之Python计算KS值并绘制KS曲线
本篇教程探讨了大数据分析之Python计算KS值并绘制KS曲线,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. python实现KS曲线,相关使用方法请参考上篇博客-R语言实现K ...
- python输出键值列表_Python 键值分组或分区数据
Python 使用键值分组或者分区数据,对分组后的数据做何种归约是没有限制的.数据中可能包含一些自变量或者因变量.可以通过自变量对数据进行分区,然后计算每个分区的各项汇总值,包括最大值.最小值.平均值 ...
- python方向键键值_python字典键值对的添加和遍历方法
添加键值对 首先定义一个空字典 >>> dic={} 直接对字典中不存在的key进行赋值来添加 >>> dic['name']='zhangsan' >> ...
- python字典键值对转化为相应的变量名和变量值
将python字典键值对转化为相应的变量名和变量值可以使用以下方法: globals().update({"name":"value"}) locals().u ...
最新文章
- 阿里将AI引入时尚界,消费者会对程序员的审美买账吗?
- DOM对象与jquery对象有什么不同
- Android开发工具——ADB(Android Debug Bridge) 一概览
- 【转】C51中断函数的写法
- 软件评测师考试内容纲要
- 程序员到底是吃青春饭还要奋斗?那么行业前景又如何?
- 【论文笔记】RETHINKING NETWORK DESIGN AND LOCAL GEOMETRY IN POINT CLOUD: A SIMPLE RESIDUAL MLP FRAMEWORK
- The connection to adb is down, and a severe error has occured.问题解决
- 20以内的加减法辅导
- RMAN备份数据库_为长期存储做数据库备份(归档备份,Archival Backup)
- IEduChina2019国际学校展暨国际教育论坛温暖深圳
- 一些RJS资源和演示入门教程
- (二)、JavaScript页面访问记录(History 对象)
- windows2008R2标准版在线升级至企业版
- 给iOS开发者的Sketch入门教程
- 88、基于STM32单片机的指纹考勤机指纹识别签到系统设计
- Power BI 之 DAX语法规范详解1
- mysql 全连接_MySQL全连接(Full Join)实现,union和union all用法
- 软件测试基础知识(二)------------等价类划分法、边界值分析法、场景法、错误推测法、bug定义/类型/优先级/生命周期/跟踪管理
- JavaScript - 京东放大镜效果:鼠标移动查看图片放大细节