前言
Microsoft最初从为Altair 8800开发BASIC解释器开始,迅速扩展了其产品线,包括MS-DOS操作系统,该系统成为IBM PC的基石。这一成功之后是 Windows 操作系统的推出,它已成为个人和商业计算的主要平台。多年来,Microsoft已经使其产品多样化,包括Microsoft Office等软件产品,通过Azure的云服务,Surface平板电脑和Xbox游戏机等硬件,以及对人工智能和其他尖端技术的重大投资。Microsoft总部位于华盛顿州雷德蒙德,继续成为创新和技术解决方案的领导者。
该数据集提供了 Microsoft 在过去 38 年中股价变化的全面记录。它包括日期、开盘价、当日最高价、当日最低价、收盘价、调整后收盘价和交易量等基本列。
这些广泛的数据对于进行历史分析、预测未来股票表现以及了解与 Microsoft 股票相关的长期市场趋势非常宝贵。
内容表
股票价格可视化:这个可视化显示了股票价格随时间推移的历史趋势,允许您分析股票价值的运动和模式。
成交量可视化:这种可视化表示了股票随时间变化的交易量,提供了对市场活动和流动性水平的见解。
市值可视化:此可视化显示该股票随时间变化的市值,显示所有流通股的总价值,并显示该公司的规模和价值。
波动性可视化:这个可视化说明了股票随时间变化的价格波动水平,帮助您评估价格波动的幅度和频率。
累积收益可视化:这个可视化展示了股票随着时间的推移而产生的累积收益,显示了一个投资的整体表现和增长。
月度收益可视化:这个可视化显示了股票的月度平均收益,允许您观察股票表现中的任何月度趋势或模式。
年度收益可视化:这个可视化显示了股票的年度平均收益,使您能够评估年度业绩并确定长期趋势。
周日可视化:这个可视化显示了股票基于一周中不同天数的平均回报,帮助您分析股票在特定工作日的表现。
移动平均线(10、20、50和100):该可视化绘制了股价在不同时期的移动平均线,平滑价格数据,识别趋势和潜在的支撑/阻力位。
每日价格变化:这个可视化显示了股票的每日价格变化,表明了每日价格波动的幅度和方向。
线图
fig, ax = plt.subplots(figsize=(20, 8))
ax.plot(data['Date'], data['Close'], color='green')
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
ax.set_xlabel('Date', fontsize=14)
ax.set_ylabel('Price in USD', fontsize=14)
plt.title('Microsoft Stock Prices', fontsize=18)
plt.grid()
plt.show()
# Bar plot
fig2, ax = plt.subplots(figsize=(20, 8))
ax.bar(data['Date'], data['Close'], color='green')
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
ax.set_xlabel('Date', fontsize=14)
ax.set_ylabel('Price in USD', fontsize=14)
plt.title('Microsoft Stock Prices', fontsize=18)
plt.grid()
plt.show()
绘制微软股票的成交量趋势
fig, ax = plt.subplots(figsize=(20, 8))
ax.plot(data['Date'], data['Volume'])
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
ax.set_xlabel('Date', fontsize=14)
ax.set_ylabel('Volumes', fontsize=14)
plt.title('Microsoft Volume Trends', fontsize=18)
plt.grid()
plt.show()
# Bar plot
fig2, ax = plt.subplots(figsize=(20, 8))
ax.bar(data['Date'], data['Volume'])
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
ax.set_xlabel('Date', fontsize=16)
ax.set_ylabel('Volumes', fontsize=16)
plt.title('Microsoft Volume Trends', fontsize=18)
plt.grid()
plt.show()
计算市值
data['Market Cap'] = data['Open'] * data['Volume']
# Create the line plot for market capitalization
fig, ax = plt.subplots(figsize=(20, 8))
ax.plot(data['Date'], data['Market Cap'], color='black')
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
ax.set_xlabel('Date', fontsize=14)
ax.set_ylabel('Market Cap', fontsize=14)
plt.title('Market Cap', fontsize=18)
plt.grid()
plt.show()
# Create the bar plot for market capitalization
fig2, ax = plt.subplots(figsize=(20, 8))
ax.bar(data['Date'], data['Market Cap'], color='orange')
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
ax.set_xlabel('Date', fontsize=14)
ax.set_ylabel('Market Cap', fontsize=14)
plt.title('Market Cap', fontsize=18)
plt.grid()
plt.show()
计算日波动率
data['vol'] = (data['Close'] / data['Close'].shift(1)) - 1
# Create the line plot for volatility
fig, ax = plt.subplots(figsize=(20, 8))
ax.plot(data['Date'], data['vol'], color='purple')
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
plt.title('Volatility', fontsize=14)
plt.grid()
plt.show()
# Create the bar plot for volatility
fig1, ax = plt.subplots(figsize=(20, 8))
ax.bar(data['Date'], data['vol'], color='purple')
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
plt.title('Volatility', fontsize=14)
plt.grid()
plt.show()
创建针对波动性的直方图
plt.figure(figsize=(10, 6))
data['vol'].hist(bins=1000, color='blue')
plt.title('Volatility Distribution', fontsize=14)
plt.xlabel('Volatility')
plt.ylabel('Frequency')
plt.show()
计算累积收益
data['Cumulative Return'] = (1 + data['vol']).cumprod()
fig, ax = plt.subplots(figsize=(20, 8))
ax.bar(data['Date'], data['Cumulative Return'], color='Brown')
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
ax.set_xlabel('Date', fontsize=14)
ax.set_ylabel('Cumulative Return', fontsize=14)
plt.title('Cumulative Return', fontsize=14)
plt.grid()
plt.show()
计算每日回报
data['Return'] = data['Close'].pct_change()
data['Month'] = data['Date'].dt.month_name()
data['Year'] = data['Date'].dt.year
monthly_returns = data.groupby(['Month', 'Year'])['Return'].mean().reset_index()
month_order = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
monthly_returns['Month'] = pd.Categorical(monthly_returns['Month'], categories=month_order, ordered=True)
monthly_returns = monthly_returns.sort_values('Month')
plt.figure(figsize=(12, 6))
sns.barplot(data=monthly_returns, x='Month', y='Return')
plt.title('Average Monthly Returns')
plt.xlabel('Month')
plt.ylabel('Returns')
plt.show()
从“日期”列中提取年份
data['Year'] = data['Date'].dt.year
yearly_returns = data.groupby(['Year'])['Return'].mean().reset_index()
yearly_returns = yearly_returns.sort_values('Year')
plt.figure(figsize=(12, 6))
sns.barplot(data=yearly_returns, x='Year', y='Return')
plt.title('Average Yearly Returns')
plt.xlabel('Year')
plt.ylabel('Returns')
plt.show()
数据分析
计算不同窗口的移动平均值
data['MA for 10 days'] = data['Open'].rolling(10).mean()
data['MA for 20 days'] = data['Open'].rolling(20).mean()
data['MA for 50 days'] = data['Open'].rolling(50).mean()
data['MA for 100 days'] = data['Open'].rolling(100).mean()
truncated_data = data.truncate()
truncated_data[['Adj Close', 'MA for 10 days', 'MA for 20 days', 'MA for 50 days', 'MA for 100 days']].plot(subplots=False, figsize=(12, 5))
plt.title('Microsoft Stock: Adjusted Close Price and Moving Averages')
plt.xlabel('Date')
plt.ylabel('Price')
plt.show()
绘图波林格带
rolling_mean = data['Close'].rolling(window=20).mean()
rolling_std = data['Close'].rolling(window=20).std()
upper_band = rolling_mean + (rolling_std * 2)
lower_band = rolling_mean - (rolling_std * 2)
fig, ax = plt.subplots(figsize=(10,6))
ax.plot(data.index, data['Close'], label='Close')
ax.plot(rolling_mean.index, rolling_mean, label='Rolling Mean')
ax.fill_between(rolling_mean.index, upper_band, lower_band, alpha=0.4, color='gray', label='Bollinger Bands')
ax.legend()
plt.show()
界面设置
plt.figure(figsize=(12, 6))
plt.plot(data['Date'], data['Return'], marker='h', color='g')
plt.title('Microsoft Daily Price Change')
plt.show()
价格预测
!pip install Prophet
df = data.reset_index()
df = data[['Date', 'Close']]
df = df.rename(columns={'Date': 'ds', 'Close': 'y'})
from prophet import Prophet
m = Prophet()
m.fit(df) # The model is trained using the historical stock data
future = m.make_future_dataframe(periods=365)
forecast = m.predict(future)
可视化预测
fig1 = m.plot(forecast)
plt.title(f'Price Forecast with Prophet')
plt.xlabel('Date')
plt.ylabel('MSFT Price (USD)')
plt.show()
标签:数据分析,plt,set,fontsize,Date,ax,股票价格,data,Microsoft
From: https://blog.csdn.net/m_aolifande/article/details/139454937