我正在尝试使用标签编码器将分类数据转换为数值。
我需要一个 LabelEncoder 将我的缺失值保留为 'NaN' 以便之后使用 Imputer。所以我想在像这样标记后使用掩码来替换原始数据框
df = pd.DataFrame({'A': ['x', np.NaN, 'z'], 'B': [1, 6, 9], 'C': [2, 1, np.NaN]})
A B C
0 x 1 2.0
1 NaN 6 1.0
2 z 9 NaN
dfTmp = df
mask = dfTmp.isnull()
A B C
0 False False False
1 True False False
2 False False True
Run Code Online (Sandbox Code Playgroud)
所以我得到一个带有真/假值的数据框
然后,在创建编码器中:
df = df.astype(str).apply(LabelEncoder().fit_transform)
Run Code Online (Sandbox Code Playgroud)
我该如何继续,以便对这些值进行编码?
谢谢
我尝试编译此代码,但出现此错误:
NameError: name 'dtype' is not defined
Run Code Online (Sandbox Code Playgroud)
这是Python代码:
# -*- coding: utf-8 -*-
from __future__ import division
import pandas as pd
import numpy as np
import re
import missingno as msno
from functools import partial
import seaborn as sns
sns.set(color_codes=True)
if dtype(data.OPP_CREATION_DATE)=="datetime64[ns]":
print("OPP_CREATION_DATE is of datetime type")
else:
print("warning: the type of OPP_CREATION_DATE is not datetime, please fix this")
Run Code Online (Sandbox Code Playgroud)
有什么想法可以帮助我解决这个问题吗?谢谢
我正在使用 aws sagemaker 来调用端点:
payload = pd.read_csv('payload.csv', header=None)
>> payload
0 1 2 3 4
0 setosa 5.1 3.5 1.4 0.2
1 setosa 5.1 3.5 1.4 0.2
Run Code Online (Sandbox Code Playgroud)
用这个代码:
response = runtime.invoke_endpoint(EndpointName=r_endpoint,
ContentType='text/csv',
Body=payload)
Run Code Online (Sandbox Code Playgroud)
但我遇到了这个问题:
ParamValidationError Traceback (most recent call last)
<ipython-input-304-f79f5cf7e0e0> in <module>()
1 response = runtime.invoke_endpoint(EndpointName=r_endpoint,
2 ContentType='text/csv',
----> 3 Body=payload)
4
5 result = json.loads(response['Body'].read().decode())
~/anaconda3/envs/python3/lib/python3.6/site-packages/botocore/client.py in _api_call(self, *args, **kwargs)
312 "%s() only accepts keyword arguments." % py_operation_name)
313 # The "self" in this scope is referring to …Run Code Online (Sandbox Code Playgroud)