python 数据分析学习 - 股票数据(一)

免责声明:本人不是专业人士,纯粹个人爱好,如有错误欢迎指正。

一、数据采集

本文分析的对象是股票数据,数据采集渠道和方式很多,可以自己写爬虫,也可以用开源的工具。这里我们使用开源工具tushare, https://tushare.pro/register?reg=332190。

step 1. 安装tushare

pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple

step 2. 注册账号

虽然是开源,但是需要先注册后才能获取数据。注册地址:https://tushare.pro/register?reg=332190

step 3. 获取token

获取token方法请查看 https://tushare.pro/document/1?doc_id=39

step 4. 调取数据

import tushare as ts

# 设置token
ts.set_token('your token here')
# 初始化
pro = ts.pro_api()
# 调取日线数据
df = pro.daily(ts_code='000001.SZ', start_date='20180701', end_date='20180718')
# 查看数据
df.head()

二、计算移动平均线

# 计算平均线
ma5 = df['close'].rolling(5).mean()
ma10 = df['close'].rolling(10).mean()
ma20 = df['close'].rolling(20).mean()

# 合并,并重命名重复的字段后缀
m = pd.merge(df, ma5, on='trade_date', suffixes=('', '_ma5'))
m = pd.merge(m, ma10, on='trade_date', suffixes=('', '_ma10'))
m = pd.merge(m, ma20, on='trade_date', suffixes=('', '_ma20'))

# 删除前120天的数据
m = m.iloc[120:, :]

# 重命名字段名
m = m.rename(columns={'close_ma5':'ma5', 'close_ma10':'ma10', 'close_ma20':'ma20'})

三、画图

step 1. 安装matplotlib

pip install matplotlib

step 2. 引用

import matplotlib.pyplot as plt
from matplotlib.pyplot import MultipleLocator

step 3. 利用处理的数据画图

fig = plt.figure(figsize = (20,15))

x = m.index.astype('str')

# 绘图
plt.plot(x, # x轴数据
         m.ma5, # y轴数据
         linestyle = '-', # 折线类型
         linewidth = 2, # 折线宽度
         color = 'brown', # 折线颜色
         marker = 'o', # 点的形状
         markersize = 2, # 点的大小
         markeredgecolor='black', # 点的边框色
         markerfacecolor='brown', # 点的填充色
         label = 'ma5') 

plt.plot(x, # x轴数据
         m.ma20, # y轴数据
         linestyle = '-', # 折线类型
         linewidth = 2, # 折线宽度
         color = 'purple', # 折线颜色
         marker = 'o', # 点的形状
         markersize = 2, # 点的大小
         markeredgecolor='black', # 点的边框色
         markerfacecolor='purple', # 点的填充色
         label = 'ma20') 

# 添加标题和坐标轴标签
plt.title('000001')
plt.xlabel('date')
plt.ylabel('p')

# 剔除图框上边界和右边界的刻度
plt.tick_params(top = 'off', right = 'off')

# 为了避免x轴日期刻度标签的重叠,设置x轴刻度自动展现,并且45度倾斜
plt.xticks(rotation = 45)

x_major_locator = MultipleLocator(120)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)

# 显示图形
plt.show()

 

你可能感兴趣的:(Python)