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 相关文章推荐
Python3.2中的字符串函数学习总结
Apr 23 Python
python实现中文输出的两种方法
May 09 Python
Python中List.count()方法的使用教程
May 20 Python
在Python中操作文件之truncate()方法的使用教程
May 25 Python
numpy使用技巧之数组过滤实例代码
Feb 03 Python
对numpy Array [: ,] 的取值方法详解
Jul 02 Python
Python实现图片批量加入水印代码实例
Nov 30 Python
手动安装python3.6的操作过程详解
Jan 13 Python
浅谈keras 模型用于预测时的注意事项
Jun 27 Python
对python pandas中 inplace 参数的理解
Jun 27 Python
python的setattr函数实例用法
Dec 16 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 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+javascript模拟Matrix画面
2006/10/09 PHP
php中数组首字符过滤功能代码
2012/07/31 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
PHP5.5迭代生成器用法实例详解
2016/03/16 PHP
PHP编程 SSO详细介绍及简单实例
2017/01/13 PHP
JS字符串函数扩展代码
2011/09/13 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
获取select元素被选中的文本内容的js代码
2014/01/29 Javascript
jquery操作angularjs对象
2015/06/26 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
vue-cli2.9.3 详细教程
2018/04/23 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
2018/10/19 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
Python入门篇之字符串
2014/10/17 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
2018/07/13 Python
详解python uiautomator2 watcher的使用方法
2019/09/09 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
JupyterNotebook 输出窗口的显示效果调整实现
2020/09/22 Python
Python tkinter实现日期选择器
2021/02/22 Python
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
竞选劳动委员演讲稿
2014/04/28 职场文书
商业融资计划书
2014/04/29 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
承诺函范文
2015/01/21 职场文书
教师听课学习心得体会
2016/01/15 职场文书
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python
MySQL注入基础练习
2021/05/30 MySQL
Python实现视频自动打码的示例代码
2022/04/08 Python