前言:
如今兄弟们对“python股票聚类”大概比较重视,咱们都想要剖析一些“python股票聚类”的相关资讯。那么小编在网摘上搜集了一些关于“python股票聚类””的相关文章,希望你们能喜欢,我们快快来了解一下吧!马克西姆·霍普曼 ( Maxim Hopman ) 在Unsplash上拍摄的照片
MAANG 股票在过去十年中大幅上涨。这些股票在纳斯达克 100 指数中的权重超过 35%,往往会影响市场。这些巨头近期股价的下跌,引起了市场上每一位投资者的关注。
本项目旨在探索这些庞大的科技股在过去一年(即2021年5月至2022年4月)的股价表现。
您需要为此项目安装 pandas-datareader 才能工作。它允许您直接从互联网上阅读股票信息。
在控制台中键入pip install pandas-datareader以导入包。
首先,让我们导入所有必要的库。
from pandas_datareader import data, wb import pandas as pd import numpy as np import datetime import matplotlib.pyplot as plt %matplotlib inline import seaborn as sns
EDA 只关注去年的表现。因此,我们将如前所述定义日期。
开始 = datetime.datetime(2021,5,1)结束 = datetime.datetime(2022,4,30)
您可以使用以下链接了解可用于获取数据的各种来源。我使用雅虎作为来源。
# Meta/Facebook FB = data.DataReader(“FB”, 'yahoo', start, end)# Amazon AMZN = data.DataReader(“AMZN”, 'yahoo', start, end)# Apple AAPL = data.DataReader(“AAPL”, 'yahoo', start, end)# Netflix NFLX=data.DataReader(“NFLX”, 'yahoo', start, end)# Google GOOG = data.DataReader(“GOOG”, 'yahoo', start, end)#Nasdaq NDX = data.DataReader(“NDX”, 'yahoo', start, end)# 也可以这样做来导入多只股票的数据df = data.DataReader(["FB","AMZN","AAPL","NFLX","GOOG","NDX"],'yahoo', start, end )
创建一个代码列表。
股票代码 = [“FB”,”AMZN”,”AAPL”,”NFLX”,”GOOG”,”NDX”]#结合所有股票的数据创建一个时间序列数据框maang_stocks = pd.concat([FB,AMZN,AAPL,NFLX,GOOG,NDX],axis=1,keys=tickers)#define 列名maang_stocks.columns.names= ['MAANG Ticker',"Stock_Info"]
这就是数据框的样子!
maang_stocks.head()
数据框——图 1
这是一个包含两列的多级数据框——“MAANG Ticker”和“Stock_Info”,其中包含各个股票的开盘价、最高价、最低价、收盘价和调整后的收盘价。
maang_stocks.columns输出:MultiIndex([('FB', 'High'), ('FB', 'Low'), ('FB', 'Open'), ('FB', 'Close'), ('FB', 'Volume '), ('FB', 'Adj Close'), ('AMZN', 'High'), ('AMZN', 'Low'), ('AMZN', 'Open'), ('AMZN', ' Close'), ('AMZN', 'Volume'), ('AMZN', 'Adj Close'), ('AAPL', 'High'), ('AAPL', 'Low'), ('AAPL', 'Open'), ('AAPL', 'Close'), ('AAPL', 'Volume'), ('AAPL', 'Adj Close'), ('NFLX', 'High'), ('NFLX', 'Low'), ('NFLX', 'Open'), ('NFLX', 'Close'), ('NFLX', 'Volume'), ('NFLX', 'Adj Close'), ('GOOG', 'High'), ('GOOG', 'Low'), ('GOOG', 'Open'), ('GOOG', 'Close') , ('GOOG', 'Volume'), ('GOOG', 'Adj Close'), ('NDX', 'High'), ('NDX', 'Low'), ('NDX', 'Open'), ('NDX', 'Close'), ('NDX', 'Volume'), ('NDX', 'Adj Close')], 名称=['MAANG Ticker', 'Stock_Info'])
让我们从简单查询的 EDA 开始。
#52周最高收盘价maang_stocks.xs(key="Close",axis=1,level="Stock_Info").max().round(2)输出:MAANG Ticker FB 382.18 AMZN 3731.41 AAPL 182.01 NFLX 691.69 GOOG 3014.18 NDX 16573.34 dtype :float64#52周低点收盘价maang_stocks.xs(key="Close",axis=1,level="Stock_Info").min().round(2)输出:MAANG Ticker FB 174.95 AMZN 2485.63 AAPL 122.77 NFLX 188.54 GOOG 2239.08 NDX 12854.80 dtype :float64# 计算平均值maang_stocks.xs(key="Close",axis=1,level="Stock_Info").mean().round(2)输出: MAANG Ticker FB 308.43 AMZN 3298.28 AAPL 153.46 NFLX 511.43 GOOG 2711.42 NDX 14849.83 数据类型:float64
所有股票的 52 周低点与均值有显着变化。
这 。xs() 函数用于从系列中获取横截面。它需要一个关键参数来选择多索引特定级别的数据。
让我们找出股票之间的皮尔逊相关性。
stock_corr = maang_stocks.xs(key=”Close”,axis=1,level=”Stock_Info”).corr()stock_corr输出:
相关表 Fig.2
上表的热图将是可视化 MAANG 股票与纳斯达克 100 之间相关性的更好方法。
sns.heatmap(stocks_corr,cmap=”flare”,annot=True)
热图 - 图 3
正如我们可以从上面的热图中破译的那样。
谷歌与纳斯达克 100 指数有很强的正相关性(0.9)。
Facebook/Meta 与 Netflix 具有很强的正相关性(0.81)。但是,它与谷歌的正相关性很弱。
苹果与 Facebook 呈中度负相关。它还与 Netflix 和亚马逊存在弱负相关。
我们可以进一步探索与聚类图的相关性。
集群图图 4
正如我们所看到的,顺序发生了变化,具有高相关性的股票在集群图中被组合在一起。这表明Netflix 和亚马逊具有很强的正相关性。
您还可以尝试通过创建配对图来查找股票之间的关系。
sns.pairplot(maang_stocks.xs(key=”Close”,axis=1,level=”Stock_Info”),height=1.5)
配对图 图 5
对图中的差距显示了股票之间的显着离散关系以及大量的价格变动。然而,谷歌与纳斯达克的关系几乎是连续的和线性的。
接下来,我们可以尝试通过绘制折线图来找到股票的比较趋势。
maang_stocks.xs(key=”Close”,axis=1,level=”Stock_Info”).plot() plt.legend(bbox_to_anchor = (1.1,1))
折线图 图 6
如您所见,由于数据点的巨大差异,很难从上面的折线图中识别趋势。
对于这个问题,我们可以将收盘价的第一个数据点作为参考值。通过将时间序列中的其他数据点除以参考点,我们可以对数据集进行归一化。
reference_value = maang_stocks.xs(key=”Close”,axis=1,level=”Stock_Info”).iloc[0]#iloc[0] 是系列中第一个日期的收盘价。#通过将收盘价除以参考值创建一个临时数据集tmp_maang_stocks = maang_stocks.xs(key="Close",axis=1,level="Stock_Info")/(reference_value) * 100 - 100#使用新数据集绘制折线图tmp_maang_stocks.plot(figsize=(10,7)) plt.legend(bbox_to_anchor=(1.04,1))输出:
折线图 图 7
上图显示了Netflix 到 2021 年 11 月的积极趋势,并从 2021 年 12 月开始逆转。
直到 2021 年 12 月,苹果都呈现出积极的趋势。股价呈弱负走势。谷歌也观察到了类似的趋势。
自 2022 年 1 月以来,Facebook /Meta 表现出强劲的下滑趋势。
让我们以绝对值来检查过去 12 个月的表现。
last_day_price = maang_stocks.xs(key=”Close”,axis=1,level=”Stock_Info”).iloc[-1]first_day_price = maang_stocks.xs(key=”Close”,axis=1,level=”Stock_Info”).iloc[0]one_year_return = ((last_day_price/first_day_price)-1)*100one_year_return.sort_values(ascending=False).round(2)输出: MAANG Ticker AAPL 19.92 GOOG -4.60 NDX -7.26 AMZN -28.31 FB -38.33 NFLX -62.93数据类型:float64#为输出绘制条形图one_year_return.sort_values().plot(kind="barh",title="一年回报")输出:
一年回报图 8
Netflix 去年市值缩水 60% 以上,Facebook/Meta 市值缩水近 40%。苹果是唯一一只获得正回报(~20%)的 MAANG 股票。
每日收益数据框将帮助我们找到股票的波动性。
# 为返回创建一个新的空白数据框返回 = pd.DataFrame()对于股票报价:returns[tick+'Return'] = maang_stocks[tick]['Close'].pct_change()returns.head( )returns = pd.DataFrame()
每日回报图 9
# 日内最大涨幅(%)(returns.max().sort_values(ascending=False)*100).round(2)输出: FB 返回 17.59 AMZN 返回 13.54 NFLX 返回 11.13 GOOG 返回 7.37 AAPL 返回 6.98 NDX 返回 3.70 dtype:float64#最大日内损失(%)(returns.min().sort_values()*100).round(2)输出: NFLX 返回 -35.12 FB 返回 -26.39 AMZN 返回 -14.05 GOOG 返回 -4.68 NDX 返回 -4.47 AAPL 返回 -3.93#标准差(%)(returns.std().sort_values(ascending=False)*100).round(2)输出: NFLX 返回 3.43 FB 返回 2.93 AMZN 返回 2.26 GOOG 返回 1.68 AAPL 返回 1.60 NDX 返回 1.43 dtype:float64
正如输出所示,Netflix 是波动最大的股票。盘中最大跌幅约为 35%。
sns.distplot(returns['NFLX Return'],color='blue',bins=100)
Netflix 分布图 图 10
为了深入挖掘,我们可能想看看 MAANG 股票成为最大输家的日期。
返回.idxmin()输出: FB 返回 2022-02-03 AMZN 返回 2022-04-29 AAPL 返回 2021-12-16 NFLX 返回 2022-04-20 GOOG 返回 2022-01-05 NDX 返回 2022-04-29
正如我们所见,最大的盘中损失发生在 2022 年 1 月之后。
我们可以为 FY23 的 MAANG 股票创建一个时间序列,即从 2022 年 1 月到 2022 年 4 月。
FY23 = maang_stocks.xs(key=”Close”,axis=1, level=”Stock_Info”).loc[“2022–1–1”:]#23 财年的绝对回报FY23_returns = (((FY23.iloc[-1]/FY23.iloc[0])-1)*100).sort_values() FY23_returns.plot(kind="barh")输出:
FY23 绝对回报图 11
所有股票在 23 财年均录得负回报。
自 2022 年 1 月以来,Netflix 已下跌近 70%。
我们可以重新检查 FY23 的相关热图。
FY23_corr= FY23.corr() sns.heatmap(FY23_corr,annot=True)输出:
FY23 相关热图 图 12
所有股票都与纳斯达克表现出很强的正相关性。Facebook/Meta 与 Netflix 具有很强的正相关性。
通过每月对回报进行重新抽样。我们可以查看股票的月度表现。
monthly_returns = return.resample('M').agg(lambda x: (x + 1).prod() — 1)每月回报*100输出:
月度收益图 13
从上表可以清楚地看出,Netflix 在 2022 年 4 月的市值缩水了近 50%。每支 MAANG 股票在同月的跌幅都超过了 9%。
Facebook/Meta 在 2022 年 2 月损失了约 32%。
#负回报的月份数monthly_returns.le(0).sum().sort_values(ascending=False)NFLX 返回 9 AMZN 返回 7 FB 返回 6 AAPL 返回 6 GOOG 返回 6 NDX 返回 6 dtype:int64
Netflix 在 12 个月中有 9 个月都出现了负回报。
关键要点:
自 2022 年 1 月以来,这些股票显示出中度至强正相关性谷歌与纳斯达克关系密切Netflix 和 Facebook/Meta 是波动最大的 MAANG 股票自 2022 年 1 月以来,股票表现出强烈的负面趋势苹果是唯一一只在一年内实现正回报的 MAANG 股票Netflix 是表现最差的股票,其次是 Facebook/Meta
这是我的第一个 EDA 项目。您的反馈很有价值。
标签: #python股票聚类