问题描述
我得到了一个名为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)
但是我收到此错误-
该如何解决?
解决方法
在您的代码中,您似乎想将所有内容都除以第一列,因此您只需执行以下操作:
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:]