Dataview

介绍

dataview可视为一个基于pandas实现的的针对因子场景的数据库,方便因子的设计实现。通过dataview,可以快捷的调取数据,并在数据集上做运算以生成新的数据集。详细描述见官方用户手册-数据视图

DataView做什么

将频繁使用的DataFrame操作自动化,使用者操作数据时尽量只考虑业务需求而不是技术实现:

  • 1.根据字段名,自动从不同的数据api获取数据
  • 2.按时间、标的整理对齐(财务数据按发布日期对齐)
  • 3.在已有数据基础上,添加字段、加入自定义数据或根据公式计算新数据
  • 4.数据查询
  • 5.本地存储

数据下载

dataview目前可以通过jaqs官方提供的免费数据源直接从网络获取行情数据和参考数据

步骤:

  • 1.配置数据下载的tcp地址(data_config)--使用jaqs官方提供的免费数据源需要提前去官网注册账号,方可使用
  • 2.创建DataView和DataService
  • 3.配置待请求的数据参数(props)
  • 4.数据下载(prepare_data)
import warnings
warnings.filterwarnings('ignore')
from jaqs_fxdayu.data import DataView
from jaqs_fxdayu.data import RemoteDataService # 远程数据服务类

# step 1 其中,username password分别对应官网注册的账号和序列号
data_config = {
"remote.data.address": "tcp://data.quantos.org:8910",
"remote.data.username": "18566262672",
"remote.data.password": "eyJhbGciOiJIUzI1NiJ9.eyJjcmVhdGVfdGltZSI6IjE1MTI3MDI3NTAyMTIiLCJpc3MiOiJhdXRoMCIsImlkIjoiMTg1NjYyNjI2NzIifQ.O_-yR0zYagrLRvPbggnru1Rapk4kiyAzcwYt2a3vlpM"
}

# step 2
ds = RemoteDataService()
ds.init_from_config(data_config)
dv = DataView()

# step 3
props = {'start_date': 20170501, 'end_date': 20171001, 'universe':'000300.SH',
         'fields': "pb,pe,total_oper_rev,oper_exp,sw1",
         'report_type':'408003000',
         'freq': 1}

dv.init_from_config(props, ds)
Begin: DataApi login 18566262672@tcp://data.quantos.org:8910
    login success

Initialize config success.
# stp4
dv.prepare_data()
Query data...
Query data - query...
NOTE: price adjust method is [post adjust]
当前请求daily...
{'adjust_mode': None, 'fields': 'trade_status,open,low,close,trade_date,symbol,vwap,open_adj,vwap_adj,low_adj,close_adj,high,high_adj'}
当前请求daily...
{'adjust_mode': 'post', 'fields': 'open,low,close,vwap,high,symbol,trade_date'}
当前请求query_lb_dailyindicator...
{'fields': 'symbol,pe,trade_date,pb'}
WARNING: some data is unavailable: 
    At fields 
Query data - daily fields prepared.
Query data - quarterly fields prepared.
Query instrument info...
Query adj_factor...
Query benchmark...
Query benchmar member info...
Query groups (industry)...
Field [trade_status] is overwritten.
Data has been successfully prepared.

props参数

字段 缺省值 类型 说明
symbol 不可缺失,symbol与universe二选一 string 标的代码,多标的以','隔开,如'000001.SH,600300.SH'
universe 不可缺失,symbol与universe二选一 string 指数代码(股票池),将该些指数的成员数据全部请求,多标的以','隔开,如沪深300成分股+上证50成分股'000300.SH,000016.SH'
benchmark 默认为universe中设置的第一个指数 string 基准,可以为指数代码或个股代码,单标的
start_date 不可缺省 int 开始日期
end_date 不可缺省 int 结束日期
fields 不可缺省 string 数据字段,多字段以','隔开,如'open,close,high,low'
freq 1 int 数据类型,目前只支持1,表示日线数据
all_price True bool 是否默认下载所有日线行情相关数据。默认下载
adjust_mode 'post' string 行情数据复权类型,默认后复权,目前只支持后复权
report_type '408001000' string 财报类型。财报类型共有以下几类:'408001000':合并报表;'408002000':合并报表(单季度);'408003000':合并报表(单季度调整);'408004000':合并报表(调整);'408005000':合并报表(更正前);'408006000':母公司报表;'408007000':母公司报表(单季度);'408008000':母公司报表(单季度调整);'408009000':母公司报表(调整);'408010000':母公司报表(更正前)

fields可选字段查询方式

dataview的底层数据api提供了字段的文档,可供查阅。目前,只提供了A股财务数据的相关字段文档。更过品种、行情相关字段文档请关注jaqs官方数据文档

from jaqs_fxdayu.data import DataApi

api = DataApi(data_config["remote.data.address"]) # 传入连接到的远端数据服务器的tcp地址
api.login(username=data_config["remote.data.username"],
          password=data_config["remote.data.password"])
('username: 18566262672', '0,')

help.apiList

简要描述:

  • 查询可选字段的类别

示例:

df , msg = api.query(
                    view="help.apiList",
                    fields="",
                    filter="")
df
api comment name
0 jy.balanceSheet 资产负债表 资产负债表
1 jy.cashFlow 现金流量表 现金流量表
2 jy.income 利润表 利润表
3 jy.qincome 季度利润表 季度利润表
4 jz.instrumentInfo 证券基本信息 证券基础信息
5 jz.secTradeCal 交易日历 交易日历
6 lb.balanceSheet 资产负债表 资产负债表
7 lb.cashFlow 现金流量表 现金流量表
8 lb.dcCoinInfo 数字货币信息 数字货币信息
9 lb.dcDaily 数字货币日行情 数字货币日行情
10 lb.dcExchangeInfo 十大数字货币交易所信息 数字货币交易所信息
11 lb.dcTradeInfo 数字货币交易标的信息 数字货币交易标的信息
12 lb.hkSecDailyIndicator 港股日行情指标 港股日行情指标
13 lb.income 利润表 利润表
14 lb.indexCons 指数成份股 指数成份股
15 lb.indexInfo 指数基本信息 指数基本信息
16 lb.industryType 行业代码表 行业代码表
17 lb.mfDailyPerform 公募基金行情表现 公募基金行情表现
18 lb.mfNav 公募基金净值 公募基金净值
19 lb.secAdjFactor 复权因子 复权因子
20 lb.secArchives 公司概况 公司概况
21 lb.secDailyIndicator 股票每日指标 股票每日指标
22 lb.secDailyPerform 股票行情表现 股票行情表现
23 lb.secDividend 分红送股 分红送股表
24 lb.secFinIndicators 财务数据指标 财务数据指标
25 lb.secFrozenPledger 股东股权冻结和质押 股东股权冻结和质押
26 lb.secHolderNumber 股东户数 股东户数
27 lb.secHoldingStats 股东持股统计 股东持股统计
28 lb.secIEXDaily 美股公司日行情 美股公司日行情
29 lb.secIEXEps 美股公司每股收益指标 美股公司每股收益指标
30 lb.secIEXFinIndex 美股公司财务报表指标 美股公司财务报表指标
31 lb.secIEXSymbol 美股公司股票列表 美股公司股票列表
32 lb.secIndustry 行业分类信息 行业分类
33 lb.secMainHolders 股东名单 股东名单
34 lb.secNewestFinIndex A股公司最新财务指标 A股公司最新财务指标
35 lb.secNewestShareStru 最新公司股本结构 最新公司股本结构
36 lb.secSusp 停复牌数据 停复牌

help.apiParam

简要描述:

  • 查询每个大类别下的可选字段及描述
  • 通过filter字段可以限定查询的大类
  • 返回结果中,param对应的即是dataview里的可选字段(fields)

示例:

df ,msg = api.query(view="help.apiParam",fields="",filter="api=jy.cashFlow") # 查询现金流量表可选字段
df.head()
api comment dtype must param pname ptype
0 jy.cashFlow String N symbol 证券代码 IN
1 jy.cashFlow String N start_date 公告开始日期 IN
2 jy.cashFlow String N end_date 公告结束日期 IN
3 jy.cashFlow String N start_reportdate 报告期开始日期 IN
4 jy.cashFlow String N start_reportdate 报告期结束日期 IN

数据查询

fields

  • jaqs_fxdayu.data.Dataview.fields

简要描述:

  • 当前dataview中的数据字段
  • 说明:
  • 初始请求数据时指定universe,会自动补充index_member(是否是指数成分股)、index_weight(指数成分权重)字段;若universe为多标,取设置的第一个指数为准补充index_member和index_weight
  • 初始请求数据时指定all_price=True,会请求open、high、low、close、vwap及相应复权后的结果open_adj、high_adj、low_adj、close_adj、vwap_adj
  • 请求行情类数据(open、high、low、close、vwap),若adjust_mode不为空(默认为"post"),会补充相应复权后结果并以'_adj'为后缀。
  • 初始请求数据字段中包含季度数据,会自动按时间、标的整理对齐一份到日级别上
  • 初始请求数据默认会自动补充adjust_factor(复权因子)、trade_status(交易状态-停牌or可交易)、ann_date(财报公告时间-季度数据)、quarter(季度数据对应披露月份)

示例:

dv.fields
['pe',
 'oper_exp',
 'high_adj',
 'index_weight',
 'quarter',
 'trade_status',
 'low',
 'close_adj',
 'ann_date',
 'open',
 'sw1',
 'close',
 'high',
 'low_adj',
 'vwap_adj',
 'adjust_factor',
 'open_adj',
 'vwap',
 'total_oper_rev',
 'index_member',
 'pb']

_get_fields

  • jaqs_fxdayu.data.Dataview._get_fields(field_type, fields)

简要描述:

  • 查询众多字段属于某种类型的数据
  • field_type:{'market_daily', 'ref_daily', 'income', 'balance_sheet', 'cash_flow', 'fin_indicator', 'group', 'daily', 'quarterly' (对应类型分别为 日行情、日参考数据、收入相关、balance_sheet相关、现金流相关、财务指标相关、行业分类相关、日级别数据、季度级别数据)
  • fields:list of str

示例:

dv._get_fields('quarterly',dv.fields) # 查询数据集的字段里有哪些是季度级别数据
['ann_date', 'quarter', 'oper_exp', 'total_oper_rev']

symbol

  • jaqs_fxdayu.data.Dataview.symbol

简要描述:

  • 当前dataview中的标的品种

示例:

dv.symbol[:2] # 前两只股票
['000001.SZ', '000002.SZ']

universe

  • jaqs_fxdayu.data.Dataview.universe

简要描述:

  • 当前dataview中股票池的指数代码

示例:

dv.universe
['000300.SH']

benchmark

  • jaqs_fxdayu.data.Dataview.benchmark

简要描述:

  • 当前dataview中的基准代码

示例:

dv.benchmark
'000300.SH'

data_benchmark

  • jaqs_fxdayu.data.Dataview.data_benchmark

简要描述:

  • 当前dataview中的基准的日行情数据

示例:

dv.data_benchmark.head()
close
trade_date
20170306 3446.4840
20170307 3453.9565
20170308 3448.7313
20170309 3426.9438
20170310 3427.8916

data_inst

  • jaqs_fxdayu.data.Dataview.data_inst

简要描述:

  • 数据集中的证券基础信息

示例:

dv.data_inst.head()
buylot delist_date inst_type list_date multiplier name pricetick product
symbol
600000.SH 100 99999999 1 19991110 1 浦发银行 0.01
600016.SH 100 99999999 1 20001219 1 民生银行 0.01
600030.SH 100 99999999 1 20030106 1 中信证券 0.01
600050.SH 100 99999999 1 20021009 1 中国联通 0.01
600109.SH 100 99999999 1 19970807 1 国金证券 0.01
字段 字段中文名
inst_type 证券类型
symbol 证券代码
name 证券名称
list_date 上市日期
delist_date 退市日期
buylot 最小买入单位
pricetick 最小变动单位
product 合约品种
multiplier 合约乘数

dates

  • jaqs_fxdayu.data.Dataview.dates

简要描述:

  • 数据的日期序列

示例:

dv.dates[:2] #日期序列前两个
array([20170306, 20170307])

data_d

  • jaqs_fxdayu.data.Dataview.data_d

简要描述:

  • 日级别数据集

示例:

dv.data_d.head()
symbol 000001.SZ ... 603993.SH
field adjust_factor ann_date close close_adj high high_adj index_member index_weight low low_adj ... open_adj oper_exp pb pe quarter sw1 total_oper_rev trade_status vwap vwap_adj
trade_date
20170306 100.523 20161021.0 9.45 949.94235 9.46 950.94758 1.0 0.008449 9.39 943.91097 ... 15.685408 0.0 4.7252 110.7088 9.0 240000 3.496036e+09 交易 4.97 15.94
20170307 100.523 20161021.0 9.45 949.94235 9.46 950.94758 1.0 0.008449 9.40 944.91620 ... 15.974097 0.0 4.5926 107.6027 9.0 240000 3.496036e+09 交易 4.88 15.66
20170308 100.523 20161021.0 9.42 946.92666 9.45 949.94235 1.0 0.008449 9.40 944.91620 ... 15.557102 0.0 4.6211 108.2683 9.0 240000 3.496036e+09 交易 4.87 15.62
20170309 100.523 20161021.0 9.38 942.90574 9.43 947.93189 1.0 0.008449 9.36 940.89528 ... 15.781638 0.0 4.6495 108.9339 9.0 240000 3.496036e+09 交易 4.95 15.89
20170310 100.523 20161021.0 9.40 944.91620 9.41 945.92143 1.0 0.008449 9.36 940.89528 ... 15.525026 0.0 4.6021 107.8246 9.0 240000 3.496036e+09 交易 4.87 15.62

5 rows × 6930 columns

data_q

  • jaqs_fxdayu.data.Dataview.data_q

简要描述:

  • 季度级别数据集

示例:

dv.data_q.head()
symbol 000001.SZ 000002.SZ 000008.SZ ... 603858.SH 603885.SH 603993.SH
field ann_date oper_exp quarter total_oper_rev ann_date oper_exp quarter total_oper_rev ann_date oper_exp ... quarter total_oper_rev ann_date oper_exp quarter total_oper_rev ann_date oper_exp quarter total_oper_rev
trade_date
20140930 NaN NaN 9 NaN NaN NaN 9 NaN NaN NaN ... 9 NaN 20151031.0 0.0 9 5.092343e+09 NaN NaN 9 NaN
20150331 NaN NaN 3 NaN NaN NaN 3 NaN NaN NaN ... 3 NaN 20160421.0 0.0 3 1.956667e+09 NaN NaN 3 NaN
20150630 NaN NaN 6 NaN NaN NaN 6 NaN NaN NaN ... 6 NaN NaN NaN 6 NaN NaN NaN 6 NaN
20150930 20151023.0 4.784700e+10 9 7.115200e+10 20151028.0 0.0 9 7.959621e+10 20151031.0 0.0 ... 9 7.774995e+09 20151031.0 0.0 9 6.262755e+09 20151030.0 0.0 9 3.174664e+09
20151231 20160310.0 6.726800e+10 12 9.616300e+10 20160314.0 0.0 12 1.955491e+11 20160427.0 0.0 ... 12 1.165563e+10 20160415.0 0.0 12 8.158238e+09 20160325.0 0.0 12 4.196840e+09

5 rows × 1320 columns

get

  • jaqs_fxdayu.data.Dataview.get(symbol="", start_date=0, end_date=0, fields="", date_type="int")

简要描述:

  • 综合查询方法:按品种+字段+日期查询数据,返回日期为索引,品种+字段(MultiIndex)为columns的DataFrame

参数:

参数名 必选 类型 说明
symbol string 标的代码,多标的以','隔开,如'000001.SH,600300.SH',默认查询数据集中所有标的
start_date int 开始日期,默认从数据集开始日期起
end_date int 结束日期,默认到数据集结束日期
fields string 数据字段,多字段以','隔开,如'open,close,high,low',默认查询数据集中所有字段
date_type "int"/"datetime" 日期作为索引时返回的索引类型,默认为"int",即日期为整型;当设置为"datetime"时,日期索引返回为python datetime格式

示例:

dv.get("000001.SZ,000002.SZ",fields="open,high").head()
symbol 000001.SZ 000002.SZ
field high open high open
trade_date
20170502 8.96 8.96 19.37 19.30
20170503 8.93 8.92 19.25 19.20
20170504 8.89 8.89 19.19 18.90
20170505 8.76 8.74 19.07 18.95
20170508 8.62 8.60 18.96 18.89

get_snapshot

  • jaqs_fxdayu.data.Dataview.get_snapshot(snapshot_date, symbol="", fields="")

简要描述:

  • 切片查询方法:指定日期,按品种+字段查询数据,返回品种为索引,字段为columns的DataFrame

参数:

参数名 必选 类型 说明
snapshot_date int 指定查询切片的日期
symbol string 标的代码,多标的以','隔开,如'000001.SH,600300.SH',默认查询数据集中所有标的
fields string 数据字段,多字段以','隔开,如'open,close,high,low',默认查询数据集中所有字段

示例:

dv.get_snapshot(20170504, fields="open,high").head()
field high open
symbol
000001.SZ 8.89 8.89
000002.SZ 19.19 18.90
000008.SZ 7.93 7.93
000009.SZ 8.65 8.51
000027.SZ 6.93 6.84

get_symbol

  • jaqs_fxdayu.data.Dataview.get_symbol(symbol, start_date=0, end_date=0, fields="", date_type="int")

简要描述:

  • 切片查询方法:指定品种,按时间+字段查询数据,返回时间为索引,字段为columns的DataFrame
  • 查询的结果为日频(季度数据也会被自动扩展为日频)

参数:

参数名 必选 类型 说明
symbol string 标的代码,单标的
start_date int 开始日期,默认从数据集开始日期起
end_date int 结束日期,默认到数据集结束日期
fields string 字段名称,多字段以","隔开,如"close,open",默认查询数据集所有的字段
date_type "int"/"datetime" 日期作为索引时返回的索引类型,默认为"int",即日期为整型;当设置为"datetime"时,日期索引返回为python datetime格式

示例:

dv.get_symbol("000001.SZ").head()
field adjust_factor ann_date close close_adj high high_adj index_member index_weight low low_adj ... open_adj oper_exp pb pe quarter sw1 total_oper_rev trade_status vwap vwap_adj
trade_date
20170502 100.523 20170422.0 8.94 898.67562 8.96 900.68608 1.0 0.008049 8.90 894.65470 ... 900.68608 1.951800e+10 0.8174 6.7925 3.0 银行 2.753200e+10 1.0 8.93 897.41
20170503 100.523 20170422.0 8.91 895.65993 8.93 897.67039 1.0 0.008049 8.89 893.64947 ... 896.66516 1.951800e+10 0.8147 6.7697 3.0 银行 2.753200e+10 1.0 8.91 895.32
20170504 100.523 20170422.0 8.74 878.57102 8.89 893.64947 1.0 0.008049 8.72 876.56056 ... 893.64947 1.951800e+10 0.7992 6.6405 3.0 银行 2.753200e+10 1.0 8.81 885.83
20170505 100.523 20170422.0 8.63 867.51349 8.76 880.58148 1.0 0.008049 8.58 862.48734 ... 878.57102 1.951800e+10 0.7891 6.5570 3.0 银行 2.753200e+10 1.0 8.65 869.59
20170508 100.523 20170422.0 8.57 861.48211 8.62 866.50826 1.0 0.008049 8.54 858.46642 ... 864.49780 1.951800e+10 0.7836 6.5114 3.0 银行 2.753200e+10 1.0 8.57 861.76

5 rows × 21 columns

get_ts

  • jaqs_fxdayu.data.Dataview.get_ts(field, symbol="", start_date=0, end_date=0, date_type="int")

简要描述:

  • 切片查询方法:指定字段,按时间+品种查询数据,返回时间为索引,品种为columns的DataFrame
  • 查询的结果为日频(季度数据也会被自动扩展为日频)

参数:

参数名 必选 类型 说明
symbol string 标的代码,多标的以','隔开,如'000001.SH,600300.SH',默认查询数据集中所有标的
start_date int 开始日期,默认从数据集开始日期起
end_date int 结束日期,默认到数据集结束日期
field string 数据字段,单字段
date_type "int"/"datetime" 日期作为索引时返回的索引类型,默认为"int",即日期为整型;当设置为"datetime"时,日期索引返回为python datetime格式

示例:

dv.get_ts("open").head()
symbol 000001.SZ 000002.SZ 000008.SZ 000009.SZ 000027.SZ 000039.SZ 000060.SZ 000061.SZ 000063.SZ 000069.SZ ... 601988.SH 601989.SH 601992.SH 601997.SH 601998.SH 603000.SH 603160.SH 603858.SH 603885.SH 603993.SH
trade_date
20170502 8.96 19.30 8.09 8.40 6.99 16.09 10.33 9.32 17.73 8.15 ... 3.58 7.05 8.09 15.70 6.01 14.90 96.55 80.25 22.28 4.41
20170503 8.92 19.20 7.99 8.52 6.95 16.06 10.24 9.32 17.58 8.09 ... 3.55 6.96 8.15 15.67 5.97 14.90 97.88 80.60 22.28 4.44
20170504 8.89 18.90 7.93 8.51 6.84 15.96 10.13 9.22 17.78 7.96 ... 3.53 6.85 7.58 15.68 5.90 14.80 97.20 80.50 22.40 4.44
20170505 8.74 18.95 7.90 8.54 6.85 15.70 9.91 9.16 17.80 7.98 ... 3.52 6.74 7.78 15.56 5.85 14.35 97.00 79.71 22.40 4.30
20170508 8.60 18.89 7.52 8.26 6.79 15.17 9.89 9.10 17.56 7.87 ... 3.52 6.59 7.80 15.05 5.83 14.11 94.11 78.31 22.32 4.23

5 rows × 330 columns

get_ts_quarter

  • jaqs_fxdayu.data.Dataview.get_ts_quarter(field, symbol="", start_date=0, end_date=0)

简要描述:

  • 切片查询方法:指定字段,按时间+品种查询季度数据,返回报告日期为索引,品种为columns的DataFrame
  • 注意:参数中提供的field必须为季度数据,可通过Dataview._get_fields('quarterly',Dataview.fields)查询数据集的字段里有哪些是季度级别数据

参数:

参数名 必选 类型 说明
symbol string 标的代码,多标的以','隔开,如'000001.SH,600300.SH',默认查询数据集中所有标的
start_date int 开始日期,默认从数据集开始日期起
end_date int 结束日期,默认到数据集结束日期
field string 季度数据字段,单字段

示例:

dv.get_ts_quarter('total_oper_rev').head()
symbol 000001.SZ 000002.SZ 000008.SZ 000009.SZ 000027.SZ 000039.SZ 000060.SZ 000061.SZ 000063.SZ 000069.SZ ... 601988.SH 601989.SH 601992.SH 601997.SH 601998.SH 603000.SH 603160.SH 603858.SH 603885.SH 603993.SH
trade_date
20140930 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN 5.092343e+09 NaN
20150331 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN 1.698335e+09 NaN NaN NaN NaN 1.956667e+09 NaN
20150630 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN 3.622176e+09 NaN NaN 4.815833e+08 NaN NaN NaN
20150930 7.115200e+10 7.959621e+10 7.631092e+08 3.145235e+09 8.676531e+09 4.527115e+10 1.149957e+10 1.280032e+09 6.852324e+10 NaN ... 3.567730e+11 3.977208e+10 2.590268e+10 5.605255e+09 1.074530e+11 1.066451e+09 7.322436e+08 7.774995e+09 6.262755e+09 3.174664e+09
20151231 9.616300e+10 1.955491e+11 1.295076e+09 4.895401e+09 1.112998e+10 5.868580e+10 1.696571e+10 1.736651e+09 1.001864e+11 3.223633e+10 ... 4.743210e+11 5.981080e+10 4.092534e+10 7.705192e+09 1.451340e+11 1.604762e+09 1.119601e+09 1.165563e+10 8.158238e+09 4.196840e+09

5 rows × 330 columns

数据添加

data_api

  • jaqs_fxdayu.data.Dataview.data_api

简要描述:

  • 数据api(DataService远程数据服务类)

示例:

dv.data_api
<jaqs.data.dataservice.RemoteDataService at 0x7f1ed0679978>

refresh_data

  • jaqs_fxdayu.data.Dataview.refresh_data(end_date,data_api=None)

简要描述:

  • 将数据集中的数据更新至end_date
  • 自定义的数据(通过add_formula计算或append_df加入数据集的)无法更新

参数:

参数名 必选 类型 说明
end_date int 更新到的截止日期,如20180411
data_api jaqs.data.dataservice.RemoteDataService DataService远程数据服务类

示例:

dv.get_ts("close").tail(2)
symbol 000001.SZ 000002.SZ 000008.SZ 000009.SZ 000027.SZ 000039.SZ 000060.SZ 000061.SZ 000063.SZ 000069.SZ ... 601988.SH 601989.SH 601992.SH 601997.SH 601998.SH 603000.SH 603160.SH 603858.SH 603885.SH 603993.SH
trade_date
20170928 10.88 26.41 8.62 8.99 6.47 18.18 12.05 9.03 28.15 8.19 ... 4.14 6.21 6.17 14.70 6.31 13.81 93.71 67.59 14.40 7.76
20170929 11.11 26.25 9.03 8.99 6.45 18.15 12.13 8.82 28.30 8.17 ... 4.12 6.21 6.35 14.71 6.30 13.84 95.44 67.76 14.45 7.84

2 rows × 330 columns

dv.refresh_data(20171201)
dv.get_ts("close").tail(2)
Field name [{'quarter', 'adjust_factor'}] not valid, ignore.
Initialize config success.
Query data...
Query data - query...
NOTE: price adjust method is [post adjust]
当前请求daily...
{'adjust_mode': None, 'fields': 'trade_status,symbol,open_adj,vwap,trade_date,index_member,low,close_adj,high,open,high_adj,low_adj,vwap_adj,index_weight,close'}
当前请求daily...
{'adjust_mode': 'post', 'fields': 'vwap,high,low,open,close,symbol,trade_date'}
当前请求query_lb_dailyindicator...
{'fields': 'pe,pb,symbol,trade_date'}
WARNING: some data is unavailable: 
    At fields 
Query data - daily fields prepared.
Query data - quarterly fields prepared.
Query instrument info...
Query adj_factor...
Query benchmark...
Query benchmar member info...
Field [index_member] is overwritten.
Field [index_weight] is overwritten.
Query groups (industry)...
Data has been successfully prepared.
symbol 000001.SZ 000002.SZ 000008.SZ 000009.SZ 000027.SZ 000039.SZ 000060.SZ 000061.SZ 000063.SZ 000069.SZ ... 601988.SH 601989.SH 601992.SH 601997.SH 601998.SH 603000.SH 603160.SH 603858.SH 603885.SH 603993.SH
trade_date
20171130 13.38 31.22 8.48 7.60 6.12 19.49 10.83 7.69 33.08 8.89 ... 3.93 6.16 5.93 14.39 6.36 12.15 111.66 54.66 13.43 7.07
20171201 13.00 30.73 8.59 7.58 6.10 19.81 10.92 7.72 33.56 8.85 ... 3.92 6.12 5.92 14.35 6.39 12.23 110.46 54.47 13.17 7.10

2 rows × 330 columns

add_comp_info

  • jaqs_fxdayu.data.Dataview.add_comp_info(index,data_api=None)

简要描述:

  • 往数据集里添加两个新字段——symbol是否属于某指数成分股 & symbol在某指数中所占的比重如何
  • 区别于通过设置universe初始化默认下载的index_member和index_weight字段, 通过该方法新增的字段可更灵活的查询股票标的与任意指数的关系和权重
  • 新增字段名为[index]_member [index]_weight

参数:

参数名 必选 类型 说明
index string 指数代码
data_api jaqs.data.dataservice.RemoteDataService DataService远程数据服务类

示例:

dv.add_comp_info('000016.SH')
dv.get_ts("000016.SH_weight").head()
symbol 000001.SZ 000002.SZ 000008.SZ 000009.SZ 000027.SZ 000039.SZ 000060.SZ 000061.SZ 000063.SZ 000069.SZ ... 601988.SH 601989.SH 601992.SH 601997.SH 601998.SH 603000.SH 603160.SH 603858.SH 603885.SH 603993.SH
trade_date
20170502 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 0.01881 0.01607 NaN NaN 0.00459 NaN NaN NaN NaN NaN
20170503 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 0.01881 0.01607 NaN NaN 0.00459 NaN NaN NaN NaN NaN
20170504 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 0.01881 0.01607 NaN NaN 0.00459 NaN NaN NaN NaN NaN
20170505 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 0.01881 0.01607 NaN NaN 0.00459 NaN NaN NaN NaN NaN
20170508 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 0.01881 0.01607 NaN NaN 0.00459 NaN NaN NaN NaN NaN

5 rows × 330 columns

add_field

  • jaqs_fxdayu.data.Dataview.add_field(field_name, data_api=None, report_type='408001000')

简要描述:

  • 通过远程数据源往数据集里新增新字段(需确保远程数据源中含有该字段的数据)

参数:

参数名 必选 类型 说明
field_name string 待新增的字段名
data_api jaqs.data.dataservice.RemoteDataService DataService远程数据服务类
report_type string 财报类型。财报类型共有以下几类:'408001000':合并报表;'408002000':合并报表(单季度);'408003000':合并报表(单季度调整);'408004000':合并报表(调整);'408005000':合并报表(更正前);'408006000':母公司报表;'408007000':母公司报表(单季度);'408008000':母公司报表(单季度调整);'408009000':母公司报表(调整);'408010000':母公司报表(更正前)。 默认为'408001000':合并报表

示例:

dv.add_field("volume")
Query data - query...
NOTE: price adjust method is [post adjust]
当前请求daily...
{'adjust_mode': None, 'fields': 'volume,trade_status,symbol,trade_date'}
Query data - daily fields prepared.





True
dv.get_ts("volume").head()
symbol 000001.SZ 000002.SZ 000008.SZ 000009.SZ 000027.SZ 000039.SZ 000060.SZ 000061.SZ 000063.SZ 000069.SZ ... 601988.SH 601989.SH 601992.SH 601997.SH 601998.SH 603000.SH 603160.SH 603858.SH 603885.SH 603993.SH
trade_date
20170502 31102610.0 18442367.0 9684786.0 25497861.0 6432105.0 6327586.0 8965345.0 4378121.0 19238235.0 27143591.0 ... 66093550.0 66530694.0 544839719.0 10925965.0 17520651.0 3119911.0 2091792.0 818200.0 926950.0 88555440.0
20170503 28031077.0 26926611.0 7763618.0 18416240.0 10746444.0 6107544.0 13106532.0 4834657.0 34074547.0 38599137.0 ... 84611551.0 86231763.0 516934503.0 11688295.0 23738285.0 5159855.0 1346232.0 854976.0 1006828.0 58089924.0
20170504 69651707.0 17846705.0 8177165.0 15236008.0 7574795.0 7298552.0 25223485.0 5413535.0 33992154.0 17511452.0 ... 74607306.0 105007184.0 606859878.0 15697719.0 38672243.0 6574210.0 823415.0 1148000.0 1139450.0 72505821.0
20170505 62370085.0 11655082.0 17977630.0 19831245.0 7462745.0 13769005.0 14733040.0 4027676.0 32366194.0 20326215.0 ... 175567864.0 139296698.0 318657662.0 15302449.0 29776701.0 7457617.0 1135698.0 1159354.0 2677492.0 69479848.0
20170508 46008989.0 18399614.0 8826250.0 19415168.0 9090216.0 5051955.0 14364021.0 3932185.0 29396110.0 29515727.0 ... 138086728.0 144402061.0 383459440.0 14624454.0 28293010.0 5304703.0 1563932.0 1425800.0 1799118.0 47210293.0

5 rows × 330 columns

add_formula

  • jaqs_fxdayu.data.Dataview.add_formula(field_name,formula,is_quarterly,add_data=False,overwrite=True,formula_func_name_style='camel',data_api=None,register_funcs = None,within_index=True)

简要描述:

  • 通过表达式定义因子

参数:

参数名 必选 类型 说明
field_name string 自定义的因子名称
formula string 因子表达式
is_quarterly bool 公式中的季度数据是否按季频周期提取(若为True,则季度数据时间序列相关计算在季频下进行,否则处理到日频下进行计算。日频数据不会受此参数影响)
add_data bool 是否将最终结果添加到dataview数据集中,默认不添加
overwrite bool 若因子名称(field_name)与数据集中已有的字段冲突,是否覆盖。仅在add_data=True时生效,默认覆盖
formula_func_name_style string {'upper', 'lower', 'camel'} 表达式中用到的函数名大小写规则,默认为'camel'
data_api jaqs.data.dataservice.RemoteDataService DataService远程数据服务类,若因子表达式中使用到的字段在当前数据集中没有,会通过该api自动从网络请求相应字段添加到当前数据集当中
register_funcs dict of function 因子表达式中用到的自定义方法所组成的dict,如{"name1":func1,"name2":func2}
with_index bool 执行因子表达式计算的时候 是否只考虑指数成分股。仅在数据集字段中含有index_member时生效, 默认为True

示例一: 直接返回

dv.add_formula("momentum", "Return(close_adj, 20)", is_quarterly=False).head()
symbol 000001.SZ 000002.SZ 000008.SZ 000009.SZ 000027.SZ 000039.SZ 000060.SZ 000061.SZ 000063.SZ 000069.SZ ... 601988.SH 601989.SH 601992.SH 601997.SH 601998.SH 603000.SH 603160.SH 603858.SH 603885.SH 603993.SH
trade_date
20170502 -0.015419 -0.064783 -0.076389 -0.057860 0.007246 -0.011707 -0.074910 -0.154265 0.037647 0.120332 ... -0.027322 -0.034578 0.708075 -0.058859 -0.099548 -0.107944 0.032925 -0.084092 -0.032118 0.008929
20170503 -0.028353 -0.083576 -0.093822 -0.066521 -0.036517 -0.006211 -0.089767 -0.162579 0.050708 0.093151 ... -0.045946 -0.076613 0.633047 -0.101772 -0.119225 -0.105232 0.030166 -0.089233 -0.038296 -0.043550
20170504 -0.051031 -0.075802 -0.113611 -0.085653 -0.057613 -0.043135 -0.126427 -0.179695 0.028852 0.076716 ... -0.040761 -0.109211 0.543860 -0.087668 -0.131657 -0.146903 0.001239 -0.108997 -0.048739 -0.151733
20170505 -0.061957 -0.091390 -0.179543 -0.114684 -0.058172 -0.095238 -0.128748 -0.185484 0.017929 0.059140 ... -0.032787 -0.132199 0.377660 -0.109549 -0.132244 -0.162114 -0.038807 -0.127279 -0.039676 -0.162778
20170508 -0.068478 -0.112019 -0.194934 -0.136120 -0.075000 -0.095668 -0.129061 -0.178796 -0.013326 0.042610 ... -0.019231 -0.161880 0.133871 -0.127647 -0.130370 -0.175264 -0.002776 -0.132699 -0.058723 -0.152260

5 rows × 330 columns

示例二: 添加到数据集里,则计算结果之后可以反复调用

dv.add_formula("momentum", "Return(close_adj, 20)", is_quarterly=False, add_data=True)
dv.get_ts("momentum").head()
symbol 000001.SZ 000002.SZ 000008.SZ 000009.SZ 000027.SZ 000039.SZ 000060.SZ 000061.SZ 000063.SZ 000069.SZ ... 601988.SH 601989.SH 601992.SH 601997.SH 601998.SH 603000.SH 603160.SH 603858.SH 603885.SH 603993.SH
trade_date
20170502 -0.015419 -0.064783 -0.076389 -0.057860 0.007246 -0.011707 -0.074910 -0.154265 0.037647 0.120332 ... -0.027322 -0.034578 0.708075 -0.058859 -0.099548 -0.107944 0.032925 -0.084092 -0.032118 0.008929
20170503 -0.028353 -0.083576 -0.093822 -0.066521 -0.036517 -0.006211 -0.089767 -0.162579 0.050708 0.093151 ... -0.045946 -0.076613 0.633047 -0.101772 -0.119225 -0.105232 0.030166 -0.089233 -0.038296 -0.043550
20170504 -0.051031 -0.075802 -0.113611 -0.085653 -0.057613 -0.043135 -0.126427 -0.179695 0.028852 0.076716 ... -0.040761 -0.109211 0.543860 -0.087668 -0.131657 -0.146903 0.001239 -0.108997 -0.048739 -0.151733
20170505 -0.061957 -0.091390 -0.179543 -0.114684 -0.058172 -0.095238 -0.128748 -0.185484 0.017929 0.059140 ... -0.032787 -0.132199 0.377660 -0.109549 -0.132244 -0.162114 -0.038807 -0.127279 -0.039676 -0.162778
20170508 -0.068478 -0.112019 -0.194934 -0.136120 -0.075000 -0.095668 -0.129061 -0.178796 -0.013326 0.042610 ... -0.019231 -0.161880 0.133871 -0.127647 -0.130370 -0.175264 -0.002776 -0.132699 -0.058723 -0.152260

5 rows × 330 columns

示例三: 通过事先定义并注册一些因子计算中需要的函数方法,完成更高自由度的因子计算

# 定义指数平均计算函数-传入一个时间为索引,股票为columns的Dataframe,计算其指数平均序列
# SMAtoday=m/n * Pricetoday + ( n-m )/n * SMAyesterday;
def sma(df, n, m):
    a = n / m - 1
    r = df.ewm(com=a, axis=0, adjust=False)
    return r.mean()

dv.add_formula("double_SMA","SMA(SMA(close_adj,3,1),3,1)",
               is_quarterly=False,
               add_data=True,
               register_funcs={"SMA":sma}).head()
symbol 000001.SZ 000002.SZ 000008.SZ 000009.SZ 000027.SZ 000039.SZ 000060.SZ 000061.SZ 000063.SZ 000069.SZ ... 601988.SH 601989.SH 601992.SH 601997.SH 601998.SH 603000.SH 603160.SH 603858.SH 603885.SH 603993.SH
trade_date
20170502 902.763220 2486.337268 222.702230 86.694747 96.210407 384.093500 243.687558 213.240494 298.533382 321.033510 ... 5.618304 12.228624 16.337667 15.853791 8.049842 61.962369 90.623181 81.381230 45.732059 14.250433
20170503 901.693012 2458.607759 220.011542 86.274281 95.764841 382.711958 242.819760 209.993794 299.424894 320.170244 ... 5.610843 12.093762 16.388825 15.822053 7.996918 61.652794 92.037297 81.146152 45.665220 14.262870
20170504 898.648253 2434.327687 217.509487 85.953173 95.348827 380.921464 241.525309 207.048611 300.227209 319.209255 ... 5.600827 11.952804 16.444759 15.784386 7.943142 61.251215 93.216093 80.872100 45.594402 14.249688
20170505 893.835609 2412.493048 214.370868 85.402007 94.885973 377.704290 240.001648 204.469036 300.466335 317.786651 ... 5.592535 11.798688 16.461484 15.702713 7.890575 60.693946 93.950437 80.487844 45.588495 14.194258
20170508 888.101823 2388.403014 210.622674 84.588481 94.241335 373.764215 238.650220 202.458126 299.352026 316.098221 ... 5.591171 11.616677 16.285680 15.569446 7.848774 60.111181 94.615652 79.885080 45.523878 14.133393

5 rows × 330 columns

func_doc

  • jaqs_fxdayu.data.Dataview.func_doc

简要描述:

  • add_formula 支持的内置公式查询方法
  • 查询方法包括:
  • func_doc.doc # 完整文档
  • func_doc.funcs # 函数一览
  • func_doc.types # 函数类型
  • func_doc.descriptions # 函数描述
  • func_doc.search_by_type(type) # 根据函数类型查询该类型下所有的函数 type-函数类型(string)
  • func_doc.search_by_description(description) # 根据函数描述查询可能符合该描述的所有的函数 description-函数描述(string)
  • dv.func_doc.search_by_func(func,precise) # 根据函数名查询该函数 func-函数方法(string) precise-是否模糊查询(bool)

示例:

# 完整文档-前5条
dv.func_doc.doc.head()
分类 说明 公式 示例
0 四则运算 加法运算 + close + open
1 四则运算 减法运算 - close - open
2 四则运算 乘法运算 * vwap * volume
3 四则运算 除法运算 / close / open
4 基本数学函数 符号函数,返回值为{-1, 0, 1} Sign(x) Sign(close-open)
# 函数一览-前两个
dv.func_doc.funcs[:2]
array(['+', '-'], dtype=object)
# 函数类型-前两个
dv.func_doc.types[:2]
array(['四则运算', '基本数学函数'], dtype=object)
# 函数描述-前两个
dv.func_doc.descriptions[:2]
array(['加法运算', '减法运算'], dtype=object)
# 根据函数类型查询该类型下所有的函数
dv.func_doc.search_by_type("数学函数")
分类 说明 公式 示例
4 基本数学函数 符号函数,返回值为{-1, 0, 1} Sign(x) Sign(close-open)
5 基本数学函数 绝对值函数 Abs(x) Abs(close-open)
6 基本数学函数 自然对数 Log(x) Log(close/open)
7 基本数学函数 对x取负 -x -close
8 基本数学函数 幂函数 ^ close ^ 2
9 基本数学函数 幂函数x^y Pow(x,y) Pow(close,2)
10 基本数学函数 保持符号的幂函数,等价于Sign(x) * (Abs(x)^e) SignedPower(x,e) SignedPower(close-open, 0.5)
11 基本数学函数 取余函数 % oi % 10
# 根据函数描述查询可能符合该描述的所有的函数
dv.func_doc.search_by_description("绝对值")
分类 说明 公式 示例
5 基本数学函数 绝对值函数 Abs(x) Abs(close-open)
# 根据函数名查询该函数
dv.func_doc.search_by_func("Tan",precise=True)
分类 说明 公式 示例
24 三角函数 正切函数 Tan(x) Tan(close/open)
# 根据函数名查询该函数 -模糊查询
dv.func_doc.search_by_func("Tan",precise=False)
分类 说明 公式 示例
24 三角函数 正切函数 Tan(x) Tan(close/open)
56 横截面函数 - 数据处理 将指标标准化,即在横截面上减去平均值后再除以标准差 Standardize(x) Standardize(close/Delay(close,1)-1) 表示日收益率的标准化

append_df

  • jaqs_fxdayu.data.Dataview.append_df(df, field_name, is_quarterly=False, overwrite=True)

简要描述:

  • 外部构造一个pandas.DataFrame,作为新增字段通过此方法添加到数据集中(更灵活的定义因子的方式)
  • 注:该方法通常只用于添加日度数据(设置is_qurterly=False),若通过该方法添加季度数据(is_qurterly=True),则添加的数据无法自动对齐到日级别,也无法通过get_ts方法访问到。
  • 如需添加季度数据并将其自动对齐到日级别,请使用append_df_quarter方法

参数:

参数名 必选 类型 说明
df pandas.DataFrame,日期为索引,品种为columns 待添加的数据
field_name string 待新增的数据的字段名
is_quarterly bool 是否是季度数据,默认False
overwrite bool 若待新增的数据的字段名(field_name)与数据集中已有的字段冲突,是否覆盖。默认覆盖

示例:

df = dv.get_ts('close') - dv.get_ts("high")
dv.append_df(df,"close-high",is_quarterly=False)
dv.get_ts("close-high").head()
symbol 000001.SZ 000002.SZ 000008.SZ 000009.SZ 000027.SZ 000039.SZ 000060.SZ 000061.SZ 000063.SZ 000069.SZ ... 601988.SH 601989.SH 601992.SH 601997.SH 601998.SH 603000.SH 603160.SH 603858.SH 603885.SH 603993.SH
trade_date
20170502 -0.02 -0.17 -0.15 -0.04 -0.04 -0.25 -0.10 -0.17 -0.15 -0.13 ... -0.02 -0.07 -0.09 -0.12 -0.06 -0.19 -2.00 -0.49 -0.10 -0.15
20170503 -0.02 -0.39 -0.12 -0.08 -0.09 -0.16 -0.21 -0.15 -0.23 -0.17 ... -0.03 -0.10 -0.54 -0.09 -0.06 -0.16 -0.58 -0.43 -0.03 -0.14
20170504 -0.15 -0.17 -0.05 -0.11 -0.06 -0.30 -0.18 -0.10 -0.25 -0.04 ... -0.01 -0.08 -0.42 -0.15 -0.04 -0.38 -1.68 -0.96 -0.18 -0.11
20170505 -0.13 -0.18 -0.36 -0.32 -0.09 -0.62 -0.12 -0.07 -0.29 -0.18 ... -0.02 -0.18 -0.21 -0.47 -0.02 -0.34 -3.63 -1.41 -0.15 -0.03
20170508 -0.05 -0.49 -0.21 -0.26 -0.14 -0.30 -0.17 -0.09 -0.64 -0.19 ... 0.00 -0.17 -0.82 -0.37 -0.02 -0.38 -2.49 -1.71 -0.39 -0.02

5 rows × 330 columns

append_df_quarter

  • jaqs_fxdayu.data.Dataview.append_df_quarter(df, field_name, overwrite=True)

简要描述:

  • 外部构造一个pandas.DataFrame,且DataFrame中为季度数据,作为新增字段通过此方法添加到数据集中(更灵活的定义因子的方式)

    与jaqs_fxdayu.data.Dataview.append_df(df, field_name, is_quarterly=True)不同之处在于:该方法为自动将所添加的季度也增加到日度数据中,相当于将数据对齐到日线为新数据df_daily后,再调用一次jaqs_fxdayu.data.Dataview.append_df(df_daily, field_name, is_quarterly=False)。这样可以方便加入季度,然后统一在日线周期下获取数据进行研究。

参数:

参数名 必选 类型 说明
df pandas.DataFrame,日期为索引,品种为columns 待添加的数据
field_name string 待新增的数据的字段名
overwrite bool 若待新增的数据的字段名(field_name)与数据集中已有的字段冲突,是否覆盖。默认覆盖

示例:

dv.add_field("roe")
roe = dv.get_ts_quarter('roe')
df = roe.diff()
dv.append_df_quarter(df, "d-roe")
dv.get_ts_quarter("d-roe").dropna().head() # 查询季度数据
Query data - query...
Query data - quarterly fields prepared.
symbol 000001.SZ 000002.SZ 000008.SZ 000009.SZ 000027.SZ 000039.SZ 000060.SZ 000061.SZ 000063.SZ 000069.SZ ... 601988.SH 601989.SH 601992.SH 601997.SH 601998.SH 603000.SH 603160.SH 603858.SH 603885.SH 603993.SH
trade_date
20160331 -11.4660 -18.4105 -10.4000 -18.7879 -8.1359 -6.3414 -3.7253 -0.3387 -7.6121 -12.4472 ... -10.4562 4.8409 -5.4368 -20.6642 -10.7903 -9.0602 -30.5938 -58.5293 -26.3598 -3.9513
20160630 3.4734 4.5853 0.7098 0.9384 3.0494 -2.7715 1.3095 0.5910 2.0323 2.5554 ... 3.4989 0.9899 4.2848 4.8958 3.8221 -0.2508 17.8033 5.4220 0.5424 2.1448
20160930 3.4469 2.8231 3.9954 3.0741 2.2083 0.6739 1.6038 3.6994 2.6870 3.3735 ... 2.9932 0.2131 0.8388 5.1189 3.1815 1.6016 18.4533 8.0545 9.7982 0.3639
20161231 2.0210 11.4433 6.5921 0.5512 0.0144 2.5387 2.1093 -2.5432 -13.4652 9.3406 ... 2.1099 -0.3445 1.0118 5.1804 1.4766 1.1263 1.5475 1.7371 -0.2593 2.2140
20170331 -9.3964 -19.0699 -11.4174 -4.4972 -5.7008 -0.1440 -1.5022 -1.7294 9.6676 -15.1272 ... -8.8577 -0.7407 -5.5384 -16.3442 -8.9765 -5.5680 -37.6522 -16.1615 -17.3611 -2.3932

5 rows × 330 columns

# 对应的日度数据
dv.get_ts("d-roe").dropna().head()
symbol 000001.SZ 000002.SZ 000008.SZ 000009.SZ 000027.SZ 000039.SZ 000060.SZ 000061.SZ 000063.SZ 000069.SZ ... 601988.SH 601989.SH 601992.SH 601997.SH 601998.SH 603000.SH 603160.SH 603858.SH 603885.SH 603993.SH
trade_date
20170502 -9.3964 -19.0699 -11.4174 -4.4972 -5.7008 -0.144 -1.5022 -1.7294 9.6676 -15.1272 ... -8.8577 -0.7407 -5.5384 -16.3442 -8.9765 -5.568 -37.6522 -16.1615 -17.3611 -2.3932
20170503 -9.3964 -19.0699 -11.4174 -4.4972 -5.7008 -0.144 -1.5022 -1.7294 9.6676 -15.1272 ... -8.8577 -0.7407 -5.5384 -16.3442 -8.9765 -5.568 -37.6522 -16.1615 -17.3611 -2.3932
20170504 -9.3964 -19.0699 -11.4174 -4.4972 -5.7008 -0.144 -1.5022 -1.7294 9.6676 -15.1272 ... -8.8577 -0.7407 -5.5384 -16.3442 -8.9765 -5.568 -37.6522 -16.1615 -17.3611 -2.3932
20170505 -9.3964 -19.0699 -11.4174 -4.4972 -5.7008 -0.144 -1.5022 -1.7294 9.6676 -15.1272 ... -8.8577 -0.7407 -5.5384 -16.3442 -8.9765 -5.568 -37.6522 -16.1615 -17.3611 -2.3932
20170508 -9.3964 -19.0699 -11.4174 -4.4972 -5.7008 -0.144 -1.5022 -1.7294 9.6676 -15.1272 ... -8.8577 -0.7407 -5.5384 -16.3442 -8.9765 -5.568 -37.6522 -16.1615 -17.3611 -2.3932

5 rows × 330 columns

append_df_symbol

  • jaqs_fxdayu.data.Dataview.append_df(df, symbol_name, overwrite=False)

简要描述:

  • 外部构造一个pandas.DataFrame(含某个新品种的各个字段的信息),作为新增品种通过此方法添加到数据集中
  • 目前,该方法只支持添加日线数据的信息,无法添加季度数据

参数:

参数名 必选 类型 说明
df pandas.DataFrame,日期为索引,字段名为columns 待添加的数据
symbol_name string 待新增的数据的品种名
overwrite bool 若待新增的品种(symbol_name)与数据集中已有的品种冲突,是否覆盖。默认不覆盖

示例:

df = dv.get("000001.SZ")
df.columns = df.columns.droplevel("symbol")
dv.append_df_symbol(df=df,symbol_name="000001.SZ",overwrite=True)
Symbol [000001.SZ] is overwritten.

删除数据

remove_field

  • jaqs_fxdayu.data.Dataview.remove_field(field_names)

简要描述:

  • 将指定字段从dataview中删除

参数:

参数名 必选 类型 说明
field_names string 待删除的字段,用","隔开

示例:

print("open" in dv.fields)
dv.remove_field("open")
print("open" in dv.fields)
True
False

remove_symbol

  • jaqs_fxdayu.data.Dataview.remove_symbol(symbols)

简要描述:

  • 将指定品种从dataview中删除

参数:

参数名 必选 类型 说明
symbols string 待删除的品种,用","隔开

示例:

print("000001.SZ" in dv.symbol)
dv.remove_symbol("000001.SZ")
print("000001.SZ" in dv.symbol)
True
False

数据落地

save_dataview

  • jaqs_fxdayu.data.Dataview.save_dataview(folder_path)

简要描述:

  • 将dataview中的数据保存到本地指定目录(folder_path)下

参数:

参数名 必选 类型 说明
folder_path string 保存路径

示例:

import os
dataview_folder = './data'

if not (os.path.isdir(dataview_folder)):
    os.makedirs(dataview_folder)
dv.save_dataview(dataview_folder)
Store data...
Dataview has been successfully saved to:
/home/xinger/Desktop/jaqs_plus/jaqs-fxdayu/docs/_source/data

You can load it with load_dataview('/home/xinger/Desktop/jaqs_plus/jaqs-fxdayu/docs/_source/data')

load_dataview

  • jaqs_fxdayu.data.Dataview.load_dataview(folder_path)

简要描述:

  • 将数据从本地指定目录(folder_path)下加载到dataview中
  • 目前仅支持全部加载

参数:

参数名 必选 类型 说明
folder_path string 加载路径

示例:

dv.load_dataview(dataview_folder)
Dataview loaded successfully.