import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier def data_input(): data=pd.read_excel('22AI1.xlsx') data=data.dropna(axis=0) data = data.reset_index(drop=True) data=data[['身高','体重']] return data # 分类瘦,中,胖为0,1,2 X=data_input() np_label=np.array([]) for h,w in zip(X.身高,X.体重): if h<=170 and w<60: np_label=np.append(np_label,'瘦') elif h>175 and w>70: np_label=np.append(np_label,'中') else: np_label=np.append(np_label,'胖') pd_label=pd.DataFrame({'标签': np_label}) print(pd_label) label=pd_label['标签'].map({'小':0,'中':1,'大':2}) print(label)为什么label会有nan
时间: 2024-04-27 12:19:22 浏览: 75
在上述代码中,标签的映射字典中只有 '小','中','大' 三个键值,而在np_label中的标签可能会包含其他的值,如 '瘦',因此在映射过程中会产生缺失值 NaN。要解决这个问题,你需要在映射字典中加入 '瘦' 这个键,并为其指定一个值。比如:`label = pd_label['标签'].map({'瘦': 0, '小': 1, '中': 2, '大': 3})`。这样就可以将 '瘦' 对应到 0,避免了产生 NaN 的情况。
阅读全文