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

相关文章
|
17天前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
45 0
|
11天前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
27 2
|
19天前
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
39 5
|
18天前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
30 2
|
9天前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
9天前
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析:Pandas库实战指南
利用Python进行数据分析:Pandas库实战指南
|
1月前
|
机器学习/深度学习 数据采集 算法
探索Python科学计算的边界:NumPy、Pandas与SciPy在大规模数据分析中的高级应用
【10月更文挑战第5天】随着数据科学和机器学习领域的快速发展,处理大规模数据集的能力变得至关重要。Python凭借其强大的生态系统,尤其是NumPy、Pandas和SciPy等库的支持,在这个领域占据了重要地位。本文将深入探讨这些库如何帮助科学家和工程师高效地进行数据分析,并通过实际案例来展示它们的一些高级应用。
49 0
探索Python科学计算的边界:NumPy、Pandas与SciPy在大规模数据分析中的高级应用
|
1月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
86 3
|
1月前
|
数据采集 数据挖掘 大数据
【Python篇】详细学习 pandas 和 xlrd:从零开始
【Python篇】详细学习 pandas 和 xlrd:从零开始
56 2
|
1月前
|
数据采集 数据可视化 数据挖掘
Python 数据分析实战:使用 Pandas 进行数据清洗与可视化
【10月更文挑战第3天】Python 数据分析实战:使用 Pandas 进行数据清洗与可视化
91 0