pandas 数据归一化以及行删除例程的方法


Posted in Python onNovember 10, 2018

如下所示:

#coding:utf8
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
 
# 如果有id列,则需先删除id列再进行对应操作,最后再补上
# 统计的时候不需要用到id列,删除的时候需要考虑
# delete row
def row_del(df, num_percent, label_len = 0):
	#print list(df.count(axis=1))
	col_num = len(list(list(df.values)[1])) - label_len # -1为考虑带标签
	if col_num<0:
		print 'Error'
	#print int(col_num*num_percent)
	return df.dropna(axis=0, how='any', thresh=int(col_num*num_percent))
 
# 如果有字符串类型,则报错
# data normalization -1 to 1
# label_col: 不需考虑的类标,可以为字符串或字符串列表
# 数值类型统一到float64
def data_normalization(df, label_col = []):
	lab_len = len(label_col)
	print label_col
	if lab_len>0:
		df_temp = df.drop(label_col, axis = 1)
		df_lab = df[label_col]
		print df_lab
	else:
		df_temp = df
	max_val = list(df_temp.max(axis=0))
	min_val = list(df_temp.min(axis=0))
	mean_val = list((df_temp.max(axis=0) + df_temp.min(axis=0)) / 2)
	nan_values = df_temp.isnull().values
	row_num = len(list(df_temp.values))
	col_num = len(list(df_temp.values)[1])
	for rn in range(row_num):
		#data_values_r = list(data_values[rn])
		nan_values_r = list(nan_values[rn])
		for cn in range(col_num):
			if nan_values_r[cn] == False:
				df_temp.values[rn][cn] = 2 * (df_temp.values[rn][cn] - mean_val[cn])/(max_val[cn] - min_val[cn])
			else:
				print 'Wrong'
	for index,lab in enumerate(label_col):
		df_temp.insert(index, lab, df_lab[lab])
	return df_temp
 
 
# 创建一个带有缺失值的数据框:
df = pd.DataFrame(np.random.randn(5,3), index=list('abcde'), columns=['one','two','three'])
df.ix[1,:-1]=np.nan
df.ix[1:-1,2]=np.nan
df.ix[0,0]=int(1)
df.ix[2,2]='abc'
 
# 查看一下数据内容:
print '\ndf1'
print df
 
print row_del(df, 0.8)
 
print '-------------------------'
 
df = data_normalization(df, ['two', 'three'])
print df
 
print df.dtypes
 
print (type(df.ix[2,2]))

以上这篇pandas 数据归一化以及行删除例程的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 字符串split的用法分享
Mar 23 Python
Python发送以整个文件夹的内容为附件的邮件的教程
May 06 Python
Python selenium如何设置等待时间
Sep 15 Python
Python爬虫实战:分析《战狼2》豆瓣影评
Mar 26 Python
DataFrame中去除指定列为空的行方法
Apr 08 Python
python 处理微信对账单数据的实例代码
Jul 19 Python
python3多线程知识点总结
Sep 26 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
Feb 07 Python
python将字典内容写入json文件的实例代码
Aug 12 Python
python exit出错原因整理
Aug 31 Python
Python实现敏感词过滤的4种方法
Sep 12 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
Mar 02 Python
python 重命名轴索引的方法
Nov 10 #Python
Pandas:Series和DataFrame删除指定轴上数据的方法
Nov 10 #Python
Pandas DataFrame 取一行数据会得到Series的方法
Nov 10 #Python
对python创建及引用动态变量名的示例讲解
Nov 10 #Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
Nov 10 #Python
在Python中定义一个常量的方法
Nov 10 #Python
python 定义n个变量方法 (变量声明自动化)
Nov 10 #Python
You might like
php验证是否是md5编码的简单代码
2014/04/01 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
javascript事件问题
2009/09/05 Javascript
提交表单时执行func方法实现代码
2013/03/17 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
ES6新特性八:async函数用法实例详解
2017/04/21 Javascript
Vue.js实现微信过渡动画左右切换效果
2017/06/13 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
微信小程序入门之绘制时钟
2020/10/22 Javascript
python封装对象实现时间效果
2020/04/23 Python
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
python pycharm的安装及其使用
2019/10/11 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
奥地利智能家居和智能生活网上商店:tink.at
2019/10/07 全球购物
房地产广告策划方案
2014/05/15 职场文书
医院党员公开承诺书
2014/08/30 职场文书
学生不讲诚信检讨书
2014/09/29 职场文书
迟到检讨书
2015/01/26 职场文书
介绍信的写法
2015/01/31 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
餐厅服务员管理制度
2015/08/05 职场文书
美德少年主要事迹材料
2015/11/04 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书