【问题标题】:How can I get the normalized matrix out of this function?我怎样才能从这个函数中得到归一化矩阵?
【发布时间】:2020-10-16 00:26:37
【问题描述】:

我得到了一个名为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)

但是我收到了这个错误-

可以做些什么来解决这个问题?

【问题讨论】:

标签: python pandas dataframe data-manipulation


【解决方案1】:

从您的代码看来,您希望将所有内容除以第一列,因此您可以简单地执行以下操作:

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:]

【讨论】:

    猜你喜欢
    • 2021-06-17
    • 2021-10-06
    • 1970-01-01
    • 2019-10-20
    • 2022-01-06
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多