30天学会量化交易模型 Day01

### 更新一个支持python的自动下单券商接口 #####

http://121.41.137.161:9091/hub/help/api
开通条件: 
http://www.30daydo.com/article/44236
 
 Day 01 ---- Pandas
github同步代码: https://github.com/Rockyzsu/stock

 本人是一个会一点pyhton语言的菜鸟,对量化交易很好奇,准备在30天内学会量化交易。每天更新一篇文章,视乎个人每天宽裕的时间有多少,时间多就多写点,如果时间仓促就可能写的粗略一些,但每天都会坚持去写。
 
第一天
首先要找到获取股票市场的数据来源,python支持几个股票接口。 个人采用tushare。
 
对于tushare,使用最多的数据类型就是pandas中的DataFrame了。
 
先导入包:
1.jpg


创建对象 Series
1、可以通过传递一个list对象来创建一个Series,pandas会默认创建整型索引:
2.jpg

(np.nan是一个空值)

通过传递一个numpy array,时间索引以及列标签来创建一个DataFrame:
3.jpg


通过传递一个能够被转换成类似序列结构的字典对象来创建一个DataFrame:
4.jpg

 
查看不同列的数据类型:
5.jpg

 
查看数据
 
查看frame中头部和尾部的行:
6.jpg


显示索引、列和底层的numpy数据:
a1.jpg


describe()函数对于数据的快速统计汇总:
a2.jpg


 对数据的转置:
a3.jpg

 
数据选择
虽然标准的Python/Numpy的选择和设置表达式都能够直接派上用场,但是作为工程使用的代码,我们推荐使用经过优化的pandas数据访问方式: .at, .iat, .loc, .iloc 和 .ix
选择一个单独的列,这将会返回一个Series,等同于df.A:
 
a4.jpg


通过进行选择,这将会对行进行切片
a5.jpg

 
通过标签选择
使用标签来获取一个交叉的区域
 
a6.jpg


通过标签来在多个轴上进行选择
a7.jpg


标签切片

a8.jpg

 

通过位置选择
 
通过传递数值进行位置选择(选择的是行)
 
a1.jpg



通过数值进行切片,与numpy/python中的情况类似
 

a2.jpg


 
通过指定一个位置的列表,与numpy/python中的情况类似
 
a3.jpg



 
获取特定的值
 

a4.jpg


 
布尔索引
 
1. 使用一个单独列的值来选择数据:

a11.jpg


2. 使用where操作来选择数据:

a12.jpg


 3.  使用isin()方法来过滤:

a13.jpg


相关操作
 
  统计(相关操作通常情况下不包括缺失值)
 
执行描述性统计:
 

a14.jpg


 
 
Pandas读取excel数据:
#-*-coding=utf-8-*-
__author__ = 'rocky'
import pandas as pd
import numpy as np
def excel_op():
df=pd.read_excel("mystock.xls")
print df.head()

excel_op()
(前提是需要安装xlrd 一个python对excel操作的包)
 

pandas1.PNG


pandas中有Nan的非法数据,需要怎样处理呢?
 
可以使用 
code=code.fillna(0)
这个fillna(0) 函数,用来填充NaN的部分。 
 
填充后是这样子的:

pandas2.PNG


这样对数据进行遍历的时候就可以通过 if data !=0 来判断是非非法。 因为没有其他表达式可以判断NaN
 
 
对于一些超大的excel或者csv文件,怎样读才能提高效率呢 ?
df = pd.read_csv('test.csv', chunksize=10000)
for chunk in df:
# TODO: process the chunk as a normal DataFrame
上面的参数就把csv文件分割为10000份,然后每份进行处理。
 
 
对dataframe的每一行进行遍历:
    for index,row in df.iterrows():
print row[u'代码'],row[u'资金发生数']
上面的代码会循环输出每一行的 “代码”列和“资金发生数”列。
 

 下一篇:30天学会量化交易模型 Day02
http://30daydo.com/article/13
 
python数据分析之 A股上市公司按地区分布与可视化
http://30daydo.com/article/388 

转载请注明:http://30daydo.com/article/11
公众号:

6 个评论

直接去 上BotVS 写 策略 就行了,直接可以回测。 支持python 了
嗯 是的。不过更喜欢在本地操作。
图都挂了
读了您写的几篇文章,收益匪浅。最近我在尝试用tushare做实盘交易,下载的tushare里面最重要的buy和sell两个function,一直返回FALSE,券商那边也看不到委托下单。请问您也有类似的问题吗?
tushare目前应该没有实盘吧,应该只是模拟的
你是我的榜样,我也要开始向你学习,一步一步学量化。

要回复文章请先登录注册