Python量化炒股常用的Pandas包

简介: Python量化炒股常用的Pandas包

Python量化炒股常用的Pandas包
Pandas 是一个基于 NumPy 的数据处理库,提供了高性能、易用的数据结构和数据分析工具。下面是一些关于 Pandas 包的相关知识:

主要数据结构:

  1. Series:类似于带有索引的一维数组,可以存储不同类型的数据。
  2. DataFrame:二维表格数据结构,每列可以是不同的数据类型。
  3. Panel:是三维数组,可以理解为DataFrame的容器。
  4. Pandas 的功能特点:
  5. 数据清洗:处理缺失值、重复值、异常值等。
  6. 数据转换:合并、联接、切片和切块数据。
  7. 数据分析:统计汇总、分组运算、时间序列分析等。
  8. 数据可视化:内置绘图功能,简化数据可视化过程。

示例代码:

创建 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
海格通信20231023日至20231030日的收盘价之和: 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())

单击工具栏运行按钮,运行效果如下:

海格通信20231023日至20231030日的成交量之和: 446887134.0

利用mean()函数可以求最近几个交易日的平均价。假如显示海格通信2023年10月13日~2023年10月17日这5个交易日的平均收盘价格,则实现代码如下:

print('海格通信2023年10月13日至2023年10月17日的收盘价的平均值:', df['close'].mean())

单击工具栏运行按钮,运行效果如下:

海格通信20231023日至20231030日的收盘价的平均值: 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对象,所以这部分了解一下即可。由输出的结果可以看出:

  1. 列标(Items axis: open to money)

  2. 行标(Major_axis axis: 2024-04-15 00:00:00 to 2024-04-18 00:00:00

  3. 股票代码(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']

单击工具栏运行按钮,运行效果如下:

image.png

相关文章
|
12天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
8天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2522 18
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
8天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1525 15
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
4天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
10天前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
596 14
|
1月前
|
运维 Cloud Native Devops
一线实战:运维人少,我们从 0 到 1 实践 DevOps 和云原生
上海经证科技有限公司为有效推进软件项目管理和开发工作,选择了阿里云云效作为 DevOps 解决方案。通过云效,实现了从 0 开始,到现在近百个微服务、数百条流水线与应用交付的全面覆盖,有效支撑了敏捷开发流程。
19283 30
|
10天前
|
人工智能 自动驾驶 机器人
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
过去22个月,AI发展速度超过任何历史时期,但我们依然还处于AGI变革的早期。生成式AI最大的想象力,绝不是在手机屏幕上做一两个新的超级app,而是接管数字世界,改变物理世界。
498 49
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
|
1月前
|
人工智能 自然语言处理 搜索推荐
阿里云Elasticsearch AI搜索实践
本文介绍了阿里云 Elasticsearch 在AI 搜索方面的技术实践与探索。
18845 20
|
1月前
|
Rust Apache 对象存储
Apache Paimon V0.9最新进展
Apache Paimon V0.9 版本即将发布,此版本带来了多项新特性并解决了关键挑战。Paimon自2022年从Flink社区诞生以来迅速成长,已成为Apache顶级项目,并广泛应用于阿里集团内外的多家企业。
17530 13
Apache Paimon V0.9最新进展
|
3天前
|
云安全 存储 运维
叮咚!您有一份六大必做安全操作清单,请查收
云安全态势管理(CSPM)开启免费试用
368 4
叮咚!您有一份六大必做安全操作清单,请查收