Numpy的ndarray和Pandas的Series和DataFrame类型的一些对比和理解

1、ndarray对象

1、介绍
  NumPy中的ndarray是一个多维数组对象,可以通过reshape()函数来将一维数组转换为多维数组。
2、代码测试

# ndarray对象测试
x = np.array([1, 2, 3, 4])
# (4,)
print(x.shape)
# 
print(type(x))
# [1 2 3 4]
print(x)

# 通过reshape()函数将一维数组转换为多维数组。
x2 = x.reshape((2, 2))
# (2, 2)
print(x2.shape)
# 
print(type(x2))
# [[1 2]
#  [3 4]]
print(x2)

2、Series对象

1、介绍
  Series对象可以简单地被认为是一维的数组。不过Series 和一维数组最主要的区别在于 Series 类型具有索引( index )。
2、测试

# Series对象测试
s = pd.Series([1, 2, 3, 4])
# (4,)
print(s.shape)
# 
print(type(x))
# 0    1
# 1    2
# 2    3
# 3    4
# dtype: int64
print(s)

  在梯度下降法求解线性回归的过程中,程序中使用下面方式读取文件中的数据,产生的train_X对象是一个Series类型的数据。

t = data.sample(len(data), random_state=0)
# (400,)
# 
train_X = t.iloc[:400, 5]

  此时该数据是一个一维的数据,不是我们需要的,我们应该通过下面的切片方式获取一列数据:

train_X = t.iloc[:400, 5:6]

# (400, 1)
print(train_X.shape)
# 
print(type(train_X))

  可以看到,获取的数据是一个DataFrame类型,是一个二维数组矩阵,我们可以将其放到模型中进行训练。

3、DataFrame对象

1、介绍
  DataFrame对象可以看作一个二维数组,每一列单独取出来是一个 Series 。
2、代码测试

dates = pd.date_range("20201016", periods=2)
# DatetimeIndex(['2020-10-16', '2020-10-17'], dtype='datetime64[ns]', freq='D')
print(dates)

# DataFrame相当于一个二维矩阵
df = pd.DataFrame(np.random.randn(2, 2), index=dates, columns=['a', 'b'])
# 输出:以dates作为左侧行的索引,以字母a,b作为列的索引
#                    a        b
# 2020-10-16  0.442655 -0.22998
# 2020-10-17 -1.157189 -0.27214
print(df)

  使用下面方式读取文件中的数据,产生的data对象也是一个DataFrame类型的数据:

data = pd.read_csv(r"dataset/boston.csv", header=0)

# type(data) 
print("type(data)", type(data))

你可能感兴趣的:(numpy,python)