Python量化炒股常用的Pandas包
Pandas 是一个基于 NumPy 的数据处理库,提供了高性能、易用的数据结构和数据分析工具。下面是一些关于 Pandas 包的相关知识:
主要数据结构:
- Series:类似于带有索引的一维数组,可以存储不同类型的数据。
- DataFrame:二维表格数据结构,每列可以是不同的数据类型。
- Panel:是三维数组,可以理解为DataFrame的容器。
- Pandas 的功能特点:
- 数据清洗:处理缺失值、重复值、异常值等。
- 数据转换:合并、联接、切片和切块数据。
- 数据分析:统计汇总、分组运算、时间序列分析等。
- 数据可视化:内置绘图功能,简化数据可视化过程。
示例代码:
创建 Series 和 DataFrame:
import pandas as pd
# 创建 Series
data = pd.Series([10, 20, 30, 40], index=['A', 'B', 'C', 'D'])
# 创建 DataFrame
data_dict = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35]}
df = pd.DataFrame(data_dict)
数据清洗和转换:
# 处理缺失值
df.dropna() # 删除含有缺失值的行
df.fillna(0) # 将缺失值填充为指定值
# 数据筛选
df_filtered = df[df['Age'] > 25]
数据分析和操作:
# 统计描述
df.describe()
# 按照某列分组计算统计量
df.groupby('Category').mean()
数据可视化:
import matplotlib.pyplot as plt
# 绘制柱状图
df.plot(kind='bar', x='Name', y='Age')
plt.show()
通过灵活应用 Pandas 提供的数据结构和方法,可以高效地进行数据处理、分析和可视化,使得数据科学任务变得更加简单和便捷。
一维数组系列(Series)
系列(Series)是由一组数据(各种Numpy数据类型)以及一组与之相关的标签数据(索引)组成的。仅由一组数据即可产生最简单的系列(Series),也可以通过传递一个dict对象来创建一个系列(Series)。需要注意的是,Pandas会默认创建整型索引。
利用ndarray创建系列(Series)
如果数据是ndarray,则传递的索引必须具有相同的长度。如果没有传递索引值,那么默认的索引将是范围(n)。其中,n是数组长度,即[0,1,2,3…(len(array))-1]。
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:
# 导入pandas和numpy包
import pandas as pd
import numpy as np
# 利用ndarray为系列赋值
mydata1 = np.array(['a', 'b', 'c', 'd'])
mys = pd.Series(mydata1)
print('显示系列中的索引和数据:\n', mys)
mydata2 = np.array(['C', 'C++', 'Python', 'Java'])
myt = pd.Series(mydata2, index=[100, 101, 102, 103])
print('显示系列中的索引和数据:\n', myt)
这里没有传递任何索引,因此默认情况下,它分配了从0到len(data)-1的索引, 即0到3。
如果传递索引值,就可以在输出中看到自定义的索引值。
单击工具栏中的运行按钮(可以用快捷键:shift+enter),运行结果如下:
显示系列中的索引和数据:
0 a
1 b
2 c
3 d
dtype: object
显示系列中的索引和数据:
100 C
101 C++
102 Python
103 Java
dtype: object
利用字典创建系列(Series)
字典(dict)可以作为输入传递,如果没有指定索引, 则按排序顺序取得字典键以构造索引。如果传递了索引,则索引中与标签对应的数据中的值将被取出。
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:
import pandas as pd
data = {
'姓名':'赵薇', '年龄':19, '年级': '大一','学习成绩':'优'}
mya = pd.Series(data)
print('利用字典创建系列:\n', mya)
单击工具栏中的运行按钮,运行结果如下:
利用字典创建系列:
姓名 赵薇
年龄 19
年级 大一
学习成绩 优
dtype: object
访问系列(Series)中的值
系列(Series)中的数据可以使用类似于访问ndarray中的数据来访问,也可以利用系列(Series)中的标签数据(索引)的来访问。
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:
import pandas as pd
s = pd.Series(['C', 'C++', 'Python', 'Java', 'HTML'], index = ['a', 'b', 'c', 'd', 'e'])
print('系列中的第一个数据:', s[0])
print('系列中的第三个数据:', s['c'])
print('系列中的第二个和第四个数据:\n', s[['b', 'd']])
print('系列中的前三个数据:\n', s[:3])
print('系列中的后三个数据:\n', s[-3:])
单击工具栏中的运行按钮,运行结果如下:
系列中的第一个数据: C
系列中的第三个数据: Python
系列中的第二个和第四个数据:
b C++
d Java
dtype: object
系列中的前三个数据:
a C
b C++
c Python
dtype: object
系列中的后三个数据:
c Python
d Java
e HTML
dtype: object
二维数组DataFrame
DataFrame是一个表格型的数据结构,它含有一组有序的列,每一列的数据结构都是相同的,而不同的列之间则可以是不同的数据结构(数值,字符、布尔值等)。或者以数据库进行类比,DataFrame中的每一行是一个记录,名称是Index的一个元素,而每一列则为一个字段,是这个记录的一个属性。DataFrame既有行索引也有列索引,可以被看作由Series组成的字典(共用同一个索引)。
二维数组DataFrame的创建
二维数组DataFrame可以使用各种输入创建,如列表、字典、一维数组系列(Series)、Numpy ndarrays以及另一个二维数组DataFrame。
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:
import pandas as pd
data = {
'姓名': ['李娜', '张力', '周元','许东'], '年龄':[25,28,19,30], '工资':[5869,7256,6895,7289]}
df = pd.DataFrame(data)
print('显示df中的数据:\n', df)
单击工具栏中的运行按钮,运行结果如下:
显示df中的数据:
姓名 年龄 工资
0 李娜 25 5869
1 张力 28 7256
2 周元 19 6895
3 许东 30 7289
利用DataFrame显示不同类型的证券信息
利用get_all_securities()函数可以显示所有股票数据信息,该函数的返回值是DataFrame二维数据。该函数的语法格式如下:
get_all_securities(types=['stock'], date=None)
参数types:用来过滤securities(证券)的类型,如stock(股票)、index(指数)、etf(ETF基金)、fja(分级A)、fjb(分级B)等。
参数date:用来获取该日期之前已上市的股票信息。默认值为None,表示获取所有日期的股票信息。
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:
import pandas as pd
df = get_all_securities()
print('深圳证券交易所和上海证券交易所的所有股票信息:')
df
单击工具栏中的运行按钮,运行结果如下:
深圳证券交易所和上海证券交易所的所有股票信息:
display_name name start_date end_date type
000001.XSHE 平安银行 PAYH 1991-04-03 2200-01-01 stock
000002.XSHE 万科A WKA 1991-01-29 2200-01-01 stock
000004.XSHE 国华网安 GHWA 1990-12-01 2200-01-01 stock
000005.XSHE ST星源 STXY 1990-12-10 2200-01-01 stock
000006.XSHE 深振业A SZYA 1992-04-27 2200-01-01 stock
000007.XSHE *ST全新 *STQX 1992-04-13 2200-01-01 stock
000008.XSHE 神州高铁 SZGT 1992-05-07 2200-01-01 stock
000009.XSHE 中国宝安 ZGBA 1991-06-25 2200-01-01 stock
....
688798.XSHG 艾为电子 AWDZ 2021-08-16 2200-01-01 stock
688799.XSHG 华纳药厂 HNYC 2021-07-13 2200-01-01 stock
688800.XSHG 瑞可达 RKD 2021-07-22 2200-01-01 stock
688819.XSHG 天能股份 TNGF 2021-01-18 2200-01-01 stock
688981.XSHG 中芯国际 ZXGJ 2020-07-16 2200-01-01 stock
689009.XSHG 九号公司 JHGS 2020-10-29 2200-01-01 stock
....
各字段信息是:display_name(显示名称)、name(名称的缩写)、start_date(开始日期)、end_date(结束日期)、type(类型)。
如果要查看深圳证券交易所和上海证券交易所的所有指数信息,则具体代码如下:
df = get_all_securities(types=['index'])
print('深圳证券交易所和上海证券交易所的所有指数信息:')
df
单击工具栏中的运行按钮,运行结果如下:
深圳证券交易所和上海证券交易所的所有指数信息:
display_name name start_date end_date type
000001.XSHG 上证指数 SZZS 1991-07-15 2200-01-01 index
000002.XSHG A股指数 AGZS 1992-02-21 2200-01-01 index
000003.XSHG B股指数 BGZS 1992-02-21 2200-01-01 index
000004.XSHG 工业指数 GYZS 1993-05-03 2200-01-01 index
000005.XSHG 商业指数 SYZS 1993-05-03 2200-01-01 index
000006.XSHG 地产指数 DCZS 1993-05-03 2200-01-01 index
000007.XSHG 公用指数 GYZS 1993-05-03 2200-01-01 index
000008.XSHG 综合指数 ZHZS 1993-05-03 2200-01-01 index
000009.XSHG 上证380 SZ380 2010-11-29 2200-01-01 index
000010.XSHG 上证180 SZ180 2002-07-01 2200-01-01 index
000011.XSHG 基金指数 JJZS 2000-06-09 2200-01-01 index
000012.XSHG 国债指数 GZZS 2003-01-02 2200-01-01 index
000013.XSHG 上证企业债指数 QZZS 2003-06-09 2020-12-28 index
000015.XSHG 红利指数 HLZS 2005-01-04 2200-01-01 index
000016.XSHG 上证50 SZ50 2004-01-02 2200-01-01 index
000017.XSHG 新综指 XZZ 2006-01-04 2200-01-01 index
000018.XSHG 180金融 180JR 2007-12-10 2200-01-01 index
000019.XSHG 治理指数 ZLZS 2008-01-02 2200-01-01 index
....
399974.XSHE 中证国有企业改革指数 GQGG 2014-08-07 2200-01-01 index
399975.XSHE 中证全指证券公司指数(四级行业) ZQGS 2013-07-15 2200-01-01 index
399976.XSHE 中证新能源汽车指数 XNYC 2014-11-28 2200-01-01 index
399977.XSHE 中证内地低碳经济主题指数 NDDT 2011-01-21 2020-04-22 index
399978.XSHE 中证医药100指数 YY100 2011-03-18 2020-04-22 index
399979.XSHE 中证大宗商品股票指数 DZSP 2011-08-22 2020-04-22 index
399980.XSHE 中证超级大盘指数 ZZCD 2011-05-10 2020-04-22 index
399981.XSHE 沪深300行业分层等权重指数 300FC 2011-06-13 2020-04-22 index
399982.XSHE 中证500等权重指数 500DQ 2011-06-13 2200-01-01 index
...
当然,还可以查看EFT基金以及分级A和分级B的信息。显示2008年10月12日之前上市交易的ETF基金,具体代码如下:
df3 = get_all_securities(types=['etf'], date='2008-10-12')
print('深圳证券交易所和上海证券交易所的所有ETF基金信息:')
df3
单击工具栏中的运行按钮,运行结果如下:
深圳证券交易所和上海证券交易所的所有ETF基金信息:
display_name name start_date end_date type
159901.XSHE 深证100ETF S100ETF 2006-04-24 2200-01-01 etf
159902.XSHE 中小100ETF ZXB 2006-09-05 2200-01-01 etf
510050.XSHG 50ETF 50ETF 2005-02-23 2200-01-01 etf
510180.XSHG 180ETF 180ETF 2006-05-18 2200-01-01 etf
510880.XSHG 红利ETF HLETF 2007-01-18 2200-01-01 etf
利用DataFrame显示某只股票的报价信息
利用get_price()函数可以获得某只股票的报价信息,该函数的返回值是DataFrame二维数据。该函数的语法格式如下:
get_price(security, start_date=None,end_date=None,frequency = 'daily',fields=None,skip_paused=False, fq='pre', count=None)
get_price()函数可以按天或者按分钟获取一只或者多只股票的行情数据,各项参数意义如下:
security:一只股票代码或者一只股票代码的list。上海证券交易所上市的股票、基金的代码后缀都为“.XSHG";深圳证券交易所上市的股票、基金的代码后缀都为".XSHE"。
start_date:开始时间,与参数count二选一,不可同时使用。需要注意的是,如果参数count和参数start_date都没有设置,则start_date生效值“2019-01-01"。如果取分钟数据,则时间可以精确到分钟,例如传入datetime.datetime(2019,1,1,10,0,0)或者‘2019-01-01 10:00:00’。提醒:当取分钟数据时,如果只传入日期, 则日内时间是当日的00:00:00。当取天数据时,传入的日内时间会被忽略。
end_date:结束时间,默认是“2015-12-31”,包含此日期。需要注意的是,当取分钟数据时,如果end_date只有日期,则日内时间等同于00:00:00,所以返回的数据是不包括end_date这一天的。
Frequency:单位时间长度,几天或者几分钟,默认的daily,即表示1天。现在支持“Xd" “Xm” “daily”(表示1天)、“minute”(表示1分钟),X是一个正整数,分别表示X天和X分钟。需要注意的是,当X>1时,fields只支持[“open”, “close”,“high”,“low”,“volume”,“money”]这几个标准字段。
fields:字符串list,选择要获取的行情数据字段,默认是None(表示[“open” “close” “high” “low” “volume” “money”]这几个标准字段)。参数fields支持SecurityUnitData中的所有基本属性,包含:[“open” “close” “low” “high” “volume” “money” “factor” “high_limit” “low_limit” “avg” “pre_close” “paused”]
skip_paused:是否跳过不交易日期(包括停牌、未上市或者退市的日期,如果不跳过,则停牌时会使用停牌前的数据填充。上市前或者退市后数据都为nan)。需要注意的是,该参数默认为False,即不跳过不交易日期。当该参数是True时,只能取一只股票的信息。
fq: 复权选项。参数值设置为‘pre‘, 表示前复权,为默认设置;参数值设置为None,表示复权,返回实际价格;参数值设置为‘post’,表示后复权。
count:与start_date二选一,不可同时使用。参数count表示数量,返回结果集的行数,即表示获取end_date之前几个frequency的数据。
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:
import pandas as pd
df = get_price('002465.XSHE', start_date = '2024-03-23', end_date = '2024-04-24', frequency='daily')
利用get_price()函数获得海格通信(002465)每天的股票数据信息,开始时间是2024年3月23日,结束时间是2024年4月24日。默认情况下显示的数据是开盘价(open)、收盘价(close)、最低价(low)、最高价(high)、成交量(volume)和成交金额(money)。
单击工具栏运行按钮,运行结果如下:
open close high low volume money
2024-03-25 10.87 10.85 11.18 10.81 35018136.0 3.864117e+08
2024-03-26 10.86 10.69 10.96 10.65 26956451.0 2.903320e+08
2024-03-27 10.70 10.13 10.72 10.10 42015804.0 4.334901e+08
2024-03-28 10.14 10.50 10.65 10.12 40528933.0 4.244250e+08
2024-03-29 10.52 11.15 11.15 10.50 61673117.0 6.705851e+08
2024-04-01 11.18 11.60 11.79 11.10 69904309.0 8.055380e+08
2024-04-02 11.52 11.32 11.59 11.26 38662150.0 4.396242e+08
2024-04-03 11.26 11.23 11.39 11.05 33844393.0 3.806489e+08
2024-04-08 11.15 10.86 11.28 10.86 33388383.0 3.676140e+08
2024-04-09 10.86 10.93 10.99 10.72 29983567.0 3.258632e+08
2024-04-10 10.91 10.58 10.93 10.46 32620548.0 3.451976e+08
2024-04-11 10.73 10.52 11.04 10.49 41974855.0 4.506050e+08
2024-04-12 10.49 10.50 10.70 10.48 28508802.0 3.018650e+08
2024-04-15 10.55 10.63 10.74 10.33 40958498.0 4.327674e+08
2024-04-16 10.53 10.32 10.80 10.27 42819208.0 4.504426e+08
2024-04-17 10.35 10.80 10.83 10.35 44371537.0 4.735995e+08
2024-04-18 10.70 10.88 11.16 10.40 52018013.0 5.618597e+08
2024-04-19 10.82 10.89 11.02 10.70 38153880.0 4.143994e+08
2024-04-22 11.24 11.21 11.39 10.74 91819883.0 1.023533e+09
2024-04-23 11.21 11.07 11.30 10.93 66418177.0 7.376046e+08
2024-04-24 10.93 11.24 11.25 10.73 76908633.0 8.462030e+08
股票数据信息的行选择和列选择
利用head()函数,可以显示前5条股票数据信息。
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:
import pandas as pd
df = get_price('002540.XSHE', start_date='2024-03-23', end_date='2024-04-24', frequency='daily')
df.head()
单击工具栏运行按钮,可以看到亚太科技前5条查询信息,运行结果如下:
open close high low volume money
2024-03-25 5.81 5.83 5.98 5.78 13795483.0 81470870.23
2024-03-26 5.81 5.91 5.93 5.76 15072350.0 88099626.50
2024-03-27 5.86 5.68 5.88 5.67 12017755.0 69545908.70
2024-03-28 5.70 5.82 5.90 5.68 11939584.0 69374159.56
2024-03-29 5.84 5.94 5.94 5.81 11078900.0 65324334.00
利用tail()函数,可以显示后5条股票数据信息,代码如下:
df.tail()
单击工具栏运行按钮,可以看到亚太科技前5条查询信息,运行结果如下:
open close high low volume money
2024-04-18 5.99 6.08 6.11 5.93 12368685.0 7.471114e+07
2024-04-19 6.05 5.99 6.16 5.94 12437650.0 7.499543e+07
2024-04-22 5.95 5.95 6.11 5.91 14340855.0 8.631066e+07
2024-04-23 6.12 6.23 6.30 5.99 31288935.0 1.931108e+08
2024-04-24 6.13 6.35 6.35 6.02 28674550.0 1.783795e+08
显示亚太科技(002540)第四条到第六条数据信息,代码如下:
df[3:6]
单击工具栏运行按钮,可以看到亚太科技前5条查询信息,运行结果如下:
open close high low volume money
2024-03-28 5.70 5.82 5.90 5.68 11939584.0 6.937416e+07
2024-03-29 5.84 5.94 5.94 5.81 11078900.0 6.532433e+07
2024-04-01 6.00 5.97 6.06 5.92 21234255.0 1.269583e+08
只显示亚太科技(0002540)开盘价的信息,代码如下:
df['open']
2024-03-25 5.81
2024-03-26 5.81
2024-03-27 5.86
2024-03-28 5.70
2024-03-29 5.84
2024-04-01 6.00
2024-04-02 5.97
2024-04-03 6.10
2024-04-08 6.11
2024-04-09 6.00
2024-04-10 6.16
2024-04-11 6.03
2024-04-12 6.11
2024-04-15 6.12
2024-04-16 6.06
2024-04-17 5.82
2024-04-18 5.99
2024-04-19 6.05
2024-04-22 5.95
2024-04-23 6.12
2024-04-24 6.13
显示亚太科技(0002540)开盘价(open)、收盘价(close)和成交金额(money)的数据信息,具体代码如下:
df[['open', 'close', 'money']]
单击工具栏运行按钮,可以看到亚太科技前5条查询信息,运行结果如下:
open close money
2024-03-25 10.87 10.85 3.864117e+08
2024-03-26 10.86 10.69 2.903320e+08
2024-03-27 10.70 10.13 4.334901e+08
2024-03-28 10.14 10.50 4.244250e+08
2024-03-29 10.52 11.15 6.705851e+08
2024-04-01 11.18 11.60 8.055380e+08
2024-04-02 11.52 11.32 4.396242e+08
2024-04-03 11.26 11.23 3.806489e+08
2024-04-08 11.15 10.86 3.676140e+08
2024-04-09 10.86 10.93 3.258632e+08
2024-04-10 10.91 10.58 3.451976e+08
2024-04-11 10.73 10.52 4.506050e+08
2024-04-12 10.49 10.50 3.018650e+08
2024-04-15 10.55 10.63 4.327674e+08
2024-04-16 10.53 10.32 4.504426e+08
2024-04-17 10.35 10.80 4.735995e+08
2024-04-18 10.70 10.88 5.618597e+08
2024-04-19 10.82 10.89 4.143994e+08
2024-04-22 11.24 11.21 1.023533e+09
2024-04-23 11.21 11.07 7.376046e+08
2024-04-24 10.93 11.24 8.462030e+08
利用标签选择股票数据信息
利用标签选择股票数据信息,其语法格式如下:
df.loc[行标签, 列标签]
df.loc['a':'b'] # 选取a行到b行数据
df.loc[:'open'] # 选取open列数据
df.loc的第一个参数是行标签,第二个参数为列标签(可选参数,默认为所有列标签),两个参数既可以是列表也可以是单个字符,如果两个参数都为列表则返回DataFrame,否则为Series。
提醒:loc为location的缩写
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:
import pandas as pd
df = get_price('002540.XSHE', start_date='2024-03-23', end_date='2024-04-24', frequency='daily')
df.loc['2024-04-9']
单击工具栏运行按钮,可以看到亚太科技前5条查询信息,运行结果如下:
open 6.00
close 6.13
high 6.19
low 5.98
volume 15206342.00
money 92964442.78
Name: 2024-04-09 00:00:00, dtype: float64
显示2024年4月24日的收盘价信息,具体代码如下:
df.loc['2024-04-24', 'close']
单击工具栏运行按钮,可以看到亚太科技前5条查询信息,运行结果如下:
6.35
显示海格通信2024年3月28日~2024年4月5日的收盘价,具体代码如下:
df.loc['2024-03-28':'2024-04-5', 'close']
单击工具栏运行按钮,可以看到亚太科技前5条查询信息,运行结果如下:
2024-03-28 10.50
2024-03-29 11.15
2024-04-01 11.60
2024-04-02 11.32
2024-04-03 11.23
Name: close, dtype: float64
显示海格通信的所有收盘价信息,具体代码如下:
df.loc[:,'close']
单击工具栏运行按钮,可以看到亚太科技前5条查询信息,运行结果如下:
2024-03-25 10.85
2024-03-26 10.69
2024-03-27 10.13
2024-03-28 10.50
2024-03-29 11.15
2024-04-01 11.60
2024-04-02 11.32
2024-04-03 11.23
2024-04-08 10.86
2024-04-09 10.93
2024-04-10 10.58
2024-04-11 10.52
2024-04-12 10.50
2024-04-15 10.63
2024-04-16 10.32
2024-04-17 10.80
2024-04-18 10.88
2024-04-19 10.89
2024-04-22 11.21
2024-04-23 11.07
2024-04-24 11.24
Name: close, dtype: float64
利用条件选择股票数据信息
利用条件选择股票数据信息,其语法格式如下:
df[逻辑条件]
df[df.one >= 2] # 单个逻辑条件
df[(df.one >= 1) & (df.one < 3)] #多个逻辑与条件组合
df[(df.one >=3) | (df.one < 1)] #多个逻辑或条件组合
单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:
import pandas as pd
df = get_price('002465.XSHE', start_date='2024-03-23', end_date='2024-04-24', frequency='daily')
df[df.close > 11]
只显示收盘价大于11元的报价信息,单击工具栏运行按钮,运行效果如下:
open close high low volume money
2024-03-29 10.52 11.15 11.15 10.50 61673117.0 6.705851e+08
2024-04-01 11.18 11.60 11.79 11.10 69904309.0 8.055380e+08
2024-04-02 11.52 11.32 11.59 11.26 38662150.0 4.396242e+08
2024-04-03 11.26 11.23 11.39 11.05 33844393.0 3.806489e+08
2024-04-22 11.24 11.21 11.39 10.74 91819883.0 1.023533e+09
2024-04-23 11.21 11.07 11.30 10.93 66418177.0 7.376046e+08
2024-04-24 10.93 11.24 11.25 10.73 76908633.0 8.462030e+08
显示收盘价小于等于11元,并且成交量大于5000万元的报价信息,具体代码如下:
df[(df.close <= 11) & (df.volume >= 50000000)]
单击工具栏运行按钮,运行效果如下:
open close high low volume money
2024-04-18 10.7 10.88 11.16 10.4 52018013.0 5.618597e+08
显示收盘价大于11元,并且成交量大于6000万的报价信息,具体代码如下:
df[(df.close > 11) & (df.volume >= 80000000)]
单击工具栏运行按钮,运行效果如下:
open close high low volume money
2024-04-22 11.24 11.21 11.39 10.74 91819883.0 1.023533e+09
函数的运用
如果要计算某只股票的收盘价之和,就要用到sum()函数。单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:
import pandas as pd
df = get_price('002465.XSHE', start_date='2023-10-23', end_date='2023-10-30', frequency='daily')
print(df)
print('海格通信2023年10月23日至2023年10月30日的收盘价之和:', df['close'].sum())
单击工具栏运行按钮,运行效果如下:
open close high low volume money
2023-10-23 11.09 11.13 11.50 11.01 62519649.0 7.020768e+08
2023-10-24 11.17 11.46 11.64 11.02 76443751.0 8.670569e+08
2023-10-25 11.35 11.55 11.75 11.28 71049967.0 8.205668e+08
2023-10-26 11.46 11.67 11.89 11.40 64946466.0 7.571933e+08
2023-10-27 11.56 11.70 11.70 11.23 61920169.0 7.083313e+08
2023-10-30 11.85 12.20 12.22 11.63 110007132.0 1.314755e+09
海格通信2023年10月23日至2023年10月30日的收盘价之和: 69.71000000000001
当然,也可以求2023年10月23日~2023年10月27日的成交量之和,具体代码如下:
import pandas as pd
df = get_price('002465.XSHE', start_date='2023-10-23', end_date='2023-10-30', frequency='daily')
print('海格通信2023年10月23日至2023年10月30日的成交量之和:', df['volume'].sum())
单击工具栏运行按钮,运行效果如下:
海格通信2023年10月23日至2023年10月30日的成交量之和: 446887134.0
利用mean()函数可以求最近几个交易日的平均价。假如显示海格通信2023年10月13日~2023年10月17日这5个交易日的平均收盘价格,则实现代码如下:
print('海格通信2023年10月13日至2023年10月17日的收盘价的平均值:', df['close'].mean())
单击工具栏运行按钮,运行效果如下:
海格通信2023年10月23日至2023年10月30日的收盘价的平均值: 11.713
显示收盘价大于5个交易日的平均收盘价格的报价信息,实现代码如下:
myv = df['close'].mean()
df[df.close > myv]
单击工具栏运行按钮,运行效果如下:
open close high low volume money
2023-10-17 11.5 11.99 12.05 11.37 97327769.0 1.148732e+09
利用std()、max()、min()函数,求收盘价的标准偏差、最高价的最大值和最低价的最小值,具体实现代码如下:
print('收盘价的标准偏差:', df['close'].std())
print('最高价的最大值:',df['high'].max())
print('最低价的最小值:',df['low'].min())
单击工具栏运行按钮,运行效果如下:
收盘价的标准偏差: 0.26576932353703503
最高价的最大值: 12.05
最低价的最小值: 11.36
三维数组Panel
如果利用get_price()函数获取的是多只股票的数据信息,则返回Panel对象。可通过panel[列标, 行标, 股票代码]获取数据。
如果要计算某只股票的收盘价之和,就要用到sum()函数。单击聚宽JointQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:
import pandas as pd
panel1 = get_price(['002465.XSHE', '002540.XSHE'], start_date='2024-04-15', end_date='2024-04-19', frequency='daily')
panel1
单击工具栏运行按钮,运行效果如下:
/opt/conda/lib/python3.6/site-packages/jqdata/apis/data.py:168: UserWarning: 不建议继续使用panel(panel将在pandas未来版本不再支持,将来升级pandas后,您的策略会失败),建议 get_price 传入 panel=False 参数
warnings.warn("不建议继续使用panel(panel将在pandas未来版本不再支持,将来升级pandas后,您的策略会失败),"
/opt/conda/lib/python3.6/site-packages/jqresearch/api.py:120: FutureWarning:
Panel is deprecated and will be removed in a future version.
The recommended way to represent these types of 3-dimensional data are with a MultiIndex on a DataFrame, via the Panel.to_frame() method
Alternatively, you can use the xarray package http://xarray.pydata.org/en/stable/.
Pandas provides a `.to_xarray()` method to help automate this conversion.
round=round)
<class 'pandas.core.panel.Panel'>
Dimensions: 6 (items) x 4 (major_axis) x 2 (minor_axis)
Items axis: open to money
Major_axis axis: 2024-04-15 00:00:00 to 2024-04-18 00:00:00
Minor_axis axis: 002465.XSHE to 002540.XSHE
这里看到,未来pandas可能不再支持Panel对象,所以这部分了解一下即可。由输出的结果可以看出:
列标(Items axis: open to money)
行标(Major_axis axis: 2024-04-15 00:00:00 to 2024-04-18 00:00:00
- 股票代码(Minor_axis axis: 600016.XSHG to 600036.XSHG)
显示两只股票的开盘价信息,具体代码如下:
panel1['open', :, :]
单击工具栏运行按钮,运行效果如下:
002465.XSHE 002540.XSHE
2024-04-15 10.55 6.12
2024-04-16 10.53 6.06
2024-04-17 10.35 5.82
2024-04-18 10.70 5.99
2024-04-19 10.82 6.05
显示两只股票2024年04月16日的数据信息,具体代码如下:
panel1[:,'2024-04-16',:]
单击工具栏运行按钮,运行效果如下:
显示海格通信的数据信息,具体代码如下:
panel1[:,:,'0002465.XSHE']
单击工具栏运行按钮,运行效果如下: