试图获取股票数据并绘制图表,但却被困于此

2024-04-29 07:33:37 发布

您现在位置:Python中文网/ 问答频道 /正文

import yfinance as yf
import numpy as np
import matplotlib.pyplot as plt

amd = yf.Ticker("AMD")

print(amd.history(period="10y"))

def graph_data():
    source_code = str(amd.history(period="10y"))
    stock_data = []
    split_source = source_code.split("\n")
    for line in split_source[2:-1]:
        stock_data.append(line.split())
    del stock_data[-1]
    stock_data = str(stock_data)

    date, openp, hihgp, lowp, closep, volumep, div, splits = np.loadtxt(stock_data, delimiter=",", unpack=True)
    print(date)


graph_data()

我之所以会犯这些错误是出于某种原因,我想知道你们中是否有人知道我做错了什么:

line 18, in graph_data date, openp, hihgp, lowp, closep, volumep, div, splits = np.loadtxt(stock_data, delimiter=",", unpack=True) line 968, in loadtxt fh = np.lib._datasource.open(fname, 'rt', encoding=encoding) line 269, in open return ds.open(path, mode, encoding=encoding, newline=newline) line 623, in open raise IOError("%s not found." % path) OSError: [['2009-11-30', '6.90', '7.01', '6.78', '7.01', '19388300', '0', '0'], ['2009-12-01', '7.11', '7.25', '7.01', '7.20', '23136400', '0', '0'], ['2009-12-02', '7.21', '7.50', '7.21', '7.30', '26906700', '0', '0'], ['2009-12-03', '7.37', '8.23', '7.36', '8.03', '69019800', '0', '0'], ['2009-12-04', '8.09', '8.25', '7.65', '7.86', '43885500', '0', '0'], ['...', '...', '...', '...', '...', '...', '...', '...'], ['2019-11-21', '40.42', '40.71', '38.64', '39.52', '88069400', '0', '0'], ['2019-11-22', '39.36', '39.89', '38.19', '39.15', '56931900', '0', '0'], ['2019-11-25', '39.50', '40.17', '39.49', '39.79', '45769500', '0', '0'], ['2019-11-26', '39.30', '39.48', '38.81', '38.99', '43603300', '0', '0'], ['2019-11-27', '39.46', '39.76', '39.07', '39.41', '33630100', '0', '0']] not found.


Tags: inimportsourcedatadateasstocknp
1条回答
网友
1楼 · 发布于 2024-04-29 07:33:37

np.loadtxt将txt文件的路径作为输入。它将打开文件并从中读取内容。您已经将stock_data作为数组,为什么要将其转换为字符串并读回?例如,您可以在for循环之后执行以下操作:

date, openp, hihgp, lowp, closep, volumep, div, splits = np.array(stock_data).T

print(date)

输出:

array(['2009-11-30', '2009-12-01', '2009-12-02', '2009-12-03',
       '2009-12-04',...], dtype='<U10')

相关问题 更多 >