df.iloc [:,1:2] .values和df.iloc [:,1] .values在熊猫中有什么区别?

时间:2019-10-07 08:07:40

标签: python pandas scikit-learn

当我used x = dataset.iloc[:,1:2].values及以后在我的代码中

import matplotlib.pyplot as plt
import numpy as np
dataset = pd.read_csv('Position_Salaries.csv')
x = dataset.iloc[:,1:2].values #look here please
y = dataset.iloc[:,-1].values
from sklearn.svm import SVR
sv_regressor = SVR(kernel='rbf')

因此,当我改用x = dataset.iloc[:,1].values时,出现了错误提示

  

“期望2d数组,而改为1d数组”

在sv_regresso行中

错误在sv_regressor第w行,这就是为什么我标记了sklearn

2 个答案:

答案 0 :(得分:3)

不同之处在于,使用dataset.iloc[:,1:2]会得到DataFrame,使用dataset.iloc[:,-1]会得到Series。当您将属性valuesDataFrame一起使用时,将获得一个2d ndarray,而对于Series将其得到一个1d ndarray。考虑以下示例:

   A  B  C
0  0  2  0
1  1  0  0
2  1  2  1

系列:

type(df.iloc[:, -1])
# pandas.core.series.Series

df.iloc[:, -1].values.shape
# (3,)

DataFrame:

type(df.iloc[:, -1:])
# pandas.core.frame.DataFrame

df.iloc[:, -1:].values.shape
# (3, 1)

一步一步将目标变量作为2d ndarray是机器学习中的一个常见技巧。

答案 1 :(得分:0)

几乎相同,dataset.iloc[:,1:2]为您提供2维数据帧(从1到2的列),dataset.iloc[:,1]为您提供熊猫序列(1-d)(来自第1列)。 / p>