python - LabelEncoder——类型错误: argument must be a string or number

标签 python python-3.x pandas scikit-learn

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/

相关文章:

python - 如何识别图像中具有相似强度的附近像素?

python - Pandas 就地条件值乘法

python - 收敛警告 : Maximum Likelihood slows kernel-run-time?

python - Django 1.9 教程 __str__ () 不工作

python - 计算任意数量的字典中最常见的值

python-3.x - python 使用服务帐户 json 文件推送 GCP 云存储文件

python - 将 Matrix 市场矩阵转换为 pandas 数据框 python

python - 将 N 个点放入 M 个相等的箱子中

python - 如何查看日期在哪个日期范围内并相应地分配值?

python - Pandas Dataframe 用其他列的第一个值填充列