如何将sklearn加载的iris数据集np.array正确转为pd.DataFrame?
正确转换Scikit-learn鸢尾花数据集为Pandas DataFrame的方法
你的代码出错原因是:datasets.load_iris()返回的是一个字典,包含data、target、feature_names等多个键值对。直接把整个字典传给pd.DataFrame()构造函数,会导致数据维度不匹配,特征列无法正确填充,最终出现NaN。
以下是两种可靠的解决方法:
方法一:先合并特征与标签,再创建DataFrame
import pandas as pd import numpy as np from sklearn import datasets # 加载鸢尾花数据集 iris = datasets.load_iris() # 将标签转为二维数组,与特征数据拼接 combined_data = np.hstack((iris.data, iris.target.reshape(-1, 1))) # 用拼接后的数据和完整列名创建DataFrame df = pd.DataFrame(combined_data, columns=iris.feature_names + ['target'])
方法二:先创建特征DataFrame,再追加标签列
import pandas as pd from sklearn import datasets # 加载数据集 iris = datasets.load_iris() # 用特征数据和特征名生成DataFrame df = pd.DataFrame(iris.data, columns=iris.feature_names) # 新增target列并赋值 df['target'] = iris.target
两种方法都能保证特征列和标签列正确填充,不会出现NaN问题。
内容的提问来源于stack exchange,提问作者satyamchadha
相关产品推荐
相关产品推荐

