让我为你介绍使用Python的pandas为股票绘制趋势图的完整攻略。
1. 确认环境和安装相关库
在开始绘制趋势图之前,我们需要确认我们的电脑中已经安装了下面这些Python库:
- pandas
- matplotlib
- yfinance(用于获取Yahoo Finance上的股票数据)
如果你还没有安装这些库,可以通过以下命令在终端或者命令提示符中安装它们:
pip install pandas matplotlib yfinance
2. 获取股票数据
在使用pandas绘制趋势图之前,我们需要获取一些股票数据,可以使用yfinance
库去获取Yahoo Finance上的股票数据。下面是一个获取苹果公司股价数据的例子:
import yfinance as yf
aapl = yf.Ticker("AAPL")
df = aapl.history(period="max")
上面的代码片段就获取了苹果公司(AAPL)的历史股价数据,并存入一个pandas DataFrame对象。其中,period
参数指定了获取的时间段,这里的max
表示获取全部历史数据。
3. 在pandas中绘制趋势图
默认情况下,pandas将时间作为x轴,将股价作为y轴,并使用线图(line plot)表示股价趋势。我们可以使用pandas的plot
函数来绘制出股价的趋势图:
import matplotlib.pyplot as plt
plt.style.use('ggplot')
df['Close'].plot(figsize=(10, 6))
plt.title("AAPL Stock Price")
plt.xlabel("Date")
plt.ylabel("Price")
plt.show()
上面的代码片段首先使用了plt.style.use
来设置matplotlib的样式,然后使用df['Close'].plot
来绘制收盘价趋势图。我们还可以使用plt.title
,plt.xlabel
和plt.ylabel
来设置图表的标题和轴标签。
示例说明
示例1:绘制多只股票的收盘价趋势图
为了绘制多只股票的收盘价趋势图,我们可以使用一个for循环来获取多只股票的数据,并将其存入一个字典(dict)中。然后,我们可以使用pandas.DataFrame
来将字典转换为一个DataFrame对象,并使用plot
函数绘制趋势图。下面是一个获取苹果、谷歌和微软的收盘价数据并绘制趋势图的例子:
stocks = {'AAPL': 'Apple Inc.',
'GOOG': 'Alphabet Inc.',
'MSFT': 'Microsoft Corporation'}
data = {}
for stock, company in stocks.items():
ticker = yf.Ticker(stock)
data[company] = ticker.history(period="max")['Close']
df = pd.DataFrame(data)
plt.style.use('ggplot')
df.plot(figsize=(12, 6))
plt.title("Stock Price")
plt.xlabel("Date")
plt.ylabel("Price")
plt.show()
上述示例中,stocks
字典存储了股票代码和公司名称,我们遍历这个字典来获取每个股票的历史收盘价数据,并将其添加到data
字典中。然后,我们将这个字典转换为一个DataFrame对象,并使用plot
函数绘制出趋势图。
示例2:绘制股票收益率的直方图
我们也可以使用pandas来计算股票的收益率,并绘制直方图。为了计算收益率,我们可以使用pct_change
函数,它将计算相邻两天价格的变化百分比。下面是一个计算苹果公司收益率,并绘制直方图的例子:
aapl = yf.Ticker("AAPL")
df = aapl.history(period="max")
returns = df['Close'].pct_change()
plt.style.use('ggplot')
plt.hist(returns.dropna(), bins=50)
plt.title("AAPL Returns")
plt.xlabel("Returns")
plt.ylabel("Frequency")
plt.show()
上面的代码中,pct_change
函数计算了股票每日百分比变化,同时使用dropna
函数删除空值。然后,我们使用matplotlib.pyplot.hist
函数将收益率数据绘制为一个直方图。