利用pandas将非数值数据转换成数值的方式
作者:可以调素琴 发布时间:2023-05-18 15:17:17
标签:pandas,非数值,数据,数值
handle non numerical data
举个例子,将性别属性男女转换成0-1,精通ML的小老弟们可以略过本文~~,
这里不考虑稀疏向量的使用,仅提供一些思路。本来想直接利用pandas的DataFrame.iloc加上for循环直接转换,但试过一遍之后,原数据并有改变。。。。蛋疼写了一个比较 菜的函数,如下。
# 非数值列处理函数
def handel_non_numerical_data(df,name): #----------------name是需要处理的列名称(str),暂不考虑列表
nrows = len(df[name]) #----------------数据集的行数
old_col = df.columns.tolist() #----------------初始的列名集合
name_index = old_col.index(name) #---------要处理的列的在数据集中的索引值
name_data = df[name].values.tolist()#-----------将要处理烦人列复制成一个列表
df.drop([name],axis =1,inplace =True)
unique_kinds = set(name_data)
convert_dict = {}; x = 0 #构造对应种类数值转化字典
for i in unique_kinds:
convert_dict[i] = x
x += 1
def convert(val):
return convert_dict[val]
name_data = list(map(convert,name_data))#利用map函数直接迭代转化
new_col = df.columns.tolist()
new_col.insert(name_index,name)
df.reindex(columns = new_col) #----------------重构数据的列
df[name] = name_data
跑了一遍没有出错,注意这只是baseline…,如果对数值有要求的话,需要自行改动
原本是想直接用youtube上sentdex老哥ml35期视频里的代码的,但发现了几个较为严重的bug,而且总是运行出错 ,如下
def handle_non_numerical_data(df):
columns = df.columns.values
for column in columns:
text_digit_vals = {}
def convert_to_int(val):
return text_digit_vals[val]
if df[column].dtype != np.int64 and df[column].dtype != np.float64:
column_content = df[column].values.tolist()
unique_elements = set(column_content)
print(unique_elements)
x =0
for unique in unique_elements:
if unique not in text_digit_vals:
text_digit_vals[unique] = x
x+=1
df[column] = list(map(convert_to_int,df[column]))
可见,非常暴力,注意到他的if条件,有的数据集中会出现字母数字组合的情况【会出现dtype=object的情况】,set之后种类会草鸡多…,这样的话数值转换也就失去了意义【当然,如果你的样本量是亿级的,几千几百个种类无所谓我也无fuck说,这种情况我认为必须使用稀疏向量了】,另外这个代码一直报错,不知道为什么,有兴趣的老哥可以复制跑一下帮我解答一下。。。
---------------------------2019-08-21分割:
https://www.kaggle.com/nroman/recursive-feature-elimination
LabelEncoder方法
from sklearn.preprocessing import LabelEncoder
注:tqdm是进度条库,不需要关注。另外没有去看这个接口的源码,应该也是最简单的one-hot
来源:https://blog.csdn.net/NewDreamstyle/article/details/90515220
0
投稿
猜你喜欢
- 方法不是主流的。有一组数据,大概10万个左右,每一单位的值不会大于30000,要求按照由大到小的顺序不重复输出。参考无忧cosin的方法后(
- 前言其实就是Django RESTful Framework,RESTful一种API的命名风格,主要因为前后端分离开发出现,前后端分离:
- 一、文章前言此文主要实现识别人体的轮廓范围,与背景进行分离并保存效果图,适用于拍照背景替换及透明背景的人像图(png格式)转换。二、具体流程
- python3.7简单的爬虫,具体代码如下所示:#https://www.runoob.com/w3cnote/python-spider-
- 1. Python的文件类型1. 源代码--直接由Python解析vi 1.py #!/usr/bin/pythonprint 'h
- 网络通用urllib -网络库(stdlib)。requests -网络库。grab – 网络库(基于pycurl)。pycurl – 网络
- 代码如下:'===================================== '转换内容,防止意外 '==
- 一、导入re库python使用正则表达式要导入re库。import re在re库中。正则表达式通常被用来检索查找、替换那些符合某个模式(规则
- 一。首先,添加如下存储过程CREATE PROCEDURE dbo.ChangeObjectOwner @Ol
- 单元测试长久以来是热门话题,本文不会讨论需不需要写单测,可以看看参考资料1,我个人认为写好单测应该是每个优秀开发者必备的技能,关于写单测
- 前言最近,我已经成功将我的个人网站从 Flask 迁移到 Django 了,最早接触 Django 的时候大概是在 4 年前,我记得那个时候
- 本文实例讲述了Flask框架实现的前端RSA加密与后端Python解密功能。分享给大家供大家参考,具体如下:前言在使用 Flask 开发用户
- 最近几个不错网站被封,让人感觉很不爽,现在既不方便用,也不方便学习参考。正好想到曾经“截图”的事情,其实我认为互联网产品还有个特点,更新换代
- 一、问题Python模块和C/C++的动态库间相互调用在实际的应用中会有所涉及,在此作一总结。二、Python调用C/C++1、Python
- 在asp里通过以下两个函数实现javascript里的escape函数和unescape函数加密功能。在ajax post或get时内容存在
- 在html 5增加了新元素header、footer,测试过发现IE不能解析html 5新增的元素。代码如下:<!DOCTYPE ht
- 所谓严格模式其实就是一个不会赋值给任何变量的字符串 “use strict”如果在全局作用域下 给出这个提示,那整个脚本将采用严格模式。也可
- 一.python读取txt文件最简单的open函数:# -*- coding: utf-8 -*-with open("test.
- FROM publish WHERE (id NOT IN (SELECT&
- 正则表达式可以被看成是一个强大的通配符(通用匹配符号)。大多数人都应该很熟悉通配符,例如,当我们看到一个诸如“SAMS”的表达式