Python 3.x 如何在python数据帧中使用applymap处理规范化的缩放

Python 3.x 如何在python数据帧中使用applymap处理规范化的缩放,python-3.x,pandas,dataframe,python-applymap,Python 3.x,Pandas,Dataframe,Python Applymap,首先,我为一个模糊的问题道歉。让我解释一下。 我有一个熊猫数据框,包含两列,即平方英尺和卧室数量。我试图使用线性回归计算价格,并希望运行矩阵来计算梯度下降。由于平方英尺比卧室的数量大1000倍,而且梯度下降并不能很好地收敛,所以我试图通过标准化处理属性中的尺度变化 我所做的特殊标准化是用卧室和平方英尺的单个列单元格减去它们各自的平均值,然后用它们各自的标准偏差除以结果。 我编写的代码如下:- meanb= X[['bedrooms']].mean() meanFeet=X[['sqrfe

首先,我为一个模糊的问题道歉。让我解释一下。 我有一个熊猫数据框,包含两列,即平方英尺和卧室数量。我试图使用线性回归计算价格,并希望运行矩阵来计算梯度下降。由于平方英尺比卧室的数量大1000倍,而且梯度下降并不能很好地收敛,所以我试图通过标准化处理属性中的尺度变化

我所做的特殊标准化是用卧室和平方英尺的单个列单元格减去它们各自的平均值,然后用它们各自的标准偏差除以结果。 我编写的代码如下:-

  meanb= X[['bedrooms']].mean()
  meanFeet=X[['sqrfeet']].mean()
  stdb=X[['bedrooms']].std()
  stdFeet=X[['sqrfeet']].std()

  norb=lambda x: (x-meanb)/stdb
  nors=lambda x: (x-meanFeet)/stdFeet

  X['bedrooms']=X['bedrooms'].apply(norb)
  X['sqrfeet']= X['sqrfeet'].apply(nors)
问题是有一种更简单的方法可以做到这一点,因为如果我有1000个列,这将无法扩展。 我想知道是否有dataframe.applymap()方法可以计算各个列的平均值和std,并对每个列的各个单元格执行规范化。请注意,每个列可以有不同的值范围,但都是数字

假设

1.第一栏所列价格,以及

2.你想标准化除价格栏之外的所有栏吗

from sklearn import preprocessing 
import numpy as np


X, y = df.iloc[:,2:].values, df.iloc[:,1].values     
scaler = preprocessing.StandardScaler().fit(X)  
scaler.transform(X)


谢谢你的帮助。我知道有很多方法可以做到这一点。 事实上,我的解决方法如下。您可以有选择地对单个标记列使用apply/lambda函数。例如,如果我使用mean和max进行规范化,我使用了以下示例代码:(请注意,我没有在这里分享我的完整代码):

STD = lambda x: (x-x.mean())/x.std()
  sqrftMax=data['sqrfeet'].max()
  sqrftMean=data['sqrfeet'].mean()

  #normalized list of sqrfootage.
  nSqrft= data['sqrfeet'].apply(lambda x: (x-sqrftMean)/sqrftMax)
  data['sqrfeet'] =nSqrft