首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在机器学习中使用python替换数据集中的无用字符以清除数据集中的无用字符

在机器学习中使用python替换数据集中的无用字符以清除数据集中的无用字符
EN

Stack Overflow用户
提问于 2021-01-05 00:40:04
回答 1查看 82关注 0票数 0

我怀疑,每当我尝试用NaN替换给定dataset中的?时,我都会使用python提供的Numpy(此处为np)库在python中编写以下代码

代码语言:javascript
代码运行次数:0
运行
复制
dataset = pd.read_excel("D:\Gursimran\AIML\Datasets\AdultIncomeData.xlsx")
dataset.replace('?', np.NaN, inplace=True)

当我运行这段代码时,它没有显示错误,但当我尝试通过以下方式查看数据集中的更改时:

代码语言:javascript
代码运行次数:0
运行
复制
dataset.head(10)

然后,我可以再次在我的数据集中看到?。这些?不会被替换。有人能告诉我我错过了什么吗?

请帮帮我。

EN

回答 1

Stack Overflow用户

发布于 2021-01-05 05:34:07

我的猜测是,一些/所有问号被一些看不见的字符所包围,例如空格、制表或换行符。例如,考虑以下示例数据:

代码语言:javascript
代码运行次数:0
运行
复制
import pandas as pd
import numpy as np

dataset = pd.DataFrame({
    'age': [19, 28, 41, 30],
    'workclass': ['?', 'Private', 'Self-emp-inc', '   ?'],
    'occupation': ['Sales', '?', '?    ', 'Tech-support']
})

如果我们使用print(dataset),我们会看到:

代码语言:javascript
代码运行次数:0
运行
复制
   age     workclass    occupation
0   19             ?         Sales
1   28       Private             ?
2   41  Self-emp-inc         ?    
3   30             ?  Tech-support

如果我们仔细观察打印的数据,我们可能会注意到,第三行上的问号并不是唯一的,因为它不是与占领列的右侧对齐的。然而,第四行上的问号似乎是孤立的,但事实并非如此。因此,在替换单个问号时,如

代码语言:javascript
代码运行次数:0
运行
复制
print(dataset.replace('?', np.NaN))

只有第一行和第二行中的是固定的:

代码语言:javascript
代码运行次数:0
运行
复制
   age     workclass    occupation
0   19           NaN         Sales
1   28       Private           NaN
2   41  Self-emp-inc         ?    
3   30             ?  Tech-support

这可以通过替换空格来修复。我们可以使用正则表达式,如

代码语言:javascript
代码运行次数:0
运行
复制
print(dataset.replace('\\s*\?\\s*', np.NaN, regex=True))

结果将是:

代码语言:javascript
代码运行次数:0
运行
复制
   age     workclass    occupation
0   19           NaN         Sales
1   28       Private           NaN
2   41  Self-emp-inc           NaN
3   30           NaN  Tech-support
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65566362

复制
相关文章

相似问题

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