python股票分析入门_学习用Python分析股票数据(入门)

学习使用python来分析股票,主要事涉及数据获取、数据可视化,以及探究数据中各项指标的含义及和关系。使用工具 pandas、numpy、datatime pandas-datareader 在线获取股票数据 matplotlib 数据可视化 Jupyter Notebook 数据分析利器#一、数据获取

# 导入包import pandas as pdimport numpy as npimport pandas_datareader.data as webfrom datetime import datetime1

2

3

4

5# 初始数据# 创建字典myDict = {'谷歌': 'GOOG', '苹果': 'AAPL', '阿里巴巴':'BABA', '腾讯': '0700.hk' }# 时间start = datetime(2017,1,1)end = datetime(2017,12,31)1

2

3

4

5

6

7

8

9

10

# 从IEX数据源获取谷歌股票数据gdata = web.DataReader(myDict['苹果'],'iex', start, end)1

22y# 查看前5条数据gdata.head()1

2

.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }

openhighlowclosevolume

date2017-01-03113.5044114.0239112.4850113.847428781865

2017-01-04113.5534114.2003113.4554113.720021118116

2017-01-05113.6220114.5475113.5142114.298322193587

2017-01-06114.4649115.8176114.1611115.572531751900

2017-01-09115.6118117.0624115.6020116.631133561948

# 查询某一天数据gdata.loc['2017-09-11']1

2open 1.592756e+02 high 1.608138e+02 low 1.586703e+02 close 1.602680e+02 volume 3.158080e+07 Name: 2017-09-11, dtype: float64# 逆序排列gdata = gdata[::-1]1

2

# 查询前10条数据# 将显示重新排列后的结果gdata[:10]1

2

3

.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }

openhighlowclosevolume

date2017-12-29169.8275169.8972168.5328168.542825999922

2017-12-28170.3056171.1521169.7877170.385216480187

2017-12-27169.4092170.0865169.0208169.907221498213

2017-12-26170.1064170.7737168.9899169.877333185536

2017-12-22173.9706174.7116173.7914174.299316349444

2017-12-21173.4627175.3052173.3930174.299320949896

2017-12-20174.1599174.7076172.5464173.642023475649

2017-12-19174.3192174.6777173.3830173.831227436447

2017-12-18174.1698176.4804174.1499175.703629421114

2017-12-15172.9249173.4627171.7596173.263540169307# 查询更多信息gdata.info1

2

# 查看数据类型gdata.dtypes1

2open float64 high float64 low float64 close float64 volume int64 dtype: object# 查看数据集描述统计信息gdata.describe()1

2

.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }

openhighlowclosevolumecount251.000000251.000000251.000000251.0000002.510000e+02

mean148.836282149.783743147.883783148.9368502.707997e+07

std15.24405815.32135114.97392115.1194711.128283e+07

min113.504400114.023900112.485000113.7200001.402667e+07

25%139.685100140.516950138.833550139.6063502.041327e+07

50%151.237300152.158200149.741000150.8731002.436148e+07

75%158.496600159.448850157.299600158.5958502.952661e+07

max174.398900176.480400174.149900175.7036001.119850e+08

二、数据观察每日股票信息

open: 开盘价

high: 最高价

low: 最低价

close: 收盘价

volume: 成交量

下面我们主要来关注每日的收盘价

股票涨跌幅度

'''定义函数:计算机股票涨跌幅 =(现在股价-买入价格)/买入价格输入参数:column 表示收盘价这一列数据返回涨跌幅'''def change(column): # 买入价格 年初 buyPrice = column[0] # 现在价格 年末 curPrice = column[len(gdata)-1] changePrice = (curPrice - buyPrice)/buyPrice # 判断股价变化 if changePrice > 0: print('股票累计上涨=',changePrice) elif changePrice == 0: print('股票累计没有变化=',changePrice) else: print('股票累计下跌=', changePrice) return changePrice1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20# 查看结果bdata = gdata[::-1]change(bdata['close'])1

2

3

股票累计上涨= 0.480427308836214150.480427308836214151

2

3

4

5

6

7

数据可视化-时间序列图

以时间为横坐标,每日的收盘价为纵坐标,绘制折线图,可以观察股票随时间的波动情况。我们使用 matplotlib 包来绘制。# 导入绘图包#coding:utf-8import matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号1

2

3

4

5

# 绘制图表fig, ax = plt.subplots(figsize=(14,8)) # 绘图窗口大小plt.title('2017年苹果股票', fontsize=18) # 标题ax.plot(bdata['close'],color='blue', label='收盘价') ax.plot(bdata['open'],color='#F37726', label='开盘价')ax.plot((bdata['close']-bdata['open']),color='red', label='每日涨跌(收盘价-开盘价)')ax.grid(False) # 网格ax.legend(frameon=False)plt.xlabel('1-12月份', fontsize=14) # 横坐标# plt.ylabel('收盘价', fontsize=14) #纵坐标# 刻度标记大小# axis 可选择参数 x,y,both plt.tick_params(axis='both',labelsize=13) # ax.axis('equal') # label显示位置plt.show() # 显示1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

先挖个坑:

上图中横坐标一条黑粗线,实际为每天股票日期,全部重叠在一起就变这条黑线 囧

原来想显示1-12月份的,但找了好多资料都还没完成,希望哪个大神看到能指导下,谢谢!

学会了回来补上

上图中我首先用蓝色绘制收盘价折线图,再用黄色绘制开盘价折线图,最后用红色绘制每日涨跌幅折线图,看起来是否很乱,如果再加上每天最高价和最低价,那就更无法见人了。

那么有什么方法能够在一张图中显示出这四种指标呢?答案是K线图。

K线图

相传K线图起源于日本德川幕府时代,当时的商人用此图来记录米市的行情和价格波动,后来K线图被引入到股票市场。每天的四项指标数据用如下蜡烛形状的图形来记录,不同的颜色代表涨跌情况。

三、数据分析

相对变化量

股票中关注的不是价格的绝对值,而是相对变化量。有多种方式可以衡量股价的相对值,最简单的方法就是将股价除以初始时的价格。

方法一: 前面介绍的计算每日涨跌幅(收盘价-开盘价)/ 开盘价1

# 绘制图表fig, ax = plt.subplots(figsize=(14,8)) # 绘图窗口大小plt.title('2017年苹果股票', fontsize=18) # 标题# 绘制参考线(bdata['close']-bdata['open']).plot(grid=True, color='red', label='每日涨跌(收盘价-开盘价)').axhline(y=0, color='black', lw=2)ax.legend(frameon=False)plt.xlabel('1-12月份', fontsize=14) # 横坐标plt.ylabel('涨跌幅度', fontsize=14) #纵坐标# 刻度标记大小# axis 可选择参数 x,y,both plt.tick_params(axis='both',labelsize=13) plt.show() # 显示1

2

3

4

5

6

7

8

9

10

11

12

相关关系

在观察了价格的走势之后,我们来看看各指标之间的关系。又挖了个坑:

学会了再说 囧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值