Numpy 无法找出出现此错误的原因。| TypeError:不支持/:';列表';和';int';

Numpy 无法找出出现此错误的原因。| TypeError:不支持/:';列表';和';int';,numpy,typeerror,Numpy,Typeerror,我有一个学校的项目,我需要从雅虎财经获取历史数据,然后对其进行一些计算并写一份报告 import numpy as np import csv import pandas_datareader as pdr def dataanalysis(stock1, comp1, comp2, comp3): # Function to download data from Yahoo stk1 = pdr.get_data_yahoo(str(stock1), start="1999-11

我有一个学校的项目,我需要从雅虎财经获取历史数据,然后对其进行一些计算并写一份报告

import numpy as np
import csv
import pandas_datareader as pdr


def dataanalysis(stock1, comp1, comp2, comp3):  # Function to download data from Yahoo
    stk1 = pdr.get_data_yahoo(str(stock1), start="1999-11-01", end="2019-11-01")  # Downloading 20 years of data
    cmp1 = pdr.get_data_yahoo(str(comp1), start="1999-11-01", end="2019-11-01")
    cmp2 = pdr.get_data_yahoo(str(comp2), start="1999-11-01", end="2019-11-01")
    cmp3 = pdr.get_data_yahoo(str(comp3), start="1999-11-01", end="2019-11-01")

    stk1.sort_index(ascending=False, inplace=True)  # Put dem badboys in descending order
    cmp1.sort_index(ascending=False, inplace=True)
    cmp2.sort_index(ascending=False, inplace=True)
    cmp3.sort_index(ascending=False, inplace=True)

    stk1['Returns'] = (np.log(stk1['Close'] / stk1['Close'].shift(-1)))
    cmp1['Returns'] = (np.log(cmp1['Close'] / cmp1['Close'].shift(-1)))
    cmp2['Returns'] = (np.log(cmp2['Close'] / cmp2['Close'].shift(-1)))
    cmp3['Returns'] = (np.log(cmp3['Close'] / cmp3['Close'].shift(-1)))

    stk1.to_csv(str(stock1) + '.csv')  # Out putting data to csv files
    cmp1.to_csv(str(comp1) + '.csv')
    cmp2.to_csv(str(comp2) + '.csv')
    cmp3.to_csv(str(comp3) + '.csv')

    stk1_returns = list(stk1['Returns'])  # Creating a list from the 'Returns' column
    cmp1_returns = list(cmp1['Returns'])
    cmp2_returns = list(cmp2['Returns'])
    cmp3_returns = list(cmp3['Returns'])

    del stk1_returns[-1], cmp1_returns[-1], cmp2_returns[-1], cmp3_returns[-1]

    stk1_ret_avg, cmp1_ret_avg, cmp2_ret_avg, cmp3_ret_avg = np.average(stk1_returns), np.average(cmp1_returns), np.average(cmp2_returns), np.average(cmp3_returns)
    stk1_volit, cmp1_volit, cmp2_volit, cmp3_volit = np.std(stk1_returns), np.std(cmp1_returns), np.std(cmp2_returns), np.std(cmp3_returns)

    tickers = ["", str(stock1), str(comp1), str(comp2), str(comp3)]
    averages = ["Averages = ", stk1_ret_avg, cmp1_ret_avg, cmp2_ret_avg, cmp3_ret_avg]
    volatility = ["Volatility = ", stk1_volit, cmp1_volit, cmp2_volit, cmp3_volit]
    correlations = np.corrcoef([stk1_returns, cmp1_returns, cmp2_returns, cmp3_returns])

    data_analyzed = [tickers, averages, volatility, correlations]
    # print(data_analyzed)
    return data_analyzed


def print_results(group):
    ticker_list = list(group[0])
    with open(str(ticker_list[1]) + " and Comp"".csv", "w") as group_anal:
        groupCSV = csv.writer(group_anal)
        for i in range(3):
            groupCSV.writerow(group[i])
        for i in range(2):
            groupCSV.writerow([])
        groupCSV.writerow(["Correlation Matrix"])
        groupCSV.writerow(ticker_list[1:5])
        for r in group[3]:
            groupCSV.writerow(r)


group1 = dataanalysis("AAPL", "AMZN", "INTC", "MSFT")  # Running the function
# group2 = dataanalysis("BARC.L", "BK", "GS", "DB")
group3 = dataanalysis("BRK-B", "ALL", "PGR", "MKL")
group4 = dataanalysis("MCD", "SBUX", "YUM", "WEN")
# group5 = dataanalysis("TSCO.L", "CA.PA", "SBRY.L", "WMT")
group6 = dataanalysis("WWE", "DISH", "DIS", "CMCSA")
print_results(group1)
# print_results(group2)
print_results(group3)
print_results(group4)
# print_results(group5)
print_results(group6)
这运行没有问题,但如果我包括其他已注释掉的组2和组5,则会出现以下错误:

File "C:/Users/HHF/OneDrive/Programming/Python/Assignments/Final Assignment/Financial Records/calculations.py", line 62, in <module>
    group2 = dataanalysis("BARC.L", "BK", "GS", "DB")
  File "C:/Users/HHF/OneDrive/Programming/Python/Assignments/Final Assignment/Financial Records/calculations.py", line 40, in dataanalysis
    correlations = np.corrcoef([stk1_returns, cmp1_returns, cmp2_returns, cmp3_returns])
 "TypeError: unsupported operand type(s) for /: 'list' and 'int'" error.
文件“C:/Users/HHF/OneDrive/Programming/Python/Assignments/Final Assignment/Financial Records/calculations.py”,第62行,在
组2=数据分析(“BARC.L”、“BK”、“GS”、“DB”)
数据分析中第40行的文件“C:/Users/HHF/OneDrive/Programming/Python/Assignments/Final Assignment/Financial Records/calculations.py”
相关性=np.corrcoef([stk1_返回、cmp1_返回、cmp2_返回、cmp3_返回])
“TypeError:不支持/:'list'和'int'的操作数类型”错误。
我已经尝试了我能想到的一切,但没有任何效果。如果我删除所有带有句点符号的标记,它会工作,但我不确定为什么会出现这种情况,因为如果我打印stk1_返回,它似乎是一个常规列表


非常感谢你能给我的任何帮助

你要传递给
np.corrcoef
的东西之一并不是你想象的那样。

例如,这会引发相同的错误:

import numpy as np
np.corrcoef([[[1,2,3,4]], [4,5,6,7]])

请注意,第一个“数组”实际上是一个列表的列表。可能您将stk1['Returns']等转换到列表的位出错了。(如果我是你,我会坚持使用数组。)

你没有提供足够的信息来帮助我们。更全面的回溯可能会有所帮助,因为它可以确定是哪个操作在进行此划分。然后介绍如何找出
group2
的不同之处。有些数据丢失了吗?不同尺寸?当列表应该是其他内容(如数组)时,它是什么?