使用python的pandas为你的股票绘制趋势图

  • Post category:Python

让我为你介绍使用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.titleplt.xlabelplt.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函数将收益率数据绘制为一个直方图。