query_object:一个sqlalchemy.orm.query.Query对象,

4万
0
2023-08-26 00:46:30
4
投币
收藏
1
主要发布:数学思维与文化、少儿编程、发明创造、《新概念英语》背诵相关视频
3772.6万播放
简介
循环语句
00:10
解决重复执行工作的问题
00:15
十只股票循环买入
00:27
for循环可以遍历任何序列的项目,比如一个list
00:11
含义是依次把序列中的元素赋值给for后的变量,并执行循环语句
00:11
for 变量 in 一个序列
00:11
要循环的语句,也叫循环体
00:18
循环买入股票
00:15
说起来略复杂,其实不难,来看个使用for的例子
00:11
['大卫','查理曼','凯撒','亚历山大'] 列表数据
00:16
列表中的人物对应扑克牌中四位皇帝
00:21
for k in ['大卫','查理曼','凯撒','亚历山大']
00:14
for k in ['大卫','查理曼','凯撒','亚历山大'] 准备进行遍历操作
00:17
print(k) 输出 k 的内容
00:11
for k in 生成一个新的临时变量
00:13
for...in 结构生成新的变量
00:33
for语句的运行过程是,取出list中第一个元素'大卫'
00:12
并将其赋值给k,然后执行print(k)即在日志中打印k
00:14
此时k中是'大卫'
00:09
之后,取出list中第二个元素'查理曼'并将其赋值给k
00:11
然后执行print(k)即在日志中打印k
00:11
此时k中是'查理曼',以此类推
00:09
直到'亚历山大'被打印
00:11
使用for语句时有一个常见一起使用的语句range()
00:14
range() 是内置函数
00:11
它的功能是生成等差数列
00:07
range(首项,上限,步长)
00:11
首项 就是这个数列的第一项,可省略,省略后默认为0
00:13
步长 就是数列的公差、间隔,可省略,省略后默认为1
00:15
按住 Ctrl + 滚轮 可以放大和缩小网页
00:20
上限 是用来限制数列长度的,即数列不得大于或等于上限。不可省略
00:11
另外,python2中range产生的是list
00:10
但python3中产生的不是list
00:11
但可以用list()这个语句把结果转成list类型
00:13
比如list(range(1,7,2))
00:11
给出一个 range() 的例子
00:06
for j in range(1,7,2)
00:14
for j in range(1,7,2) 产生一个序列,逐个取值
00:16
print(j) 逐个输出
00:11
print(range(1,7,2)) 输出range数据
00:11
输出结果说明
00:32
continue与break是重要的修饰循环执行流程的语句
00:12
break的作用是写在循环体中用来跳出当前的整个循环过程
00:12
continue的作用是写在循环体中用来跳出当前的这一次的循环过程
00:11
通过一个例子应该就能明白两者的作用与区别
00:09
一个简单的循环例子
00:06
for t in range(4)
00:08
print(t) 输出变量 t 的内容
00:07
执行的结果是 0-3
00:12
在例子中使用break
00:12
可以看到当循环到2的时候,打印omg后,执行break
00:13
终止了整个循环过程,不再继续循环3了
00:15
所以omg后就什么都没了
00:08
for t in range(4) - 遍历每一个元素
00:15
if t == 2 分支结构
00:24
输出数据之前先检查,看是否需要终止循环
00:13
执行的结果是这样的
00:09
在例子中使用continue
00:10
可以看到当循环到2的时候,打印omg后,执行continue
00:08
跳过了当前正循环的t为2这个循环过程的余下部分
00:13
不在继续执行之后的语句(即print(t),此时t等于2)
00:10
而继续循环3了,所以omg后有打印3
00:09
for t in range(4) 结束当前循环,进入下一轮
00:30
写一个简单多股票策略
00:09
用刚学的知识把之前简单的策略例子改写成多股票版本
00:09
def initialize(context)
00:07
run_daily(period,time='every_bar') - 每日调用
00:11
把两个股票代码作为list存入g.security中
00:09
g.security = ['000001.XSHE','000002.XSHE']
00:07
def period(context) - 定义周期函数
00:11
72、每个股票买100股
00:07
for stk in g.security
00:16
遍历股票列表中的每个元素
00:18
写一个简单多股票策略-详细介绍
01:14
其实运用所学的知识已经可以进一步的加入很多东西了
00:10
比如在这个多股票的基础上在加入之前讲过的止损
00:11
不妨自己先尝试下再看下面的样例代码
00:17
def initialize(context) - 初始化
00:09
run_daily(period,time='every_bar') - 每日运行
00:15
把两个股票代码作为 list 存入 g.security 中
00:08
g.security = ['000001.XSHE','000002.XSHE'] - 两只股票
00:08
def period(context) - 周期函数
00:08
for stk in g.security - 遍历股票
00:09
order(stk,100) - 下单买入股票
00:13
获得股票持仓成本
00:07
cost=context.portfolio.positions[stk].avg_cost - 获取持仓成本
00:16
获得股票现价
00:10
price=context.portfolio.positions[stk].price
00:08
计算收益率
00:06
ret=price 除以 cost-1
00:10
如果收益率小于-0.01,即亏损达到 1% 则卖出 股票
00:12
幅度 可以自己调,一般 10%
00:07
if ret 小于 -0.01
00:09
order_target(stk,0)
00:23
print('触发止损')
00:07
自测与自学 - 最后一节
00:07
实践本文中介绍的代码
00:18
用for语句生成一个100项的平方数数列的list,即[1,4,9,16,...,10000]
00:13
用for语句生成一个100项的平方数数列的list
00:17
1+4+9+16+...+10000的结果
00:07
range(1,101)
00:10
两种方式生成平方数
00:17
用for语句计算100项的平方数数列的和
00:09
以下代码输出结果是
00:09
len之前提到过,不记得的直接百度下
00:13
a = [4,2,1,9,6,5,3,8,7]
00:13
for i in range(len(a))
00:19
for j in range(i+1,len(a))
00:14
if a[j] 大于 a[i]
00:12
三条语句实现数据交换
00:12
循环完成后输出 print(a) 列表数据
00:07
获取典型常用数据
00:17
获取典型常用数据是第一步操作
00:31
聚宽数据
00:09
获取指数成分股
00:22
获取股票行情数据
00:08
获取股票财务数据
00:08
自测与自学
00:10
相关教程
00:14
聚宽新手指南-获取数据教程
00:15
数据常见疑问汇总
00:10
数据获取问题快问快答
00:10
【集合贴】数据相关
00:10
【API解析】有关数据获取方法
00:10
【API解析】get_bars 定义和逻辑
00:09
JQData安装的问题
00:08
常用数据获取及计算系列
00:08
外部数据获取及分享
00:09
在聚宽数据这个页面可以看到聚宽平台集成好的各大类数据
00:28
聚宽提供的数据量极其丰富
00:26
但实际上可能有些数据要在API文档里才比较容易能找到,比如龙虎榜数据
00:15
ctrl+f进行网页搜索可以快速搜索需要的数据
00:14
ctrl+f进行网页搜索
00:28
接下来会介绍几种常用数据的取用方法,这些取用方法比较典型
00:11
掌握后能覆盖基本的数据需求以及较容易的学会使用其他数据
00:13
获取指数成分股
00:08
确定选股范围是第一步
00:26
为了衡量股市中某一大类股票整体的涨跌情况
00:23
而这些股票则叫做该指数的成分股,一般指数的成分股选取会变动
00:18
比如上证指数是用所有上交所的股票编制而成,可以衡量上交所股票整体的涨跌情况
00:16
有的股票退市了也就会被剔除成分股
00:12
比较常见的指数有上证指数、深证综指、创业板指、沪深300指数、中证500指数、上证50指数等
00:17
可以在数据-指数数据-指数列表中找到聚宽支持的指数及其指数代码
00:13
同样要善用ctrl+f进行搜索
00:08
查看聚宽指数列表
00:22
获取指数成分股需要用到的API为get_index_stocks
00:11
get_index_stocks - 获取指数成份股
00:24
get_index_stocks(index_symbol, date=None)
00:13
获取一个指数给定日期在平台可交易的成分股列表
00:15
index_symbol:指数代码
00:09
date:查询日期, 一个字符串(格式类似'2015-10-15')
00:11
可以是None,使用默认日期. 这个默认日期在回测和研究模块上有点差别
00:14
回测模块:默认值会随着回测日期变化而变化, 等于context.current_dt
00:13
研究模块:默认是今天
00:08
返回股票代码的list
00:09
获取所有沪深300的股票
00:08
stocks = get_index_stocks('000300.XSHG')
00:14
log.info(stocks)
00:11
获取20180301时,上证50指数(000016.XSHG)成分股
00:14
t=get_index_stocks('000016.XSHG','2018-03-01')
00:18
print(t[0])
00:13
print(t) 输出整个列表的数据
00:06
股票代码在list中被打印出来前面会带有的u代表是对字符串进行unicode编码
00:13
只是显示效果,单独打印t[0]时就没有u
00:10
获取股票行情数据
00:07
此处的股票行情数据指SecurityUnitData里面的所有基本属性
00:10
close:时间段结束时价格
00:06
low:最低价
00:08
high:最高价
00:05
volume:成交的股票数量
00:05
money:成交的金额
00:06
factor:前复权因子
00:06
avg:这段时间的平均价
00:06
pre_close:前一个单位时间结束时的价格
00:07
paused:这只股票是否停牌,是则为1,否则为0
00:10
history 获取历史数据的 API
00:07
打开文档查看 history 的帮助文件
00:23
获取历史数据,可查询多个标的单个数据字段,返回数据格式为 DataFrame 或 Dict(字典)
00:18
history(count, unit='1d', field='avg', security_list=None, df=True, skip_paus
00:13
回测环境 模拟专用API,可以在投资研究中获取
00:13
停牌数据如何处理
00:24
如想跳过, 请使用 skip_paused=True 参数
00:14
如想跳过 , 请使用 skip_paused=True 参数
00:11
count :数量, 返回的结果集的行数
00:10
unit:单位时间长度, 几天或者几分钟
00:16
现在支持'Xd','Xm', X是一个正整数, 分别表示X天和X分钟(不论是按天还是按分钟回测都能拿到这两种单位的数据)
00:18
field:要获取的数据类型, 支持SecurityUnitData里面的所有基本属性,
00:17
security_list:要获取数据的股票列表
00:14
None 表示查询 context.universe 中所有股票的数据
00:13
context.universe 需要使用set_universe进行设定
00:10
set_universe(['000001.XSHE', '600000.XSHG'])
00:17
df:若是True, 返回[pandas.DataFrame]
00:19
fq:复权选项(对股票 基金的价格字段、成交量字段及factor字段生效)
00:22
h = history(5, security_list=['000001.XSHE', '000002.XSHE'])
00:15
h = history(5, security_list=['000001.XSHE', '000002.XSHE']) 函数调用解析
00:28
000001(平安银行)过去5天的每天的平均价
00:12
一个pd.Series对象, index是datatime
00:08
h['000001.XSHE']
00:12
000001(平安银行)昨天(数组最后一项)的平均价
00:10
h['000001.XSHE'][-1]
00:18
所有股票在昨天的平均价
00:12
一个pd.Series对象, index是股票代号
00:09
h.iloc[-1]
00:12
000001(平安银行)昨天(数组最后一项)的平均价
00:10
默认读取的是平均价信息
00:29
unit 参数控制时间周期
00:25
h.iloc[-1]['000001.XSHE']
00:21
取得每一列的平均值
00:10
h.mean()
00:07
set_universe 之后可以,调用 history 可以不用指定 security_list
00:15
设定universe
00:07
设定 universe
00:10
set_universe(['000001.XSHE'])
00:08
获取universe中股票的过去5天(不包含今天)的每天的平均价
00:10
history(5)
00:06
获取universe中股票的过去5分钟(不包含当前分钟)的每分钟的平均价
00:10
history(5, '1m')
00:09
获取 universe 中股票的过去 5 分钟(不包含当前分钟)的每分钟的平均价
00:10
history(5, '1m', 'price')
00:07
获取universe中股票的过去5分钟(不包含当前分钟)的每分钟的交易额
00:10
history(5, '1m', 'volume')
00:12
获取平安银行的过去5分钟(不包含当前分钟)的每分钟的平均价
00:12
history(5, '1m', 'price', ['000001.XSHE'])
00:10
h = history(5, security_list=['000001.XSHE', '000002.XSHE'], df=False)
00:22
h 是一个 dict,获取 h 中 000001.XSHE 对应的值
00:14
h['000001.XSHE']
00:07
返回000001.XSHE第五天的数据
00:08
h['000001.XSHE'][0]
00:17
返回000001.XSHE最新一日的数据
00:09
h['000001.XSHE'][-1]
00:07
对返回的五日数据求和
00:07
h['000001.XSHE'].sum()
00:07
对返回的五日数据求平均
00:06
h['000001.XSHE'].mean()
00:06
因为h本身是一个dict, 下列panda.DataFrame的特性将不可用
00:12
h.illoc[-1] 无法使用
00:09
h.sum() 不可使用
00:15
可以同时获得多个股票的数据,但只能获得相同的一个数据字段
00:14
多股票,单数据
00:06
如获得 平安银行,建设银行,农业银行这3只股票,前3天的交易额
00:09
默认不跳过不交易日期,由skip_paused参数控制
00:10
默认使用之前的股票数据
00:16
df参数控制返回结果的数据类型,默认是True代表dataframe类型
00:11
dataframe类型
00:10
True代表dataframe类型
00:21
fq参数控制复权方式,往往可以不管它直接用默认的前复权即可
00:13
复权的含义不难,解释略麻烦,建议自行搜索学习下
00:17
接下来介绍的API还会有skip_paused、df、fq参数,就不再提了
00:15
这三个参数新手可以以后慢慢了解,现在不管也没关系
00:14
如果不想用dataframe,会把df参数调成False(或0)就行
00:11
例子 df=True,返回dataframe类型
00:07
w=history(count=3, field='money', security_list=['000001.XSHE','000002.XSHE']
00:13
print(w)
00:05
查看返回的股票信息
00:22
例子 df=False,返回dict类型
00:08
w = history( count=3, field='money', security_list=['000001.XSHE','000002.XSHE']
00:13
print(w) w 是字典类型的数据
00:09
attribute_history
00:20
attribute_history 打开帮助文档链接
00:30
通过查找功能,找到 attribute_history 帮助信息
00:54
获取历史数据,可查询单个标的多个数据字段
00:15
返回数据格式为 DataFrame 或 Dict(字典)
00:10
我们发现这个函数有 7 个参数
00:17
第一个参数是股票代码
00:10
参数简单介绍
00:21
回测环境 模拟专用API
00:07
查看某一支股票的历史数据, 可以选这只股票的多个属性
00:10
默认跳过停牌日期
00:08
当取天数据时, 不包括当天的, 即使是在收盘后
00:10
分钟数据不包括当前分钟的数据,没有未来
00:08
选这只股票的多个属性
00:26
security:股票代码
00:08
count:数量, 返回的结果集的行数
00:08
unit:单位时间长度, 几天或者几分钟
00:11
现在支持 'Xd', 'Xm', X是一个正整数, 分别表示X天和X分钟
00:13
不论是按天还是按分钟回测都能拿到这两种单位的数据
00:11
注意,当 X 大于 1 时, field 只支持 ['open', 'close', 'high', 'low', 'volume', 'money']
00:13
fields:股票属性的list
00:16
支持SecurityUnitData里面的所有基本属性
00:11
['open', ' close', 'low', 'high', 'volume', 'money', 'factor', 'high_limit','
00:09
skip_paused:是否跳过不交易日期(包括停牌, 未上市或者退市后的日期)
00:13
df:若是True, 返回[pandas.DataFrame], 否则返回一个dict,
00:13
fq:复权选项
00:14
对股票 基金的价格字段、成交量字段及factor字段生效
00:10
几种复权参数
00:11
df=True [pandas.DataFrame]对象
00:13
行索引是[datetime.datetime]对象
00:23
列索引是属性名字
00:18
如果当前时间是2015-01-07
00:16
attribute_history('000300.XSHG', 2)
00:13
检索到的历史数据
00:18
2015年年初是 5000 亿的成交量
00:21
df=False : dict, key是fields中的属性, value是一个numpy数组[numpy.ndarray]
00:15
df 参数不同,返回的数据类型不同
00:15
key是fields中的属性, value是一个numpy数组[numpy.ndarray]
00:24
键是数据名称,值是一个数组
00:29
attribute_history 示例代码
00:09
stock = '000001.XSHE'
00:13
h = attribute_history(stock, 5, '1d', ('open','close', 'volume', 'factor'))
00:17
attribute_history
00:09
取得000001(平安银行)过去5天的每天的开盘价, 收盘价, 交易量, 复权因子
00:12
复权因子
00:18
不管df等于True还是False, 下列用法都是可以的
00:10
无论数据框还是字典类型都可以用
00:10
过去5天的每天的开盘价
00:16
一个pd.Series对象
00:11
index是datatime
00:07
h['open']
00:07
昨天的收盘价
00:08
h['close'][-1]
00:08
h['open'].mean()
00:16
下面的pandas.DataFrame的特性, df=False时将不可用
00:12
行的索引可以是整数, 也可以是日期的各种形式
00:10
h['open']['2015-01-05']
00:15
h['open'][datetime.date(2015, 1, 5)]
00:15
h['open'][datetime.datetime(2015, 1, 5)]
00:14
按行取数据
00:07
昨天的开盘价和收盘价
00:07
一个 pd.Series 对象
00:11
index是字符串:'open' 'close'
00:11
h.iloc[-1]
00:13
昨天的开盘价
00:06
h.iloc[-1]['open']
00:08
h.loc['2015-01-05']['open']
00:16
高级运算
00:11
只保留交易量 大于 1000000股的行
00:11
h = h[h['volume'] 大于 1000000]
00:14
h['open'] = h['open'] 除以 h['factor']
00:15
让open列都跟factor列相除, 把价格都转化成原始价格
00:11
把价格都转化成原始价格
00:20
h['close'] = h['close'] 除以 h['factor']
00:13
dataframe 是一个强大的数据结构
00:23
回到前面的数据文档中
00:25
只能获取单独一个股票的数据,但可以同时获得多个字段的数据
00:12
如获得 平安银行这一只股票,前3天的交易额,交易量,最高价,最低价等
00:10
默认跳过不交易日期,由skip_paused参数控制
00:10
w=attribute_history(security='000001.XSHE',count=3, fields=['money','high'])
00:14
证券代码是第一个参数
00:11
fields=['money','high']
00:10
API帮助文档中使用的是列表数据
00:17
print(w) 输出获得的股票数据
00:14
输出的结果
00:13
Pandas.DataFrame
00:10
返回的财务数据是DataFrame类型
00:10
这是一种二维表结构的功能强大的数据类型
00:14
常用于数据处理与分析
00:11
我们以刚刚的例子介绍下dataframe最常用的获取数据的方法
00:11
一个dataframe类型的例子
00:06
w=attribute_history(security='000001.XSHE',count=3, fields=['money','high','o
00:19
数据内容分析
00:23
print(w) 输出 w 数据的内容
00:07
获得了需要的三组数据
00:13
print(w)
00:09
包括index(行标签、索引)、columns(列标签)、values(值)三个部分
00:15
包括index( 行标签、索引 )、columns 列标签 )、values( 值 )三个部分
00:09
索引可以是整数,也可以是日期数据
00:18
列标签可以是整数或者字符串数据
00:16
values(值)可以是浮点类型数据
00:10
获取 index
00:10
print(w.index) 输出行标签
00:17
结果如下,是datatimeindex类型
00:12
很特殊,不常用,建议新手回避
00:09
DatetimeIndex(['2016-08-30', '2016-08-31', '2016-09-01'], dtype='datetime64[n
00:25
获取columns
00:08
print(w.columns) 输出列标签
00:08
结果如下,是index类型
00:09
Index([u'money', u'high', u'open'], dtype='object')
00:11
可以用list()将其转成list
00:09
print(list(w.columns))
00:07
['money', 'high', 'open']
00:08
选择dataframe某几列
00:41
按标签获取某几列.loc[冒号,[列标签名,...]]
00:25
print(w.loc[冒号,['open','high']])
00:21
展示列数据结果
00:16
按位置获取某几列.iloc[冒号,[位置,...]]
00:21
位置的含义是第几个,从0开始
00:17
print(w.iloc[冒号,[0,2]])
00:13
展示结果,按位置获取某几列数据
00:14
冒号,可以代表全部,iloc或loc都可以
00:20
print(w.iloc[冒号,冒号])
00:10
w.iloc[] i 是 index 的意思
00:19
全部选择数据后的结果
00:19
选择后的数据依然是dataframe类型,用.values可以获取数据
00:13
print(w.iloc[冒号,[0,2]].values)
00:14
结果如下,是个list
00:25
选择dataframe某几行
00:23
按标签获取某几行.loc[[行标签名,...],冒号]
00:26
print(w.loc[['2016-08-29','2016-08-31'],冒号])
00:24
此处这样写会报错,原因是当前的行标签类型是DatetimeIndex,不是字符串
00:22
而时间类型的数据处理往往非常麻烦
00:21
按位置获取某几行.iloc[[位置,...],冒号]
00:15
print(w.iloc[[0,2],冒号])
00:20
读取指定行所有列的数据
00:14
只有冒号,代表所有行的信息
00:13
print(w.iloc[冒号,冒号])
00:14
所有的行和列数据都被读取出来
00:10
dataframe 行列转置
00:09
行列转置的意思就是按对角线行列反转,方法是.T
00:12
print(w.T)
00:08
分析转置后的结果
00:22
回过头来解释下pandas的含义
00:13
pandas是一个模块或者叫库
00:17
pandas主要功能是数据处理与分析
00:17
随着深入的学习,你会遇到其他的功能模块
00:17
但pandas聚宽系统已经自动加载了
00:12
DataFrame 数据结构总结
00:20
读取行列数据的两种方式
00:46
获取股票财务数据
00:15
获取股票财务数据的意义
00:24
股票财务数据这里是指发股票的公司发布的财务报表中的数据
00:14
可以在聚宽数据-股票财务数据查看数据详情
00:12
打开链接查看股票财务数据
00:47
财务报表简称财报,是用来向股东汇报企业经营情况的
00:12
上市公司必须按季度公布财报
00:12
一年有四季所以财报依发布次序一季报、半年报(也称中报)、三季报、年报
00:16
而具体的发布日期在一定期限内即可并非固定
00:17
年报要求年度结束四个月内披露
00:12
半年报是上半年结束后两个月内
00:10
一季报与三季报是季度结束后一个月内
00:10
特别的是像总市值、市盈率这种跟股价挂钩的市值数据是每天更新的
00:12
获取股票财务数据需要用到的API为get_fundamentals
00:09
这个语句的用法较为复杂
00:12
这个语句的 用法较为 复杂
00:24
get_fundamentals - 查询财务数据
00:08
get_fundamentals(query_object, date=None, statDate=None)
00:13
查询财务数据,详细的数据字段描述请点击财务数据文档查看
00:10
财务数据字段介绍-链接有错
00:49
date和statDate参数只能传入一个
00:18
date和statDate 参数只能 传入一个
00:20
对市值表来说, 最近一天, 对其他表来说, 最近一个季度)的数据
00:15
我们会查找上市公司在这个日期之前(包括此日期)发布的数据, 不会有未来函数
00:14
传入statDate时, 查询 statDate 指定的季度或者年份的财务数据.
00:13
两个参数之间的区别
00:50
由于公司发布财报不及时, 一般是看不到当季度或年份的财务报表的
00:13
回测中使用这个数据可能会有未来函数, 请注意规避
00:09
由于估值表每天更新, 当按季度或者年份查询时, 返回季度或者年份最后一天的数据
00:16
由于“资产负债数据”这个表是存量性质的, 查询年度数据是返回第四季度的数据
00:15
银行业、券商、保险专项数据只有年报数据,需传入statDate参数
00:14
当传入 date 参数 或 statDate 传入季度时返回空,请自行避免未来函数
00:17
当 date 和 statDate 都不传入时, 相当于使用 date 参数,
00:09
query_object:一个sqlalchemy.orm.query.Query对象,
00:20
date:查询日期
00:14
一个字符串(格式类似'2015-10-15')
00:16
[datetime.date] [datetime.datetime]对象
00:12
可以是None, 使用默认日期
00:10
这个默认日期在回测和研究模块上有点差别
00:10
这个默认日期在 回测和研究模块上 有点差别
00:17
回测日期会不断变化
00:22
等于 context.current_dt 的前一天
00:20
研究模块:使用平台财务数据的最新日期, 一般是昨天
00:12
如果传入的 date 不是交易日, 则使用这个日期之前的最近的一个交易日
00:12
两种日期的区别
00:32
statDate: 财报统计的季度或者年份, 一个字符串, 有两种格式
00:15
季度:格式是:年 + 'q' + 季度序号, 例如:'2015q1', '2013q4'
00:14
年份:格式就是年份的数字, 例如: '2015', '2016'
00:12
返回一个 [pandas.DataFrame]
00:12
每一行对应数据库返回的每一行(可能是几个表的联合查询结果的一行)
00:16
列索引是你查询的所有字段
00:08
为了防止返回数据量过大, 我们每次最多返回10000行
00:10
当相关股票上市前、退市后,财务数据返回各字段为空
00:09
开始讲案例分析了
00:16
查询'000001.XSHE'的所有市值数据, 时间是2015-10-15
00:14
给定股票代码获取查询对象 q
00:32
查询 '000001.XSHE' 的所有市值数据, 时间是 2015-10-15
00:15
打印出总市值
00:07
log.info(df['market_cap'][0])
00:24
对股票排序时经常用到总市值数据
00:32
将代码拷贝到研究环境中
00:16
运行代码块
00:40
print() 输出总市值
00:17
可以修改代码得到我们想要的数据
00:15
得到最新的市值数据
00:27
查看小市值股票的总市值
00:30
000669.XSHE 的总市值
00:22
000669.XSHE 十年前的市值是87亿
00:25
2010年年初是 9 亿的市值
00:20
002057.XSHE 查看总市值
00:10
002057.XSHE 2010年时也是 9 亿多的市值
00:09
600455.XSHG 当年的市值
00:18
Ctrl + 回车,也可以运行代码
00:46
提问:如果我们想查看一只股票早期和当前的数据该怎么操作?
00:14
同时查询十三年前和当前的数据
00:58
000711.XSHE 十三年前后的市值
00:29
df 数据框的所有数据是什么样的
00:28
用print()直接输出 df2 的全部信息
00:41
df2 包含了多种重要的财务数据
00:32
运行代码块的两种方式
00:19
Ctrl + X 剪切代码
00:12
Ctrl + V 粘贴代码
00:10
Ctrl + Z 回退操作
00:15
Ctrl + Y,向前滚动,撤销回退操作
00:20
Ctrl + S 保存代码
00:42
关闭浏览器之后再次打开,代码依然存在
00:22
获取多只股票在某一日期的市值, 利润
00:13
小飞侠 2023 年以来的表现
00:55
小飞侠 2023 年的表现结果
00:21
每周交易5只股票
00:19
现在这些股票的市值是多少
00:13
300478.XSHE 市值
00:45
300478.XSHE 市值增长比较猛
00:15
603709.XSHG 中原家居
00:09
603709.XSHG 市值变化
00:18
600768.XSHG 市值变化
00:21
603729.XSHG 市值变化
00:21
300899.XSHE 市值上涨猛烈
00:25
002816.XSHE 市值变化
00:23
300321.XSHE 市值有明显上涨
00:33
603389.XSHG 略微下跌一些
00:22
年初看到的一些股票,目前依然存在
00:16
市值增长时间较长。周线、月线模型都可以使用
00:50
十几年前后最小市值公司的市值量
00:19
获取多只股票在某一个日期的市值,利润
00:19
查询指定日期的市值和利润数据
00:27
里面有一个 query() 函数
00:20
将代码拷贝到运行环境中
00:48
拷贝成功之后运行代码,但没有看到结果
00:11
加入 print() 函数输出数据框
00:24
修改代码提高可读性
00:57
函数参数尽量简单
00:26
括号内部不要嵌套太多层,搞得太复杂
00:14
回到前一段代码查询 valuation 相关数据
01:13
valuation 是估值的意思
00:25
valuation, income
00:18
这里不能使用 in 操作, 要使用in_()函数
00:20
valuation.code == '603389.XSHG'
00:17
valuation.code.in_(['000001.XSHE', '600000.XSHG'])
00:29
运行代码块输出结果
00:19
共有 2 行 57 列数据
00:13
两行对应两支股票
00:12
共有 57 个与估值、收入相关的数据
00:11
同估值、收入相关的财务数据有57种之多
00:34
重启计算机之后,程序环境依然存在
00:32
valuation.code.in_(['000001.XSHE' , '600000.XSHG'])
01:24
df = get_fundamentals(q, date='2015-10-15')
00:17
print(df)
00:13
时间设置到 20230825 已经可以读取
01:05
填写未来日期,数据不存在
00:23
获取多只股票在某一日期的市值, 利润 - 总结
00:24
选出所有的总市值大于1000亿元, 市盈率小于10, 营业总收入大于200亿元的股票
00:19
这个要求同我们实战中的要求比较相似
00:24
将代码拷贝到 代码框 中保存
00:24
修改整理代码
00:28
代码分成两个部分,获得查询对象,获得基本数据
00:12
valuation.code, valuation.market_cap, valuation.pe_ratio, income.total_opera
00:24
valuation.market_cap 大于 1000
00:25
valuation.market_cap 市值数据。默认单位是 亿
00:11
valuation.pe_ratio 小于 10
00:09
valuation.pe_ratio 市盈率
00:10
income.total_operating_revenue 大于 2e10
00:17
income.total_operating_revenue 营业收入
00:25
2e10 科学计数法 - 200亿
00:11
可以用 点 运算符获得更精确的财务数据
00:43
按市值降序排列
00:09
valuation.market_cap.desc()
00:09
valuation.market 等都是对象
00:12
100。最多返回100只股票
00:10
df = get_fundamentals(q, date='2015-10-15') - 有哪些股票满足条件
00:16
运行代码没有输入结果
00:32
输出满足条件的股票
00:31
2015年时有 18 只股票满足条件
00:31
2023年时有 35 只股票满足条件
00:25
千亿市值的公司增加了不少
00:21
索引从 0 开始,实际上有 36 只股票
00:19
准备对代码进行修改
00:36
添加新的单元格
00:19
删除无用信息,只列出股票代码
00:35
运行代码输出股票代码信息
00:23
共有 5048 只股票
00:26
九号公司[689009] 确实存在
00:48
是一家 2020 年上市的公司
00:16
filter 子句,过滤条件
00:37
使用具体的财务数据做过滤条件
00:29
order_by 按照什么条件做排序
00:15
limit()子句。最多返回多少只股票
00:24
使用 or_ 函数:查询总市值大于1000亿元 或者 市盈率小于10的股票
00:29
from sqlalchemy.sql.expression import or_
00:11
or_() 内部条件是或的关系
00:22
代码拷贝进入 代码框 中
00:14
对代码进行处理,并运行
01:15
函数的返回值本身就是数据框,可以直接显示
00:23
1437 只股票满足其中一个条件
00:17
注释掉不需要的条件,只保留一个
00:21
市值上千亿的股票有 125 只
00:28
加入查询条件
00:29
有 125 只股票市值上千亿
00:42
加入 order_by() 子句对股票做排序
00:38
降序排列股票代码成功
00:22
600519 市值第一名是 茅台
00:24
中国移动 市值第二名的股票
00:13
601398 市值第三名公司
00:14
601939 建设银行 市值第四名公司
00:06
查询平安银行2014年四个季度的季报, 放到数组中
00:15
平安银行 季报查询 - 代码分析
00:47
生成新的代码框,放入代码
00:23
整体结构分成两个部分
00:32
print(rets) 输出查询结果
00:13
成功输出季报数据
00:27
2022 年的季报数据,全部得到
00:28
income.statDate
00:21
income.code
00:09
valuation 和 income 都有 code 属性
00:19
income.basic_eps
00:09
balance.cash_equivalents
00:13
cash_flow.goods_sale_and_service_render_cash
00:14
income.code == '000001.XSHE'
00:08
get_fundamentals() 获取股票信息
00:34
statDate='2022q'+str(i)) for i in range(1, 5)
00:42
get_fundamentals(q, statDate='2022q'+str(i))
00:32
for i in range(1, 5) 获得 1-4 的 4 个整数
00:11
整体上是列表数据,数据宽度不够
00:31
查询平安银行2014年的年报
00:10
整体看比较简单。获取整个年报数据
00:18
生成新的代码块,拷贝进入
00:20
主要功能模块分成两个部分
00:33
income.statDate
00:10
income.code
00:07
income.basic_eps
00:06
cash_flow.goods_sale_and_service_render_cash
00:07
income.code == '000001.XSHE'
00:11
get_fundamentals(q, statDate='2014')
00:12
print(ret) 输出年报结果数据
00:17
成功输出年报数据
00:21
所有相关案例都介绍了一遍
00:14
获取指定日期的市值数据
00:43
获取多只股票的市值、收入数据
00:24
同估值、收入相关的数据有50多列
00:13
综合应用案例,同时满足 3 个财务指标才行
00:56
导入函数实现 或操作
00:37
查询平安银行季报数据使用 for 子句
00:20
获得 平安银行 年报数据
00:14
回到之前的 获取典型常用数据 页面
00:25
未来函数是什么?
00:23
我们做回测去验证策略时,其实是用历史数据去模拟当时的市场从而得知策略在历史上表现如何
00:17
但是如果策略利用了历史当时无法得到的信息,往往就会造成回测结果极大失真
00:12
这时我们会说这个策略有未来函数
00:07
未来函数的解释
00:12
未来函数举例说明
00:32
举一个典型的有未来函数的策略
00:09
每天买明天涨停的股票
00:08
事实上你是不能知道明天哪个股票涨停的,所以现实中是不能实现的
00:12
但是我们做回测是用的历史数据
00:21
所以我们其实是能实现用2012年的数据对这个买明日涨停股的策略做回测的
00:16
毕竟现在已经过了2012年,2012年每天哪个股票会涨都是已经知道的了
00:12
毕竟现在已经过了2012年
00:14
这样的有未来函数的回测结果肯定是没价值的
00:08
因为现实中不能实现,尽管回测结果有时特别喜人
00:08
date与statDate的问题
00:08
传入date时,查询指定日期date 所能看到的最近的数据
00:12
回测时不填则默认值会为回测日期的前一天
00:17
模拟现实,避免未来函数
00:06
date参数的要求为格式类似'2015-01-15'的字符串
00:11
datetime类型的时间数据也是可以的,不过略复杂不展开
00:10
传入statDate时, 查询 statDate 指定的季度或者年份的财务数据
00:18
季度数据 - 例如'2015q1'、 '2013q4'的字符串
00:09
年份数据是 如'2015'、'2013'的字符串
00:10
这种用法需要注意的地方比较多,请注意文档中提到的问题
00:09
date和statDate参数只能同时传入其中一个
00:09
当 date 和 statDate 都不传入时,相当于使用 date 参数
00:12
date 的默认值会为回测日期的前一天
00:08
文档中提到的回测模块就是指我们编写策略的功能模块
00:13
研究模块我们之后会介绍
00:07
因此,为方便在回测中使用,date 和 statDate 都不传入
00:11
回测模块介绍
00:20
研究模块介绍
00:12
单季度与报告期
00:10
之前讲过,财务数据按季度发布
00:08
一般财经网站上提供的财务数据是默认按报告期提供的
00:09
即每季度统计的周期跨度
00:21
第一季度、前两个季度、前三个季度、前四个季度(全年)
00:14
而聚宽考虑到量化分析,提供的财务数据全是单季度的
00:13
即每季度统计的 周期跨度
00:13
分别为第一季度、第二季度、第三季度、第四季度
00:07
一般财务数据和聚宽规则的区别
00:17
当你发现聚宽财务数据比财经网站的财务数据差的很多
00:12
很可能是单季度与报告期的差别造成的
00:16
query_object参数以及快速上手模板
00:07
query_object参数是要求传入一个Query对象用于描述所需的数据
00:11
这个东西展开讲相当于一门小的编程语言,麻烦而不必要
00:13
这里提供一个快速上手的模板用来产生query_object参数
00:10
多数情况下往里套就可以了
00:09
例子如下,建议对比文档里的例子看看
00:09
快速上手模板
00:06
query(表.字段).filter(筛选条件).order_by(排序方法).limit(数量上限)
00:15
比较长的话可以分行写
00:07
query(表.字段)
00:21
.filter(筛选条件)
00:35
.order_by(排序方法)
00:13
.limit(数量上限)
00:06
.limit (数量上限)
00:18
小飞侠算法 只选择前10只股票
00:16
表和字段可以在财务数据文档查看
00:07
表和字段可以写多个用逗号隔开
00:08
只写表名不写字段代表选择该表的所有字段
00:09
比如前期介绍的 valuation,income 等都是只选择表
00:23
注意看含义与单位
00:07
比如 股票市值 的单位就是亿
00:14
如何打开 财务数据 帮助文档
01:15
valuation 表详细介绍
00:54
展示几个重要的财务数据表
00:58
介绍几个重要的表
00:39
财务数据表也是重要的学习资源
00:50
继续看后续的筛选条件介绍
00:18
筛选条件跟讲if判断时用的条件是一样的
00:10
多个条件用逗号隔开代表与(and)的关系
00:08
前面也分析到了。本身是与的关系,同时满足条件
00:22
特别的是要用复杂的与或非的逻辑关系时
00:11
在此处and、or、not是不能用的’
00:10
要对应的改用&(与)、竖线(或)、~(非)
00:10
可能面临比较复杂的筛选逻辑
00:22
虎头铡 算法要求同时满足条件,则使用 与 来实现
00:20
排序的写法比较简单
00:06
就是要作为排序标准的字段后面加.desc()即由大到小
00:12
或.asc()即由小到大
00:06
数量上限可以自己设置
00:08
代表最多返回的数据条数
00:08
最多返回的数据条数
00:22
不过系统强制限制每次最多返回10000条
00:09
就算你自己在此处限制比10000多也没用
00:07
10000 条数据还是够用了
00:12
获取 市值表.股票代码,资产负债表.未分配利润
00:16
筛选 市值大于100 并且 市盈率小于10
00:13
排序 按市值从大到小排
00:06
数量 上限10条数据
00:06
查询 和 获取数据两大部分
00:15
放大页面方便查看代码
00:10
拷贝代码到 研究环境 中
00:38
对代码进行整理
00:37
运行代码初步查看结果
00:46
valuation.code,balance.retained_profit
00:35
filter(valuation.market_cap大于100,valuation.pe_ratio 小于 10)
00:23
order_by(valuation.market_cap.desc()
00:17
.limit(10)
00:07
得到的股票数量较少,因为有 limit() 限制
00:22
截止目前有 326 只股票满足条件
00:26
w=get_fundamentals(q) 获取财务数据
00:16
print(w) 输出股票结果
00:10
查询结果直接输出出来了
00:21
本地获取聚宽数据-JQData
00:08
申请地址
00:08
安装方法
00:07
from jqdatasdk import 星
00:09
import jqdatasdk as jq
00:08
df = jq.get_price('000001.XSHE')
00:09
print(df)
00:07
JQData使用方法
00:08
JQData提供哪些数据及数据更新频率
00:07
JQData,jqdatasdk和jqdata的关系
00:08
自学与自测
00:16
实践下文中例子 - 研究环境
00:06
浏览聚宽数据中包括的数据,试着取用下
00:10
建议大致浏览下pandas.dataframe 专题使用指南,学有余力可以细致学习下
00:12
获取任一股票最近5个交易日最高价的平均价
00:12
生成一个list,list中为上证指数成分股中流通市值最大的5个股票的股票代码
00:11
在本地环境安装使用jqdatasdk,获取当天的实时行情数据
00:09
pandas.dataframe 专题使用指南
00:25
pandas.dataframe 需要了解
00:23
选取数据
00:08
转置、排序
00:10
数据框排序与df排序不同
00:18
增删行或列
00:05
连接多个dataframe
00:06
组建dataframe
00:06
缺失值处理
00:05
常用统计函数
00:06
panel类型数据分解成dataframe
00:08
研究内存取dataframe
00:07
pandas.dataframe 使用指南
00:24
先深度学习了解 df 这种结构
00:13
dataframe 专题使用指南。使用的地方还有很多
00:25
选取数据 - 从大的 df 中获取一小部分
00:31
选取数据 - 举例说明
00:31
选取行名、列名、值
00:09
以标签(行、列的名字)为索引选择数据—— x.loc[行标签,列标签]
00:12
以标签(行、列的名字) 为索引选择数据 —— x.loc[行标签,列标签]
00:11
根据名称选取数据
00:20
位置(第几行、第几列)为索引选择数据 - x.iloc[行位置,列位置]
00:25
x.iloc[] 使用的方法名称不同
00:13
同时根据标签和位置选择数据——x.ix[行,列]
00:15
选择连续的多行多列——切片
00:05
选择不连续的某几行或某几列
00:08
连续的多行多列——切片
00:07
不连续的某几行或某几列。用逗号分割开
00:09
简便地获取行或列
00:10
如何返回一个dataframe的单列或单行
00:09
返回一个dataframe的单列或单行
00:24
按条件选取数据——df[逻辑条件]
00:07
选取数据——df[逻辑条件]
00:24
df 同 Excel 表格形式非常相似
00:20
dataframe 结构简单,内容丰富。pandas 提供了丰富的读取数据功能
00:43
转置、排序 - 介绍
00:09
转置 df.T
00:08
什么是转置
00:39
按行名或列名排序——df.sort_index
00:11
行名或列名排序——df.sort_index
00:37
按值排序——df.sort_index
00:09
值排序 - df.sort_index
00:14
增删行或列
00:05
增加一列
00:05
增加一行
00:07
增加一列 - 介绍
00:22
增加一行 - 介绍
00:18
删除行或列——df.drop
00:08
删除行或列 - 介绍
00:21
连接多个dataframe - 介绍
00:06
查询财务数据时,有过连接操作
00:24
横向连接
00:06
纵向连接
00:09
按索引链接
00:06
横向连接 - 举例说明
00:13
纵向连接 - 举例说明
00:20
索引链接 - 举例说明
00:22
组建dataframe - 介绍
00:05
组建方法——pd.DataFrame
00:12
用字典型数据组建——pd.DataFrame
00:10
简便地获得聚宽数据中的时间索引
00:07
组建方法——pd.DataFrame - 介绍
00:04
字典型数据组建——pd.DataFrame
00:12
获得聚宽数据中的时间索引 - 介绍内容
00:41
缺失值处理 - 介绍
00:06
去掉缺失值——df.dropna
00:09
对缺失值进行填充——df.fillna
00:15
判断数据是否为缺失——df.isnull
00:07
NA 值产生的原因
00:34
NA 值可能引起计算错误,需要单独处理
00:16
去掉缺失值 - 直接删除使之不存在
00:08
对缺失值进行填充
00:11
判断数据是否为缺失
00:17
之前已经介绍了 df 的多种处理方式
00:23
后续还有三节详细介绍 df 的使用方法
00:26
常用统计函数
00:10
df 同 Excel 表格和数据库中的数据表很相似
00:19
技术指标的底层也是统计函数
00:34
describe 针对Series或个DataFrame列计算汇总统计
00:11
Series 是数据序列
00:15
DataFrame列
00:20
count 非na值的数量
00:09
非na值的数量
00:22
min、max 计算最小值和最大值
00:07
计算最小值和最大值
00:19
唐奇安系统基本原理
00:12
idxmin、idxmax 计算能够获取到最大值和最小值的索引值
00:13
最大值和最小值的索引值
00:18
获取到最大值和最小值的索引值
00:27
quantile 计算样本的分位数(0到1)
00:09
计算样本的分位数(0到1)
00:24
sum 值的总和
00:06
sum 值的总和 - 应用举例
00:19
mean 值的平均数
00:08
值的平均数
00:10
可用于计算,移动平均线
00:30
median 值的算术中位数(50%分位数)
00:11
值的算术中位数 (50%分位数)
00:29
mad 根据平均值计算平均绝对离差
00:09
根据平均值计算平均绝对离差
00:11
var 样本值的方差
00:07
样本值的方差
00:14
std 样本值的标准差
00:06
样本值的标准差
00:08
计算布林线指标就要用到 标准差
00:19
skew 样本值的偏度
00:09
样本值的偏度(三阶矩)
00:10
kurt 样本值的峰度
00:06
kurt 样本值的峰度(四阶矩)
00:09
聚宽的归因分析中有相关内容
00:20
cumsum 样本值的累计和
00:10
样本值的累计和
00:19
cummin,cummax 样本值的累计最大值和累计最小值
00:12
样本值的累计最大值和累计最小值
00:16
cumprod 样本值的累计积
00:10
样本值的累计积
00:08
diff 计算一阶差分
00:08
计算一阶差分 - 套利交易
00:28
pct_change 计算百分数变化
00:07
查看函数的详细信息
00:13
更多的函数
00:15
panel 类型数据分解成 dataframe
00:11
panel类型数据分解成dataframe方法
00:08
panel 类型数据分解成 dataframe 方法
00:16
更多panel操作指路
00:08
panel 操作指路
00:13
研究存取 dataframe
00:10
把dataframe存成csv文件——df.to_csv()
00:09
存成csv文件——df.to_csv()
00:17
csv文件 可以直接使用 Excel 打开
00:08
读取被存成csv文件的dataframe——pd.read_csv()
00:12
csv文件的dataframe——pd.read_csv()
00:18
【dataframe】选取数据
00:27
取用数据的时候有时候会取用dataframe的格式
00:10
本篇重点整理了相关的选取数据的内容,以便大家查阅和学习
00:09
本篇重点 整理了相关的 选取数据的内容,以便 大家查阅和学习
00:19
导入pandas模块
00:08
import pandas as pd
00:11
获得一个dataframe类型的数据样例
00:11
get_price() 获取股票一段时间的数据
00:15
打开 研究环境 准备运行代码
01:03
拷贝代码进入代码框做研究
00:14
get_price() 第一个参数是 股票代码
00:15
start_date='2016-02-01'
00:12
获得历史数据需要起始日期
00:17
end_date='2016-02-04'
00:08
end_date 数据的结束日期
00:12
frequency='daily'
00:08
frequency 是哪个级别的行情数据
00:11
fields=['open','close','high','low']
00:17
fields 需要获取哪些行情数据
00:15
fields 往往是需要同时获取多组数据
00:17
修改获取股票数据的代码
00:44
得到了 深天马 今年以来的数据
00:22
共有 160 行数据
00:16
为什么收盘价数据有时对不上
00:38
这里的收盘数据会实时发生改变
00:31
成功获取 深天马 的 OHLC 数据
00:21
OHLC 数据没有完全展示出来
00:22
参数较多,括号内换行
00:33
选择行名
00:08
获取行索引
00:33
拷贝进入代码框。获取行索引
00:07
运行后获得 行索引
00:52
并不是字符串列表,而是 DatetimeIndex() 数据
00:11
选择列名
00:07
df.columns
00:06
df.index
00:06
行列名称都是 df 的属性
00:10
拷贝 df.columns 到代码框中
00:39
输出列名字符串成功
00:21
即使保留数据输出,也还是只有最后一段
00:20
可能只是展示最后一段输出
00:13
最后放置一个 print('加百力')
00:18
只输出最后一段的内容
00:24
估计是为了减少输出总量
00:28
获取数据值
00:07
df.values
00:17
拷贝代码 到数据框 - df.values
00:18
获取股票的 OHLC 列表的列表
00:26
获取股票数据应用总结
00:50
以标签(行、列的名字)为索引选择数据
00:11
df.loc[行标签,列标签]
00:10
二维表格,确定数据需要 横纵坐标
00:35
选择行标签为'2016-02-01',列标签为'open',的数据
00:12
df.loc['2016-02-01','open']
00:15
df.loc['2016-02-01','open'] 拷贝代码到运行环境中
00:28
运行代码出现错误
00:11
修改日期索引,就没问题了
00:32
修改日期为 2023-03-10 也没问题
00:20
17、修改日期为 2023-03-11 出现错误
00:32
2023-03-11 这天在数据框中没有数据
00:24
仍然改回 2023-03-10,获取开盘价数据
00:16
行标签并不是字符串类型数据
00:30
以位置(第几行、第几列)为索引选择数据
00:08
df.iloc[行位置,列位置]
00:10
注意位置从0开始计算
00:16
即第一行是的位置对应的是0
00:08
选择第1行第1列的数据
00:07
df.iloc[0,0]
00:09
df.iloc[0,0] 拷贝到研究环境中
00:15
成功获得第一个交易日的第一个开盘价数据
00:19
df 数据结构同 二维数组 类似
00:16
同时根据标签和位置选择数据
00:07
df.ix[行,列]
00:08
选择第1行列为‘open’的数据
00:06
df.ix[0,'open']
00:09
df.ix[0,'open'] 拷贝到研究环境中
00:14
运行后得到相同的结果
00:16
df.ix
00:11
前一个用标签,后一个用索引也可以
00:51
第一个参数用标签,第二个参数用位置索引
00:39
df.ix[] 可以任意选择用标签,还是索引
00:14
df.ix[0,0] 可以正常运行
00:23
两个参数都是位置索引
00:16
df.ix['2023-3-9','close']
00:44
两个参数都是标签
00:19
有三种方法选择df数据。loc[] 都是标签
00:16
iloc[] 两个参数都是行列的位置
00:10
ix[] 可以自由组合标签和位置索引
00:08
选择连续的多行多列——切片
00:12
起点索引 : 终点索引 这种用法叫做一个切片
00:11
指从起点索引到终点索引
00:08
如果起点索引省略代表从头开始
00:08
终点索引省略代表直到最后
00:08
都省略就代表全部了
00:09
切片在.loc、.iloc、.ix三种方法中都可以应用
00:11
选择行从'2016-02-02'到'2016-02-04',列从'open'到'high'的数据
00:15
df.loc['2016-02-02' 冒号 '2016-02-04','open' 冒号 'high']
00:07
切片 - 拷贝代码到运行环境中
00:22
全部数据都有。周末无交易,无数据
00:26
把 high 改成 close,收盘价数据
00:34
从开盘价到收盘价数据都有
00:26
完全使用 行 和 列标签来获取数据
00:29
行标签、列标签,全部都有数据
00:26
标签方式切片,连头带尾都取数据
00:21
#选择从第2行到最后一行,列从第1列到第3列的数据
00:16
65、df.iloc[1 冒号,0 冒号 3]
00:10
df.iloc[1 冒号,0 冒号 3] - 说明
00:17
运行代码获取切片数据
00:45
切片数据分析 - 运行代码结果
00:28
由上例可见,当以位置为索引时,切片是不包括终点的
00:12
是左闭右开的
00:31
第1列到第3列不是写作0 冒号 2,而是0 冒号 3
00:10
选择行从'2016-02-02'到'2016-02-04',列从第1列到第3列的数据
00:16
客服
顶部
赛事库 课堂 2021拜年纪