介绍

项目地址 https://github.com/zouxlin3/StockDataAnalysis
使用python分析csv格式的股票数据
使用方法如下

from StockData import StockData  # 从源代码下载StockData.py和666666.SZ.csv虚拟数据

1 读取csv

虚拟数据的股票代码为000001
每个股票代码应对应一个csv文件
read(symbols: List[str])

stockdata = StockData('data')  # 虚拟数据文件所在目录
symbols = ['000001']  # symbols为股票代码列表
stockdata.read(symbols)
stockdata.dataframes['000001']  # 查看内容
Unnamed: 0 OBJECT_ID S_INFO_WINDCODE TRADE_DT CRNCY_CODE S_DQ_PRECLOSE S_DQ_OPEN S_DQ_HIGH S_DQ_LOW S_DQ_CLOSE ... S_DQ_ADJPRECLOSE S_DQ_ADJOPEN S_DQ_ADJHIGH S_DQ_ADJLOW S_DQ_ADJCLOSE S_DQ_ADJFACTOR S_DQ_AVGPRICE S_DQ_TRADESTATUS OPDATE OPMODE
0 336601 -488126 000001.SZ 1991-04-03 CNY 61.49 49.00 49.00 49.00 49.00 ... 61.49 49.00 49.00 49.00 49.00 1.000000 50.0000 ?? 2016-12-27 10:24:33 0
1 336602 -488127 000001.SZ 1991-04-04 CNY 49.00 48.76 48.76 48.76 48.76 ... 49.00 48.76 48.76 48.76 48.76 1.000000 50.0000 ?? 2016-12-27 10:24:33 0
2 336603 -488128 000001.SZ 1991-04-05 CNY 48.76 48.52 48.52 48.52 48.52 ... 48.76 48.52 48.52 48.52 48.52 1.000000 50.0000 ?? 2016-12-27 10:24:33 0
3 336605 -488130 000001.SZ 1991-04-08 CNY 48.52 48.04 48.04 48.04 48.04 ... 48.52 48.04 48.04 48.04 48.04 1.000000 50.0000 ?? 2016-12-27 10:24:33 0
4 336606 -488131 000001.SZ 1991-04-09 CNY 48.04 47.80 47.80 47.80 47.80 ... 48.04 47.80 47.80 47.80 47.80 1.000000 47.5000 ?? 2016-12-27 10:24:33 0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
6298 6864894 {D1A958FC-E2CC-11E6-9220-6C0B84A6895D} 000001.SZ 2017-01-25 CNY 9.27 9.27 9.28 9.25 9.26 ... 971.11 971.11 972.16 969.01 970.06 104.758253 9.2633 ?? 2017-01-25 15:10:52 0
6299 1717817 {1930026C-E396-11E6-9CA9-4437E6DAC6D1} 000001.SZ 2017-01-26 CNY 9.26 9.27 9.34 9.26 9.33 ... 970.06 971.11 978.44 970.06 977.39 104.758253 9.3138 ?? 2017-01-26 15:26:14 0
6300 3288514 {518B8FC9-E9DF-11E6-84F4-6C0B84A6895D} 000001.SZ 2017-02-03 CNY 9.33 9.34 9.36 9.23 9.26 ... 977.39 978.44 980.54 966.92 970.06 104.758253 9.2756 ?? 2017-02-03 15:09:52 0
6301 6878988 {D21CCA60-EC3A-11E6-85F7-6C0B84A6895D} 000001.SZ 2017-02-06 CNY 9.26 9.26 9.32 9.26 9.31 ... 970.06 970.06 976.35 970.06 975.30 104.758253 9.2967 ?? 2017-02-06 15:20:12 0
6302 1204979 {0700EF99-ED04-11E6-A728-6C0B84A6895D} 000001.SZ 2017-02-07 CNY 9.31 9.31 9.32 9.27 9.30 ... 975.30 975.30 976.35 971.11 974.25 104.758253 9.2912 ?? 2017-02-07 15:12:19 0

6303 rows × 24 columns

2 根据条件查看数据

2.1 根据时间段查看

查看一个股票在时间段的open high low close四个标签的数据
get_data_by_symbol(symbol: str, start_date: str, end_date: str)

stockdata.get_data_by_symbol('000001', '19910409', '19910419')
date open high low close
4 1991-04-09 47.80 47.80 47.80 47.80
5 1991-04-10 47.56 47.56 47.56 47.56
6 1991-04-11 47.56 47.56 47.56 47.56
7 1991-04-12 47.08 47.08 47.08 47.08
8 1991-04-16 46.38 46.38 46.38 46.38
9 1991-04-17 46.15 46.15 46.15 46.15
10 1991-04-18 45.92 45.92 45.92 45.92
11 1991-04-19 45.69 45.69 45.69 45.69

2.2 根据时间段查看

查看指定日期一些股票的open high low close四个标签的数据
get_data_by_date( adate: str, symbols: List[str])

stockdata.get_data_by_date('20170207', symbols)
symbols open high low close
0 000001 9.31 9.32 9.27 9.3

2.3 根据时间段查看

查看一些股票指定标签的数据
get_data_by_field(field: str, symbols: List[str])

stockdata.get_data_by_field('open', symbols)
date 000001
0 1991-04-03 49.00
1 1991-04-04 48.76
2 1991-04-05 48.52
3 1991-04-08 48.04
4 1991-04-09 47.80
... ... ...
6298 2017-01-25 9.27
6299 2017-01-26 9.27
6300 2017-02-03 9.34
6301 2017-02-06 9.26
6302 2017-02-07 9.31

6303 rows × 2 columns

3 绘制走势图

需要指定一个标签,volume和turnover标签时绘制柱状图,其余为折线图
plot(symbol: str, field: str)

stockdata.plot('000001', 'open')

4 数据处理

4.1 价格复权计算

对open high low close四类价格从后往前复权
adjust_data(symbol: str)

stockdata.adjust_data('000001')
stockdata.dataframes['000001']
Unnamed: 0 OBJECT_ID S_INFO_WINDCODE TRADE_DT CRNCY_CODE S_DQ_PRECLOSE S_DQ_OPEN S_DQ_HIGH S_DQ_LOW S_DQ_CLOSE ... S_DQ_ADJFACTOR S_DQ_AVGPRICE S_DQ_TRADESTATUS OPDATE OPMODE forward_af forward_adjust_open forward_adjust_high forward_adjust_low forward_adjust_close
0 336601 -488126 000001.SZ 1991-04-03 CNY 61.49 49 49.00 49.00 49.00 ... 1.000000 50.0000 ?? 2016-12-27 10:24:33 0 0.01051 49.0 49.00 49.00 49.00
1 336602 -488127 000001.SZ 1991-04-04 CNY 49.00 48 48.76 48.76 48.76 ... 1.000000 50.0000 ?? 2016-12-27 10:24:33 0 0.01051 48.0 48.76 48.76 48.76
2 336603 -488128 000001.SZ 1991-04-05 CNY 48.76 48 48.52 48.52 48.52 ... 1.000000 50.0000 ?? 2016-12-27 10:24:33 0 0.01051 48.0 48.52 48.52 48.52
3 336605 -488130 000001.SZ 1991-04-08 CNY 48.52 48 48.04 48.04 48.04 ... 1.000000 50.0000 ?? 2016-12-27 10:24:33 0 0.01051 48.0 48.04 48.04 48.04
4 336606 -488131 000001.SZ 1991-04-09 CNY 48.04 47 47.80 47.80 47.80 ... 1.000000 47.5000 ?? 2016-12-27 10:24:33 0 0.01051 47.0 47.80 47.80 47.80
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
6298 6864894 {D1A958FC-E2CC-11E6-9220-6C0B84A6895D} 000001.SZ 2017-01-25 CNY 9.27 9 9.28 9.25 9.26 ... 104.758253 9.2633 ?? 2017-01-25 15:10:52 0 1.00000 9.0 9.28 9.25 9.26
6299 1717817 {1930026C-E396-11E6-9CA9-4437E6DAC6D1} 000001.SZ 2017-01-26 CNY 9.26 9 9.34 9.26 9.33 ... 104.758253 9.3138 ?? 2017-01-26 15:26:14 0 1.00000 9.0 9.34 9.26 9.33
6300 3288514 {518B8FC9-E9DF-11E6-84F4-6C0B84A6895D} 000001.SZ 2017-02-03 CNY 9.33 9 9.36 9.23 9.26 ... 104.758253 9.2756 ?? 2017-02-03 15:09:52 0 1.00000 9.0 9.36 9.23 9.26
6301 6878988 {D21CCA60-EC3A-11E6-85F7-6C0B84A6895D} 000001.SZ 2017-02-06 CNY 9.26 9 9.32 9.26 9.31 ... 104.758253 9.2967 ?? 2017-02-06 15:20:12 0 1.00000 9.0 9.32 9.26 9.31
6302 1204979 {0700EF99-ED04-11E6-A728-6C0B84A6895D} 000001.SZ 2017-02-07 CNY 9.31 9 9.32 9.27 9.30 ... 104.758253 9.2912 ?? 2017-02-07 15:12:19 0 1.00000 9.0 9.32 9.27 9.30

6303 rows × 29 columns

4.2 日频数据重采样

按照时间窗口进行重采样,采样的时间取区间左端
resample(symbol: str, freq: int)

stockdata.resample('000001', 5)
date open close high low volume turnover vwap
0 1991-04-09 49 47.80 49.00 47.80 12.0 59.000 4.9167
1 1991-04-17 47 46.15 47.56 46.15 26.0 123.000 4.7308
2 1991-04-24 45 44.78 45.92 44.78 50.0 225.000 4.5000
3 1991-05-02 44 43.46 44.56 43.46 31.0 137.000 4.4194
4 1991-05-09 43 42.17 43.24 42.17 129.0 546.000 4.2326
... ... ... ... ... ... ... ... ...
1255 2016-12-28 9 9.06 9.16 9.02 1631209.0 1483308.481 0.9093
1256 2017-01-05 9 9.17 9.18 9.05 1894909.0 1729934.514 0.9129
1257 2017-01-12 9 9.15 9.17 9.11 1691727.0 1547168.777 0.9145
1258 2017-01-19 9 9.18 9.24 9.07 2675002.0 2447679.663 0.9150
1259 2017-01-26 9 9.33 9.34 9.17 2008986.0 1858492.536 0.9251

1260 rows × 8 columns

4.3 计算移动平均

计算滑动窗口内数据的平均值
moving_average(symbol: str, field: str, window: int)

stockdata.moving_average('000001', 'open', 5)
TRADE_DT
1991-04-03     NaN
1991-04-04     NaN
1991-04-05     NaN
1991-04-08     NaN
1991-04-09    48.0...
2017-01-25     9.0
2017-01-26     9.0
2017-02-03     9.0
2017-02-06     9.0
2017-02-07     9.0
Name: forward_adjust_open, Length: 6303, dtype: float64

5 相关指标计算

四类指标
ema(symbol: str, periods: int)
atr(symbol: str, periods: int)
rsi(symbol: str, periods: int)
macd(symbol: str, long: int, short: int, dea_periods: int)

stockdata.ema('000001', 5)
TRADE_DT
1991-04-03          NaN
1991-04-04          NaN
1991-04-05          NaN
1991-04-08          NaN
1991-04-09    49.500000...
2017-01-25     9.233294
2017-01-26     9.265529
2017-02-03     9.263686
2017-02-06     9.279124
2017-02-07     9.286083
Name: ema_5, Length: 6303, dtype: float64
stockdata.atr('000001', 5)
TRADE_DT
1991-04-03      NaN
1991-04-04      NaN
1991-04-05      NaN
1991-04-08      NaN
1991-04-09    2.738...
2017-01-25    0.064
2017-01-26    0.062
2017-02-03    0.076
2017-02-06    0.076
2017-02-07    0.070
Name: atr_5, Length: 6303, dtype: float64
stockdata.rsi('000001', 5)
TRADE_DT
1991-04-03          NaN
1991-04-04          NaN
1991-04-05          NaN
1991-04-08          NaN
1991-04-09          NaN...
2017-01-25    75.156853
2017-01-26    81.025235
2017-02-03    57.391103
2017-02-06    58.812990
2017-02-07    65.561024
Name: rsi_5, Length: 6303, dtype: float64
stockdata.macd('000001', 25, 9, 5)
TRADE_DT
1991-04-03         NaN
1991-04-04         NaN
1991-04-05         NaN
1991-04-08         NaN
1991-04-09         NaN...
2017-01-25    0.017994
2017-01-26    0.021877
2017-02-03    0.014808
2017-02-06    0.013298
2017-02-07    0.010009
Name: macd, Length: 6303, dtype: float64

6 回报计算

freq可选m、q、h、y,分别代表月、季度、半年、年的时间跨频率

6.1 回报率

calc_return(symbol: str, freq: str)

stockdata.calc_return('000001', 'q')
date return_q return
0 1991-06-28 NaT -30.6327
1 1991-09-30 NaT -57.0462
2 1991-12-31 NaT 101.0274
3 1992-03-31 NaT -11.2436
4 1992-06-30 NaT 61.2284
... ... ... ...
99 2016-03-31 NaT -11.2594
100 2016-06-30 NaT -18.2331
101 2016-09-30 NaT 4.2529
102 2016-12-30 NaT 0.3308
103 2017-02-07 NaT 2.1978

104 rows × 3 columns

6.2 夏普比率

calc_sharpe_ratio(symbol: str, freq: str)

stockdata.calc_sharpe_ratio('000001', 'q')
0.04988574991791399

6.3 最大回撤率

calc_max_drawdown_ratio(symbol: str)

stockdata.calc_max_drawdown_ratio('000001')
91.63934426229508

本文最新版本

python股票数据分析相关推荐

  1. python股票数据分析_Python数据分析之股票走势

    本篇文章讲了用python爬取六家公司的股票数据,分析股票走势.波动性.涨幅等,最终得出一点点结论. 一.包的安装 Python进行数据分析时,有几个包比较重要,所以需提前把这几个包安装好. pand ...

  2. python股票数据分析_用Python浅析股票数据

    本文将使用Python来可视化股票数据,比如绘制K线图,并且探究各项指标的含义和关系,最后使用移动平均线方法初探投资策略. 数据导入 这里将股票数据存储在stockData.txt文本文件中,我们使用 ...

  3. python股票数据分析_用Python抓取新浪的股票数据

    最近做数据分析,先是找到了Tushare这个免费开源的第三方财经包,但后来用了几天之后发现,它的日交易历史数据有时候有不准确的情况,查看源代码发现,这个包的数据源是凤凰财经,而对比凤凰网站其站点的数据 ...

  4. python股票数据分析_用Python进行股票数据分析

    本篇运用Python进行自选股的数据分析,帮助进行投资决策,分析用到以下两个模块:pandas(数据分析包):pandas_datareader(可以查询雅虎的股票数据接口). 本篇参考了猴子老师的课 ...

  5. python股票数据分析实例_Python之简单股票数据分析

    1.获取数据 #定义所需要的数据 gafataDict={"谷歌":"GOOG","亚马逊":"AMZN"," ...

  6. python股票数据分析_如何使用Python进行股票的金融数据量化分析

    Python作为一门高ji语言是很好用的,语法简单,通俗易懂,非chang容易上手,丰富的第三方库支持使得开发速度快,相对于其他编程语言来说,初学者入门并不困难.它只是一门语言工具,zui终还是要将这 ...

  7. python股票数据分析_利用PYTHON全自动生成分析报告

    日常工作当中,特别是金融行业当中,有不少人的工作是提取数据,分析数据,得到可视化图表,并加入自已的研究分析结论,最终生成分析报告,并且有不少报告是定期生成,存在不少重复手工劳动.本文通过一个简单实例, ...

  8. 毕设着急了吧?Python股票数据分析,制作动态柱状图

    写在前面的一些屁话: 雪球成立于 2010 年,是北京雪球信息科技有限公司旗下推出的投资者社区.雪球一直致力于为中国投资者提供跨市场(沪深.香港.美国),跨品种(股票.基金.债券等)的数据查询.资讯获 ...

  9. python股票数据分析实验报告_Python实验报告

    一. 实验原理 ( 要求.任务等 ) (一).Python的开发环境 Python诞生于20世纪90年代初,是一种解释型.面向对象.动态数据类型的高级程序设计语言,是最受欢迎的程序设计语言之一. 编写 ...

最新文章

  1. 神经网络要从原子抓起:原来白花花的银子才是神经芯片的未来
  2. WebMGA:超快的基因组序列聚类注释在线工具
  3. shell 语法格式
  4. 关于level_idc和Profile_IDC的解释
  5. 解决Unity3D导出apk失败:Failed to re-package resources
  6. 自动爬取中国大学mooc的pdf文档
  7. 男人最佳的生育年限,程序猿们,看看吧!!!
  8. elementui树状菜单tree_Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)...
  9. 【SpringBoot】SpringBoot最精简的设置
  10. UVM的factory机制
  11. ARM 指令集 比较指令
  12. M1 Mac上运行Windows 11
  13. python3 open打开文件_Python3基础 file open 打开txt文件并打印出全文
  14. Fragstats|单一土地利用类型景观格局指数
  15. android gps测速算法,GPS定位与测速算法研究
  16. SQL注入的严重危害之拖库实例
  17. 计算机中硬盘隐藏,如何隐藏电脑硬盘盘符,保护个人隐私 | 我爱分享网
  18. h2o java_java – 在h2o中加载大于内存大小的数据
  19. ruby on rails 分页gem kaminari,指定页码跳转
  20. R语言需要C语言基础吗,R语言入门(1)-初识R语言

热门文章

  1. 弘辽科技:拼多多怎么会判定为提升销量?会有什么处罚?
  2. Stack cookie instrumentation code detected a stack-based buffer overrun.
  3. 等保浅尝-网络安全等级保护/等保2.0
  4. win7分区导致硬盘分区表丢失的恢复方法[图文]
  5. 一文带你了解蓝牙产品相关认证
  6. 将U盘启动盘恢复成普通U盘的解决方法
  7. zabbix 监控部署(下)
  8. uni-app 顶部导航栏高度计算 + 胶囊高度计算
  9. 使用segyio模块打开segy格式数据时出现RuntimeError: unable to find sorting
  10. 关于前端Retina 屏幕兼容和基于Retina 屏幕兼容的雪碧图技巧