Python ValueError:使用pd df&;的序列设置数组元素;np.数组
我得到Python ValueError:使用pd df&;的序列设置数组元素;np.数组,python,pandas,numpy,for-loop,valueerror,Python,Pandas,Numpy,For Loop,Valueerror,我得到ValueError:当I=0时,为行beta[I]=np.cov(rm[I],ra[I])设置一个数组元素,这意味着for循环开始运行并在那里停止,因此我得到rm和ra向量的第一个值,但不是beta的第一个值。 agg_-df是一种pd-df,有50行和1列,称为mean import pandas as pd import glob import numpy as np path ="C:\\Users\\sharon\\Desktop\\financial mathematics\\
ValueError:当I=0
时,为行beta[I]=np.cov(rm[I],ra[I])
设置一个数组元素,这意味着for循环开始运行并在那里停止,因此我得到rm
和ra
向量的第一个值,但不是beta
的第一个值。
agg_-df
是一种pd-df,有50行和1列,称为mean
import pandas as pd
import glob
import numpy as np
path ="C:\\Users\\sharon\\Desktop\\financial mathematics\\sadna"
all_files = glob.glob(path + "/*.csv")
df_list = [(pd.read_csv(f, encoding = "utf-8", header = None,usecols = [3], nrows = 470, ).assign(filename = f)) for f in all_files]
final_df = pd.concat(df_list)
final_df[3]= final_df[3].apply(pd.to_numeric, errors='coerce')
agg_df = final_df.groupby(['filename']).agg(['mean'])
agg_df.columns=['mean']
agg_df.index=range(50)
ra=np.ones(shape=(50))
beta=np.ones(shape=(50))
rm=np.ones(shape=(50))
for i in range(0,50):
rm[i]=np.mean(agg_df['mean'])
ra[i]=agg_df.loc[i,'mean']
beta[i]=np.cov(rm[i],ra[i])
编辑:
agg_df
中的数据是50只股票每日价格变动前的平均值,每行一只股票。
当您尝试为np.array
元素分配与该元素形状不兼容的内容时,会发生此错误。例如,将具有形状(2,2)
的元素分配给具有形状(1,)
的数组元素
现在让我们检查一下形状beta[i]
是一个标量(shape()
),而np.cov()
返回一个协方差矩阵,其形状至少为(1,1)
,它与beta[i]
不兼容,因此会出现错误
您应该重新考虑数组的形状,以与预期的计算相匹配。当您尝试为np.array
元素分配与该元素形状不兼容的内容时,会发生此错误。例如,将具有形状(2,2)
的元素分配给具有形状(1,)
的数组元素
现在让我们检查一下形状beta[i]
是一个标量(shape()
),而np.cov()
返回一个协方差矩阵,其形状至少为(1,1)
,它与beta[i]
不兼容,因此会出现错误
您应该重新考虑阵列的形状,以与预期的计算相匹配。中:
beta[i]=np.cov(rm[i],ra[i])
beta
、rm
和ra
都是(50,)个数组。因此,rm[i]
etc是一个标量,beta[i]
只能容纳一个数字
如果我给标量一个np.cov
,我会得到一个警告和(2,2)数组:
[104]中的:np.cov(1.23,2.323)
/usr/local/bin/ipython3:1:运行时警告:自由度In:
beta
、rm
和ra
都是(50,)个数组。因此,rm[i]
etc是一个标量,beta[i]
只能容纳一个数字
如果我给标量一个np.cov
,我会得到一个警告和(2,2)数组:
[104]中的:np.cov(1.23,2.323)
/usr/local/bin/ipython3:1:RuntimeWarning:Degrees of freedom你能提供关于你的数据的更多细节吗,也许上传一个小例子,这样我们就可以真正复制你的条件了?您的预期输出是什么?尤其是所有变量的数据类型在这里都很重要(我的第一个假设:这有点问题)[可复制的示例)到目前为止,我建议这样做,因为这确实有助于其他人总结,是什么导致了您的麻烦。有关问题,请参阅我的版本。关于您评论中的链接-“未找到页面”所以我看不懂。现在我明白了,链接搞乱了。这里又是-->单击是,但我了解了agg_-df现在的样子,所以相关的只是agg_-df。你能提供更多关于你的数据的详细信息吗,也许上传一个小例子,这样我们就可以真正尝试复制你的条件了?你的预期输出是什么?尤其是数据类型所有变量的大小在这里都很重要(我的第一个假设:这有问题)。如果你到目前为止还没有阅读关于[可复制示例]的页面,我建议你这样做,因为这确实有助于其他人总结,是什么导致了你的麻烦。有关问题,请参阅我的版本。关于你评论中的链接-“找不到页面”因此我无法阅读。现在我看到,链接被弄乱了。这里再次出现-->单击是,但我了解了当前的agg_-df外观,因此相关的只是agg_-df。
In [104]: np.cov(1.23,2.323)
/usr/local/bin/ipython3:1: RuntimeWarning: Degrees of freedom <= 0 for slice
#!/usr/bin/python3
/usr/local/lib/python3.6/dist-packages/numpy/lib/function_base.py:2455: RuntimeWarning: divide by zero encountered in true_divide
c *= np.true_divide(1, fact)
/usr/local/lib/python3.6/dist-packages/numpy/lib/function_base.py:2455: RuntimeWarning: invalid value encountered in multiply
c *= np.true_divide(1, fact)
Out[104]:
array([[nan, nan],
[nan, nan]])