如果数据集有缺失值,如何将 python 中的标称数据转换为数字?
How to convert nominal data to numeric in python if dataset has missing value?
我正在使用二进制分类数据集。我想将名义数据转换为 numeric.But 我有缺失值,我不想删除它们,因为我的目标是用 KNN 方法填充主题。我应该怎么做才能将它们转换为数字数据?
age | class
------------
1 | NAN
2 | yes
3 | no
4 | NAN
5 | no
6 | NAN
7 | no
8 | yes
9 | no
10 | NAN
如果数据集有缺失值,此代码将不起作用
mapping = {label:idx for idx,label in enumerate(np.unique(df['class']))}
df['class'] = df['class'].map(mapping)
在调用 unique 之前过滤掉空值?
import numpy as np
import pandas as pd
df = pd.DataFrame([None, 'yes', 'no', None, 'no',
None, 'no', 'yes', 'no', None], columns=['class'])
mapping = {
label: idx for idx, label in
enumerate(np.unique(df.loc[df['class'].notnull(), 'class']))
}
df['class'] = df['class'].map(mapping)
print(df)
df
:
class
0 NaN
1 1.0
2 0.0
3 NaN
4 0.0
5 NaN
6 0.0
7 1.0
8 0.0
9 NaN
我不知道您是否有更多 类,这就是您动态分配 mapping
的原因,但对于这种特殊情况:
df['class'] = df['class'].map({'yes': 1, 'no': 0})
我正在使用二进制分类数据集。我想将名义数据转换为 numeric.But 我有缺失值,我不想删除它们,因为我的目标是用 KNN 方法填充主题。我应该怎么做才能将它们转换为数字数据?
age | class
------------
1 | NAN
2 | yes
3 | no
4 | NAN
5 | no
6 | NAN
7 | no
8 | yes
9 | no
10 | NAN
如果数据集有缺失值,此代码将不起作用
mapping = {label:idx for idx,label in enumerate(np.unique(df['class']))}
df['class'] = df['class'].map(mapping)
在调用 unique 之前过滤掉空值?
import numpy as np
import pandas as pd
df = pd.DataFrame([None, 'yes', 'no', None, 'no',
None, 'no', 'yes', 'no', None], columns=['class'])
mapping = {
label: idx for idx, label in
enumerate(np.unique(df.loc[df['class'].notnull(), 'class']))
}
df['class'] = df['class'].map(mapping)
print(df)
df
:
class
0 NaN
1 1.0
2 0.0
3 NaN
4 0.0
5 NaN
6 0.0
7 1.0
8 0.0
9 NaN
我不知道您是否有更多 类,这就是您动态分配 mapping
的原因,但对于这种特殊情况:
df['class'] = df['class'].map({'yes': 1, 'no': 0})