python数据类型中series与array的区别
程序员文章站
2023-09-17 21:22:14
在python处理数据时,数据标准化函数StandardScaler进行标准化数据框的某一列数据时,直接选择数据框的某列进行标准化报错:from sklearn.preprocessing import StandardScalerStandardScaler().fit_transform(data['Amount'])报错提醒显示,函数需要的是二维数组,但是命令输入的是一维数组,如果你的数据是一个特征(n*1),那么使用reshape(-1,1)重塑结构,如果数据是一个样本(1*n),那么使用...
在python处理数据时,数据标准化函数StandardScaler进行标准化数据框的某一列数据时,直接选择数据框的某列进行标准化报错:
from sklearn.preprocessing import StandardScaler
StandardScaler().fit_transform(data['Amount'])
报错提醒显示,函数需要的是二维数组,但是命令输入的是一维数组,如果你的数据是一个特征(n*1),那么使用reshape(-1,1)重塑结构,如果数据是一个样本(1*n),那么使用reshape(1,-1)重塑结构。
果然用reshape重塑后顺利:
from sklearn.preprocessing import StandardScaler
print(data['Amount'].head(5))
StandardScaler().fit_transform(data['Amount'].values.reshape(-1,1))[0:5]
是怎么个回事?
首先查看一下数据类型:
从数据框中直接选出来的某列:
print('数据框series数据类型','\n',type(data['Amount']),
'\n',
'series的结构','\n',data['Amount'].shape)
print('查看series前几个数据','\n',data['Amount'].head(6))
print('\n')
数据类型是series,Series和DataFrame是Pandas的基本数据结构,直接从数据库中选择一列数据,类型是series(选择多列时数据类型是DataFrame)。
从数据框中选择某列取values:
print('1维数组数据类型','\n',type(data['Amount'].values),
'\n',
'为什么说上面是1维数组?,请看其结构:','\n',data['Amount'].values.shape)
print('查看1维数组前几个数据',data['Amount'].values[0:6]) #无法用head()
数据类型是数组,且是1维的。
而array是Numpy的数据结构。
一维数组转变为二维数组:
#再看reshape处理的
print('2维数组数据类型','\n',type(data['Amount'].values.reshape(-1,1)),
'\n',
'为什么说上面是2维数组?,请看其结构:','\n',
data['Amount'].values.reshape(-1,1).shape)
print('查看2维数组前几个数据',data['Amount'].values.reshape(-1,1)[0:6]) #无法用head()
python中的shape与reshape函数:
二者是numpy中的函数,功能都是对于数组的形状进行操作。
shape函数可以了解数组的结构;
reshape函数可以对数组结构进行改变。
reshape常见用法:
- 依次生成n个自然数,并以a行b列的数组形式显示:
np.arange(10).reshape(2,5)
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
np.arange(1,21,2).reshape(2,5)
array([[ 1, 3, 5, 7, 9],
[11, 13, 15, 17, 19]])
reshape函数中的参数需要满足乘积等于数组中数据总数。
- reshape(m,-1)或reshape(-1,n)
必须是矩阵格式或数组格式,才能使用,表示将其结构重组,以m行d列或d行n列的形式表示。
这个数d是计算出来的,也就是参数-1的作用。
d=数组或矩阵里面元素个数/(m或n)
print(np.arange(10))
np.arange(10).reshape(-1,5)
print(np.arange(10))
np.arange(10).reshape(5,-1)
本文地址:https://blog.csdn.net/qq_43165880/article/details/107139636