如何从该函数中获取归一化矩阵?

问题描述

我得到了一个名为stocks_df的数据集。每个列每天都有不同股票的股票价格。我正在尝试对其进行归一化,并将其作为矩阵返回。因此,每一列将针对每天的库存进行标准化。 编写了此功能-

def normalized_prices(stocks_df):
  normalized=np.zeros((stocks_df.shape[0],len(stocks_df.columns[1:])))
  for i in range(1,len(stocks_df.columns[1:])+1):
    for j in range(0,stocks_df.shape[0]+1):
      normalized[i,j]=((stocks_df[i][j]/stocks_df[0][i]))
  return normalized

然后尝试调用函数-

normalized_prices(stocks_df)

但是我收到此错误-

enter image description here

该如何解决

解决方法

在您的代码中,您似乎想将所有内容都除以第一列,因此您只需执行以下操作:

import numpy as np
import pandas as pd
np.random.seed(123)

stocks_df = pd.DataFrame(np.random.uniform(0,1,(20,10)))

stocks_df.div(stocks_df[0],axis=0)

      0         1         2         3         4         5         6         7          8         9
0   1.0  0.410843  0.325716  0.791585  1.033023  0.607502  1.408195  0.983288   0.690529  0.563008
1   1.0  2.124407  1.277973  0.173898  1.159877  2.150474  0.531770  0.511256   1.548909  1.549713
2   1.0  1.338951  1.141952  0.963150  1.138780  0.509077  0.570284  0.359809   0.462979  0.994601
3   1.0  4.708772  4.677955  5.360028  4.623317  3.390277  4.628973  9.699688  10.250916  5.448532
4   1.0  0.185300  0.508509  0.664836  1.388421  0.401401  0.774152  1.579542   0.832571  0.982277

这将为您提供除以第一列的每一列。现在,您只需要将此输出子集:

stocks_df.div(stocks_df[0],axis=0).iloc[:,1:]