我正在尝试制作一个分析股票的程序,现在我编写了一个简单的python脚本来绘制移动平均线。从本机路径提取CSV文件可以正常工作,但是当我从网络上获取它时,它将无法正常工作。不断显示错误:“列表”对象没有属性“日期”
.CSV可以很好地工作,但是网络内容混乱了。 如果我运行print(df),它会非常奇怪地显示该表。
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_html("https://finance.yahoo.com/quote/AAPL/history?period1=1428469200&period2=1554699600&interval=1d&filter=history&frequency=1d")
x = df.Date
y = df.Close
a = df['Close'].rolling(50, min_periods=50).mean()
b = df['Close'].rolling(200, min_periods=200).mean()
plt.plot(x, y)
plt.plot(a)
plt.plot(b)
plt.savefig("AAPL Stuff")
我在Jupyter Notebook中跑步。
我希望输出结果为[1]图表的图像,但出现错误:
AttributeError Traceback (most recent call last)
<ipython-input-18-d97fbde31cef> in <module>
4
5 df = pd.read_html("https://finance.yahoo.com/quote/AAPL/history?period1=1428469200&period2=1554699600&interval=1d&filter=history&frequency=1d")
----> 6 x = df.Date
7 y = df.Close
8
AttributeError: 'list' object has no attribute 'Date'
答案 0 :(得分:0)
数据被放入一个(一个元素)列表中。
如果您执行此操作,则在read_html
调用之后,它应该可以工作:
df = df[0]
答案 1 :(得分:-1)
您是要从DataFrame对象访问Date功能吗? 如果是这样,请更改:
python x = df.Date
至python x = df['Date']
python y = df.Close
至python y = df['Close']
编辑:
另外:python df.plot(x='Date', y='Close', style='o')
可以代替plt.plot