python股票数据分析箱线图
时间: 2024-12-28 18:27:57 浏览: 41
使用Python进行股票数据分析并绘制箱线图
对于股票数据分析,pandas
和 matplotlib
是两个非常重要的工具。为了实现这一目标,首先需要获取股票数据。通常可以从Yahoo Finance或其他金融API获得这些数据。
获取股票数据
可以利用yfinance
库来下载所需的时间序列股票价格数据:
import yfinance as yf
tickerSymbol = 'AAPL' # 苹果公司的股票代码作为例子
data = yf.download(tickerSymbol, start='2020-01-01', end='2023-01-01')
这段代码将会下载苹果公司自2020年1月1日至2023年1月1日之间的历史交易记录[^1]。
数据预处理
一旦获得了原始数据之后,可能还需要做一些简单的清理工作,比如重置索引、删除缺失值等操作:
# 将日期设置为单独的一列而不是索引
data.reset_index(inplace=True)
# 删除任何含有NaN的行
data.dropna(inplace=True)
计算每日收益率
为了更深入地了解股价波动情况,计算每天收盘价的变化率是有帮助的:
data['Daily Return'] = data['Adj Close'].pct_change()
这里创建了一个新的列叫做'Daily Return'用于存储每一天相对于前一天调整后的收盘价变化比例[^2]。
绘制箱形图
最后一步就是使用matplotlib
来展示上述得到的日回报率分布状况了。考虑到时间跨度较大,可以选择按月份或季度汇总后再画图以便观察趋势:
import matplotlib.pyplot as plt
def plot_boxplot_by_period(df, period='M'):
df.set_index('Date', inplace=True)
monthly_returns = df.resample(period).apply(lambda x: (x[-1]/x[1]-1) if len(x)>1 else float('nan'))
fig, ax = plt.subplots(figsize=(14,7))
monthly_returns.plot(kind='box', vert=False, showmeans=True, whis=[5,95], meanprops={"marker":"o",
"markerfacecolor":"white",
"markeredgecolor":"black"},
boxprops=dict(facecolor='lightblue'), flierprops=dict(marker='+'),
showcaps=True,capprops=dict(color="k"), medianprops=dict(linestyle='-', linewidth=2),
whiskerprops=dict(linestyle='--'))
plt.title(f'Monthly Returns Box Plot ({period})')
plt.xlabel('Returns')
plt.yticks([])
plt.show()
plot_boxplot_by_period(data[['Date','Daily Return']], 'Q') # 按季度绘图
此部分代码实现了按照指定周期(默认每月)聚合日收益,并将其转换成百分比形式;接着调用了matplotlib
中的函数生成带有均值标记以及上下四分位数范围之外点(即潜在异常值)标注出来的水平方向箱型图[^3]。
相关推荐


















