pandas获取股票数据并做均线图

本文展示如何使用Python的pandas库从Yahoo Finance获取股票数据,并利用这些数据计算不同周期的移动平均线,最后通过matplotlib库将移动平均线进行可视化展示。

pandas获取股票数据并做均线图

随便写的

获取数据
数据rolling
数据作图

import pandas_datareader.data as web
import datetime
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

start = datetime.datetime(2017,2,1)
end = datetime.date.today()
df = web.DataReader("300586.SZ", "yahoo", start, end)
print (df.head(5))

duli_data=df.iloc[:,5]
data_20=duli_data.rolling(20).mean()
data_40=duli_data.rolling(40).mean()
data_60=duli_data.rolling(60).mean()
data_250=duli_data.rolling(250).mean()
zonghe_data=pd.concat([data_20,data_40,data_60,data_250],axis=1)
zonghe_data.columns = ['data_20','data_40','data_60','data_250']

zonghe_data[ ['data_20','data_40','data_60','data_250']].plot(subplots=False,style=['r','g','b','m'],grid=True)

plt.show()
print(zonghe_data.tail(5))

结果

在这里插入图片描述

### 使用Python进行股票数据分析绘制箱线图 对于股票数据分析,`pandas` 和 `matplotlib` 是两个非常重要的工具。为了实现这一目标,首先需要获取股票数据。通常可以从Yahoo Finance或其他金融API获得这些数据。 #### 获取股票数据 可以利用`yfinance`库来下载所需的时间序列股票价格数据: ```python 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]。 #### 数据预处理 一旦获得了原始数据之后,可能还需要一些简单的清理工作,比如重置索引、删除缺失值等操作: ```python # 将日期设置为单独的一列而不是索引 data.reset_index(inplace=True) # 删除任何含有NaN的行 data.dropna(inplace=True) ``` #### 计算每日收益率 为了更深入地了解股价波动情况,计算每天收盘价的变化率是有帮助的: ```python data['Daily Return'] = data['Adj Close'].pct_change() ``` 这里创建了一个新的列叫'Daily Return'用于存储每一天相对于前一天调整后的收盘价变化比例[^2]。 #### 绘制箱形图 最后一步就是使用`matplotlib`来展示上述得到的日回报率分布状况了。考虑到时间跨度较大,可以选择按月份或季度汇总后再画图以便观察趋势: ```python 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]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值