pd.get_dummies的使用和疑惑解答
pd.get_dummies的使用
参考pandas官网
pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)
参数:
data:array-like, Series, or DataFrame
prefix:str, list of str, or dict of str, default None.String to append DataFrame column names.
prefix_sep:str, default ‘_‘.If appending prefix, separator/delimiter to use.
dummy_na:bool, default False.Add a column to indicate NaNs, if False NaNs are ignored.
columns:list-like, default None.Column names in the DataFrame to be encoded.
sparse:bool, default False.Whether the dummy-encoded columns should be backed by a SparseArray (True) or a regular NumPy array (False).
drop_first:bool, default False.Whether to get k-1 dummies
dtype:dtype, default np.uint8.Data type for new columns.
例子:
>>>df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],'C': [1, 2, 3]})
>>>pd.get_dummies(df, prefix=['col1', 'col2'])C col1_a col1_b col2_a col2_b col2_c
0 1 1 0 0 1 0
1 2 0 1 1 0 0
2 3 1 0 0 0 1
>>>pd.get_dummies(df, prefix={"B": "from_B", "A": "from_A"})C from_A_a from_A_b from_B_b from_B_c
0 1 1 0 0 1
1 2 0 1 0 1
2 3 1 0 1 0
>>>df = pd.DataFrame({"A": list("aaaaa"), "B": list("ababc")})
>>>pd.get_dummies(df, drop_first=True)B_b B_c
0 0 0
1 1 0
2 0 0
3 1 0
4 0 1
与cut()连用:
>>>values = np.random.randn(10)
>>>values
array([ 0.4082, -1.0481, -0.0257, -0.9884, 0.0941, 1.2627, 1.29 ,0.0824, -0.0558, 0.5366])
>>>bins = [0, 0.2, 0.4, 0.6, 0.8, 1]
>>>pd.get_dummies(pd.cut(values, bins))(0.0, 0.2] (0.2, 0.4] (0.4, 0.6] (0.6, 0.8] (0.8, 1.0]
0 0 0 1 0 0
1 0 0 0 0 0
2 0 0 0 0 0
3 0 0 0 0 0
4 1 0 0 0 0
5 0 0 0 0 0
6 0 0 0 0 0
7 1 0 0 0 0
8 0 0 0 0 0
9 0 0 1 0 0
合并到原始数据
df = df.join(pd.get_dummies(df.A))
df.drop([A],axis=1,inplace=True)
几点疑惑及验证
实验中需要分别对训练集和测试集进行One-hot编码,要求两个数据集编码后变量和数据含义一致,实际操作中遇到一些问题:
- 如果遇到某个变量的某个取值只在训练集中出现而未在测试集中出现,one-hot后的变量数不一致,怎么办?
答:检测出不一致的列,在缺少这些列的数据集中加入取值全为0的同名列。
for col in list(test.columns.difference(train.columns)):#train没有的列df_obj = pd.DataFrame({col:np.squeeze(np.zeros((1,train.shape[0])))})train = pd.concat([train,df_obj], axis = 1)
for col in list(train.columns.difference(test.columns)):#test没有的列df_obj = pd.DataFrame({col:np.squeeze(np.zeros((1,test.shape[0])))})test = pd.concat([test,df_obj], axis = 1)
2. 对于取值只有两类的变量,训练集中的1与测试集中的1代表相同类别吗?(如果变量取值类别大于2,one-hot时会生成带后缀的变量,不存在此问题)
答:是一样的。
pd.get_dummies的使用和疑惑解答相关推荐
- pd.get_dummies
get_dummies 是利用pandas实现one hot encode的方式.详细参数请查看官方文档 官方文档在这里 pandas.get_dummies(data, prefix=None, p ...
- pd.get_dummies()
get_dummies 是利用pandas实现one hot encode的方式 pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy ...
- pandas 下的 one hot encoder 及 pd.get_dummies() 与 sklearn.preprocessing 下的 OneHotEncoder 的区别
sklearn.preprocessing 下除了提供 OneHotEncoder 还提供 LabelEncoder(简单地将 categorical labels 转换为不同的数字): 1. 简单区 ...
- [Python中pandas实现独热编码][pd.get_dummies()函数]
快速理解 独热编码前,存在1列x3行的数据: 1列的列名称为: 动物名称 3行中第1行的值为: 猫 3行中第2行的值为: 狗 3行中第3行的值为: 猫 独热编码后,变为2 ...
- [网摘]---有关int,Int32的疑惑解答
有关int,Int32的疑惑解答 疑惑1:int.System.Int32和int32的区别 1. int32是IL中的基元类型(primary type),int和System.Int32是对int ...
- 【特征提取】pd.get_dummies() 详解(One-Hot Encoding)
pd.get_dummies 详解 Pandas.get_dummies 用法简单介绍 主要参数介绍 data prefix prefix_sep 其他参数(Parameters) Pandas.ge ...
- 【机器学习】pd.get_dummies()
get_dummies 是利用pandas实现one hot encode的方式 机器学习之One-Hot Encoding详解 - 简书 (jianshu.com)https://www.jians ...
- pd.get_dummies方法理解
文章目录 1.举例说明: 1.1 在jupyter notebook里面输入如下代码: 1.2 显示结果: 1.3 使用 pd.get_dummies(data) 1.4结果: 1.举例说明: 1.1 ...
- python get dummies_特征提取之pd.get_dummies()
one-hot encoding one-hot的基本思想:将离散型特征的每一种取值都看成一种状态,若你的这一特征中有N个不相同的取值,那么我们就可以将该特征抽象成N种不同的状态,one-hot编码保 ...
最新文章
- 《深入浅出Ext JS(第2版)》获专家好评
- 这就是编程的终极难题? | 每日趣闻
- 修身论文2000字_那些没能写出毕业论文的博士生,究竟是败在了哪里?
- python自定义函数详解_Python自定义函数
- 剑指offer——不能被继承的类
- CG笔记之一——透视投影
- Java 10:“ var”关键字
- c语言动态存储分配和链表,C语言静态链表和动态链表
- qt 工作流_助力提升企业生产力-工作流管理
- 2020年能够实现强AI吗?GPT-3 是强AI吗?
- 1.Spring实现数据库的读写分离
- dockerfile安装jenkins 并配置构建工具(node、npm、maven、git)
- springboot智慧幼儿园管理系统的设计与实现毕业设计源码271611
- 哪些机器学习模型需要归一化
- MySQL 线程池[2021-06-26]
- 电子计算机上面cutup,cutup(cut up用法总结)
- 得物(毒)APP,8位抽奖码需求,这不就是产品给我留的数学作业!
- python远程主机强迫关闭了_[转] python 远程主机强迫关闭了一个现有的连接 socket 超时设置 errno 10054...
- 计算机科学与技术学校学科评估,计算机科学与技术学科评估具体排名「大学专业排名」...
- 使用Python,OpenCV对图像进行亚像素点检测,并拟合椭圆进行绘制