首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我的所有类别都转换为NaN或“缺失”,有什么问题吗?

我的所有类别都转换为NaN或“缺失”,有什么问题吗?
EN

Data Science用户
提问于 2022-03-23 12:17:45
回答 1查看 430关注 0票数 0

你好,我有一个dataFrame,其中一个特性是绝对的,我想将其转换为序号类别(包括缺失值的类别)

,但在最后一个单元格中,如您所见,它假设我的所有类别都是NaN (-1),甚至我也使用X.fillna(“缺失”)来假设所有这些都是“缺失”

我没有什么问题,我也找不到任何有用的文档.

谢谢

EN

回答 1

Data Science用户

回答已采纳

发布于 2022-03-24 09:22:04

您在代码中提到了两个问题:

  1. 问题1:我们丢失的值被编码为一个独立的类。

它不再是一个缺失的值,因为您将np.NAN放在那里,nan将被视为普通编码器中的一个独立类。

  1. 顺序不受尊重,因为类别没有被指定,所以它将被视为自动,而最重要的值将被视为第一。

正如@Oxbowerce评论的那样,您的pandas.Categorical将返回-1,因为值是存在的,而不是字符串。

在您的代码中,我不知道为什么要替换np.NAN()。

代码语言:javascript
复制
X = pd.DataFrame ( np.array ( [ 'M', 'O-', 'medium',
                                 'M', 'O-', 'high', 
                               'F', 'O+', 'high', 
                               'F', 'AB', 'low', 
                               'F', 'B+', np.NAN]).reshape((5,3)))
X.columns = ['sex', 'blood_type', 'edu_level']

此时,如果您知道这是缺失的值,那么最好在这里替换它本身,而不是让它变得复杂。

或者在处理完之后,如果您想要转换回包含丢失值在内的类别,则只需通过

代码语言:javascript
复制
edu_dict = {2.0: 'Low', 0.0: 'High', 1.0: 'Medium',  3.0: 'Missing', }
X['edu_level'] = X['edu_level'].map(edu_dict)

产出:

代码语言:javascript
复制
  sex blood_type edu_level
0   M         O-       Low
1   M         O-      High
2   F         O+      High
3   F         AB    Medium
4   F         B+   Missing
票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/109291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档