import pandas as pd
from sklearn.preprocessing import LabelEncoder
pd.set_option('display.max_columns', 500)
df=pd.read_csv("https://media-doselect.s3.amazonaws.com/generic/831JKKEkW7kqd5M4evNva9LyB/insurance_grouped.csv")
le = LabelEncoder()#use this encoder to encod
df.BMI_group = le.fit_transform(df.BMI_group.values)
print(df.head())
预期产出 - 年龄 性别 BMI child 吸烟者 地区 收费 BMI_group 0 19 0 27.900 0 1 3 16884.92400 2 1 18 1 33.770 1 0 2 1725.55230 1 2 28 1 33.000 3 0 2 4449.46200 1 3 33 1 22.705 0 0 1 21984.47061 0 4 32 1 28.880 0 0 1 3866.85520 2
错误信息 - TypeError Traceback(最近一次调用最后一次) _encode 中的 ~\Anaconda3\lib\site-packages\sklearn\preprocessing\label.py(值、唯一值、编码) 104 尝试: --> 105 res = _encode_python(值、唯一值、编码) 106 除了类型错误:
~\Anaconda3\lib\site-packages\sklearn\preprocessing\label.py in _encode_python(值、唯一值、编码) 58 如果 uniques 为 None: ---> 59 个唯一值 = 排序(集合(值)) 60 个 uniques = np.array(uniques, dtype=values.dtype)
类型错误:“str”和“float”实例之间不支持“<”
在处理上述异常的过程中,又发生了一个异常:
TypeError Traceback(最近一次调用最后一次) 在 4 #df=pd.read_csv("https://media-doselect.s3.amazonaws.com/generic/831JKKEkW7kqd5M4evNva9LyB/insurance_grouped.csv ") 5 le = LabelEncoder()#使用这个编码器进行编码 ----> 6 df.BMI_group = le.fit_transform(df.BMI_group.values) 7 df.BMI_group
~\Anaconda3\lib\site-packages\sklearn\preprocessing\label.py 在 fit_transform(self, y) 第234章 [第 235 章] --> 236 self.classes_, y = _encode(y, 编码=True) 第237章 238
~\Anaconda3\lib\site-packages\sklearn\preprocessing\label.py in _encode(值、唯一值、编码) 105 res = _encode_python(值,唯一值,编码) 106 除了类型错误: --> 107 raise TypeError("参数必须是字符串或数字") 108 返回资源 109 其他:
类型错误:参数必须是字符串或数字
最佳答案
np.nan
被解释为 float ,因此不能与 srting 值进行比较。这是更新的代码。
import pandas as pd
from sklearn.preprocessing import LabelEncoder
import numpy as np
pd.set_option('display.max_columns', 500)
df=pd.read_csv("https://media-doselect.s3.amazonaws.com/generic/831JKKEkW7kqd5M4evNva9LyB/insurance_grouped.csv")
df["BMI_group"] = df["BMI_group"].replace(np.nan, 'none', regex=True)
le = LabelEncoder()#use this encoder to encod
df.BMI_group = le.fit_transform(df.BMI_group.values)
print(df.head())
关于python - LabelEncoder——类型错误: argument must be a string or number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61996710/