Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Sklearn标签编码多列pandas数据帧

Sklearn标签编码多列pandas数据帧
EN

Stack Overflow用户
提问于 2017-06-10 14:39:16
回答 7查看 27.8K关注 0票数 16

我尝试在一个大型pandas数据帧中对包含分类数据("Yes""No")的多个列进行编码。完整的数据帧包含400多列,因此我在寻找一种方法来编码所有所需的列,而不必逐个编码。我使用Scikit-learn LabelEncoder对分类数据进行编码。

数据帧的第一部分不一定要编码,但是我正在寻找一种方法来直接编码包含分类日期的所有所需列,而不拆分和连接数据帧。

为了演示我的问题,我首先尝试在数据帧的一小部分上解决它。然而,停留在数据拟合和转换的最后部分,并获得一个ValueError: bad input shape (4,3)。我运行时的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Create a simple dataframe resembling large dataframe
    data = pd.DataFrame({'A': [1, 2, 3, 4],
                         'B': ["Yes", "No", "Yes", "Yes"],
                         'C': ["Yes", "No", "No", "Yes"],
                         'D': ["No", "Yes", "No", "Yes"]})


# Import required module
from sklearn.preprocessing import LabelEncoder

# Create an object of the label encoder class
labelencoder = LabelEncoder()

# Apply labelencoder object on columns
labelencoder.fit_transform(data.ix[:, 1:])   # First column does not need to be encoded

完整的错误报告:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
labelencoder.fit_transform(data.ix[:, 1:])
Traceback (most recent call last):

  File "<ipython-input-47-b4986a719976>", line 1, in <module>
    labelencoder.fit_transform(data.ix[:, 1:])

  File "C:\Anaconda\Anaconda3\lib\site-packages\sklearn\preprocessing\label.py", line 129, in fit_transform
    y = column_or_1d(y, warn=True)

  File "C:\Anaconda\Anaconda3\lib\site-packages\sklearn\utils\validation.py", line 562, in column_or_1d
    raise ValueError("bad input shape {0}".format(shape))

ValueError: bad input shape (4, 3)

有人知道怎么做吗?

EN

回答 7

Stack Overflow用户

发布于 2017-09-19 02:36:54

如下代码所示,您可以通过对DataFrame应用LabelEncoder对多个列进行编码。但是,请注意,我们无法获得所有列的类信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
from sklearn.preprocessing import LabelEncoder

df = pd.DataFrame({'A': [1, 2, 3, 4],
                   'B': ["Yes", "No", "Yes", "Yes"],
                   'C': ["Yes", "No", "No", "Yes"],
                   'D': ["No", "Yes", "No", "Yes"]})
print(df)
#    A    B    C    D
# 0  1  Yes  Yes   No
# 1  2   No   No  Yes
# 2  3  Yes   No   No
# 3  4  Yes  Yes  Yes

# LabelEncoder
le = LabelEncoder()

# apply "le.fit_transform"
df_encoded = df.apply(le.fit_transform)
print(df_encoded)
#    A  B  C  D
# 0  0  1  1  0
# 1  1  0  0  1
# 2  2  1  0  0
# 3  3  1  1  1

# Note: we cannot obtain the classes information for all columns.
print(le.classes_)
# ['No' 'Yes']
票数 20
EN

Stack Overflow用户

发布于 2020-04-27 15:52:03

首先,找出类型为object的所有功能:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
objList = all_data.select_dtypes(include = "object").columns
print (objList)

现在,要将上面的objList特性转换为数字类型,您可以使用forloop,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#Label Encoding for object to numeric conversion
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()

for feat in objList:
    df[feat] = le.fit_transform(df[feat].astype(str))

print (df.info())

请注意,我们在forloop中显式地提到了string类型,因为如果您删除它,它会抛出一个错误。

票数 4
EN

Stack Overflow用户

发布于 2019-08-16 14:21:13

Scikit-learn现在有了一些东西:OrdinalEncoder

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn.preprocessing import OrdinalEncoder
data = pd.DataFrame({'A': [1, 2, 3, 4],
                         'B': ["Yes", "No", "Yes", "Yes"],
                         'C': ["Yes", "No", "No", "Yes"],
                         'D': ["No", "Yes", "No", "Yes"]})

oe = OrdinalEncoder()

t_data = oe.fit_transform(data)
print(t_data)
# [[0. 1. 1. 0.]
# [1. 0. 0. 1.]
# [2. 1. 0. 0.]
# [3. 1. 1. 1.]]

开箱即用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44474570

复制
相关文章
pandas dataframe 新增单列和多列
dataframe assign方法,返回一个新对象(副本),不影响旧dataframe对象
lovelife110
2021/01/14
4.3K0
Pandas 修改单列,多列,Dataframe 数据类型方法汇总
文章目录 1.修改单列的数据类型 2.修改指定多列的数据类型 3.创建dataframe时,修改数据类型 4.读取时,修改数据类型 5.自动 1.修改单列的数据类型 import pandas as pd import numpy as np df = pd.read_csv('test.csv') df['column_name'] = df['column_name'].astype(np.str) print(df.dtypes) 2.修改指定多列的数据类型 import pandas as
白墨石
2021/01/13
6.7K0
Pandas | 如何新增数据列?
在数据分析时,原始数据往往不能满足我们的需求,经常需要按照一定条件创建新的数据列或者修改原有数据列,然后进行后续分析。
生信real
2022/12/20
2.1K0
标签制作软件如何制作1行多列的标签
在使用标签制作软件制作标签时,我们需要根据标签纸的实际尺寸在标签软件中进行设置。因为只有将标签纸的实际尺寸跟标签软件中的纸张尺寸设置成一致的,才能打印到相应的纸张上。例如常见的一行多列的标签该怎么设置呢?接下来就带大家学习下在标签制作软件中设置1行多列标签的方法:
用户5746110
2019/09/18
2.7K0
pandas基础:重命名pandas数据框架列
重命名pandas数据框架列有很多原因。例如,可能希望列名更具描述性,或者可能希望缩短名称。本文将介绍如何更改数据框架中的名称。
fanjy
2022/11/16
1.9K0
pandas基础:重命名pandas数据框架列
pandas’_pandas 删除列
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/02
2.7K0
pandas’_pandas 删除列
盘点一个Pandas多列分组问题
大家好,我是皮皮。 一、前言 前几天在Python白银交流群【在途中要勤奋的熏肉肉🤪】问了一道Pandas处理的问题,如下图所示。 原始数据如下图所示: 下面是她自己写的代码: # df['name'] = df['name'].str.lower() test['pid'] = test['pid'].astype(int) test['arr0'] = test['arr0'].astype(str) test['arr1'] = test['arr1'].astype(str) test[
前端皮皮
2022/08/17
1.2K0
盘点一个Pandas多列分组问题
pandas操作一列数据
def tt(x): if x.name == "distribution": return [el[0:10] for el in x.values] else: return x test1 = test.apply(tt)
用户1733462
2018/12/05
1.9K0
Pandas基础:在Pandas数据框架中移动列
有时候,我们需要在pandas数据框架内移动一列,shift()方法提供了一种方便的方法来实现。
fanjy
2022/06/04
3.2K0
Pandas基础:在Pandas数据框架中移动列
pandas新版本增强功能,数据表多列频率统计
pandas 在1.0版本发布后,更新频率非常高,今天我们看看关于频率统计的一个新方法。
咋咋
2021/09/01
1.6K0
pandas新版本增强功能,数据表多列频率统计
一文了解类别型特征的编码方法
一般特征可以分为两类特征,连续型和离散型特征,而离散型特征既有是数值型的,也有是类别型特征,也可以说是字符型,比如说性别,是男还是女;职业,可以是程序员,产品经理,教师等等。
kbsc13
2019/11/07
1.3K0
[视频编码] 视频编码的三种帧:I帧,B帧,P帧
在视频压缩编码中,所有的帧被分成了三个种类,I帧,B帧和P帧,其实就是Intra-Prediction帧,Bi-prediction帧和Prediction帧。顾名思义,就是帧内预测帧,双向预测帧以及(单向)预测帧。
轻舞飞扬SR
2021/02/24
2.3K0
如何在 Pandas 中创建一个空的数据帧并向其附加行和列?
Pandas是一个用于数据操作和分析的Python库。它建立在 numpy 库之上,提供数据帧的有效实现。数据帧是一种二维数据结构。在数据帧中,数据以表格形式在行和列中对齐。它类似于电子表格或SQL表或R中的data.frame。最常用的熊猫对象是数据帧。大多数情况下,数据是从其他数据源(如csv,excel,SQL等)导入到pandas数据帧中的。在本教程中,我们将学习如何创建一个空数据帧,以及如何在 Pandas 中向其追加行和列。
很酷的站长
2023/08/11
2800
如何在 Pandas 中创建一个空的数据帧并向其附加行和列?
数据科学和人工智能技术笔记 三、数据预处理
EllipticEnvelope假设数据是正态分布的,并且基于该假设,在数据周围“绘制”椭圆,将椭圆内的任何观测分类为正常(标记为1),并将椭圆外的任何观测分类为异常值(标记为-1)。 这种方法的一个主要限制是,需要指定一个contamination参数,该参数是异常观测值的比例,这是我们不知道的值。
ApacheCN_飞龙
2022/12/02
2.5K0
懂Excel就能轻松入门Python数据分析包pandas(十二):多列堆叠
> 经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死。后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器—— pandas
咋咋
2021/09/01
7280
懂Excel就能轻松入门Python数据分析包pandas(十二):多列堆叠
懂Excel就能轻松入门Python数据分析包pandas(十二):多列堆叠
> 经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死。后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器—— pandas
Excel催化剂
2021/08/19
8090
懂Excel就能轻松入门Python数据分析包pandas(十二):多列堆叠
PandasGUI:使用图形用户界面分析 Pandas 数据帧
数据预处理是数据科学管道的重要组成部分,需要找出数据中的各种不规则性,操作您的特征等。Pandas 是我们经常使用的一种工具,用于处理数据,还有 seaborn 和 matplotlib用于数据可视化。PandasGUI 是一个库,通过提供可用于制作
润森
2022/09/22
3.9K0
PandasGUI:使用图形用户界面分析 Pandas 数据帧
SQL 将多列的数据转到一列
如题。假设我们要把 emp 表中的 ename、job 和 sal 字段的值整合到一列中,每个员工的数据(按照 ename -> job -> sal 的顺序展示)是紧挨在一块,员工之间使用空行隔开。
白日梦想家
2020/09/08
5.4K0
利用 Pandas 进行分类数据编码的十种方式
题主表示pandas用起来很乱,事实真的如此吗?本文就将先如何利用pandas来行数据转换/编码的十种方案,最后再回答这个问题。
刘早起
2022/09/21
7650
点击加载更多

相似问题

cisco 2950交换机的配置

10

在Cisco交换机上配置端口

40

交换机需要配置吗?

20

为什么在配置动态Nat时需要配置ACL?

10

如何删除L3交换机端口配置?

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文