python对数组缺失值进行填充
1. 两个常用的函数
1.1 np.nonzero()
np.nonzero()函数返回数组中不为False(0)的元素对应的索引
a = np.array([1,2,0,3,1,0])
print(np.nonzero(a)) >>(array([0, 1, 3, 4], dtype=int64),)
#返回数组中不为0元素的索引数组
a = np.array([1,2,0,3,1,0])
print(np.nonzero(a)[0]) >>[0 1 3 4 5 7]
#这里要注意使用的时候如果只需要索引数组,需要在后面加上[0],这样就只是返回索引数组
#可以和上面对比来看
1.2 np.isnan()
np.isnan()函数判断一个数组各个元素是否为nan,并返回相同维度对应的bool数组
a = np.array([1,2,0,np.nan,3,1,0,np.nan])
print(np.isnan(a)) >>[False False False True False False False True]
#返回对数组进行空值检测的结果
类似的还有np.~isnan()函数,顾名思义就是实值检测,对于非nan元素返回true,nan元素返回false,与isnan()函数刚好相反
2. 实现一个缺失值填充函数
在函数中我们通过上述函数实现计算同一特征非空数据的均值,并以此填充哪些空缺值
# 加载包含NaN的数据集
# 用平均值代替缺失值
def replaceNaNWithMean():
#载入数据
datMat=loadDataSet('secom.data',' ')
#获取特征维度
numFeat = shape(datMat)[1]
#遍历数据集每一个维度
for i in range(numFeat):
#利用该维度所有非NaN特征求取均值
#nonzero返回非空元素的索引
#isnan和~isnan返回数组元素是否对应为空的True or False数组
meanVal = mean(datMat[nonzero(~isnan(datMat[:,i].A))[0],i])
#将该维度中所有NaN特征全部用均值替换
#.A将matrix转化为ndarray,然后~isnan()获得对应bool数组
#再通过nonzero()得到所有不为nan数据的索引数组
#也即第i个特征不为nan的所有元素的索引,最后通过mean对这些元素求出平均值
datMat[nonzero(isnan(datMat[:,i].A))[0],i] = meanVal
#最后再用计算出来的平均值填充空值
return datMat #最后返回用平均值填充空缺值后的数组
python对数组缺失值进行填充的更多相关文章
- python数据结构-数组/列表/栈/队列及实现
首先 我们要分清楚一些概念和他们之间的关系 数组(array) 表(list) 链表(linked list) 数组链表(array list) 队列(queue) 栈(stack) li ...
- Python Pandas找到缺失值的位置
python pandas判断缺失值一般采用 isnull(),然而生成的却是所有数据的true/false矩阵,对于庞大的数据dataframe,很难一眼看出来哪个数据缺失,一共有多少个缺失数据,缺 ...
- python使用数组作为索引遍历数组
python使用数组作为索引遍历数组 觉得有用的话,欢迎一起讨论相互学习~Follow Me python使用数组作为索引遍历数组 import numpy as np a=np.arange(0,5 ...
- LeetCode初级算法的Python实现--数组
LeetCode初级算法的Python实现--数组 # -*- coding: utf-8 -*- """ @Created on 2018/6/3 17:06 @aut ...
- Python检查数组元素是否存在类似PHPisset()方法
Python检查数组元素是否存在类似PHP isset()方法 sset方法来检查数组元素是否存在,在Python中无对应函数,在Python中一般可以通过异常来处理数组元素不存在的情况,而无须事先检 ...
- Python 切分数组,将一个数组均匀切分成多个数组
Python 切分数组 将一个数组,均分为多个数组 代码 # -*- coding:utf-8 -*- # py3 def list_split(items, n): return [items[i: ...
- Python求解数组重新组合求最小值(优酷)
题目描述:题目:含有n个元素的整型数组,将这个n个元素重新组合,求出最小的数,如(321,3,32,) 最小数为321323 题目分析: 将数组中所有元素填充到个数相等,填充的数字为最后一位的数字,如 ...
- python创建数组的方法
一 直接定义法: 1.直接定义 matrix=[0,1,2,3] 2.间接定义 matrix=[0 for i in range(4)] print(matrix) 二 Numpy方法: Numpy内 ...
- Python虚拟机类机制之填充tp_dict(二)
填充tp_dict 在Python虚拟机类机制之对象模型(一)这一章中,我们介绍了Python的内置类型type如果要完成到class对象的转变,有一个重要的步骤就是填充tp_dict对象,这是一个极 ...
随机推荐
- Docker-harbor-V1.3.0 ”私有仓库“搭建 Easy
准备: centos 7.0 Docker version 1.12.6 docker-compose version 1.19.0 1: updata-yum: 更新yum 源 ...
- 剑指offer自学系列(一)
题目描述:输入n个整数,找出其中最小的k个数,例如,输入{4,5,1,6,2,7,3,8}这8个数字,最小的4个数字是1,2,3,4 题目分析:首先我能想到的是先对数组排序,从小到大,然后直接输出想要 ...
- asp.net mvc3用file上传文件大小限制问题
在Windows2008下,如果上传比较大的文件,可能会出现404错误,(请求筛选模块被配置为拒绝超过请求内容长度的请求). 可通过如下方法解决: 打开URTracker根目录下的web.config ...
- Dockerfile详解,以及构建自定义镜像
Dockerfile使用 前面的操作我们一直下载下载官方已经构建好的镜像,直接下载后就可以run,如果我们想要在镜像中添加自己的应用,比如在tomcat中添加自己的app,构建一个自定义的镜像,那么我 ...
- 微信小程序调用用百度地图天气功能
#小程序之调用百度地图天气功能 本篇博客主要介绍小程序在百度地图中获取天气信息,如有不全请指出.下面先上效果图 主要内容 百度地图API的个人密钥,也就是AK 请求百度地图API接口数据 获取到的信息 ...
- JPA#ManyToMany
多对多,多个学生选了多个课程. 涉及到的注解(注解的使用看注释):ManyToManyJoinTableJsonIgnoreProperties @Entity @Table(name = " ...
- request.getParameter() 接收参数中文乱码
修改tomcat配置文件 设置url编码集 <Connector port="8080" protocol="HTTP/1.1" connectionTi ...
- Power BI 安装注册教程
把下载好的MSI包PBIDesktop_x64.msi 双击安装 点击下一步 选择文件路径 点击安装 点击完成 初始化中 安装完成界面 账号注册 https://powerbi.microsoft.c ...
- WinForm读写App.config配置文件
一.配置文件概述: 应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序.配置文件的根节点是conf ...
- (六--一)scrapy框架简介和基础应用
一 什么是scrapy框架 官方解释 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了 页面抓取 ( ...