量化交易系列【1】常用的Pandas数据统计及计算相关函数

1. pd.read_csv读取CSV文件,查看数据

示例中使用的‘000001.XSHE.csv’文件,以上传至csdn资源中,可直接下载

import pandas as pd
# 读取CSV文件
df = pd.read_csv('./000001.XSHE.csv')
# 显示前n行,默认是5
df.head(5)
dateopenclosehighlowvolumemoney
02015/1/59.9810.0010.179.744580990374.565388e+09
12015/1/69.909.8510.239.713469524963.453446e+09
22015/1/79.729.679.889.552722744012.634796e+09
32015/1/89.689.349.729.302254455022.128003e+09
42015/1/99.309.429.919.194017364193.835378e+09
# 显示后n行,默认是5
df.tail(5)
dateopenclosehighlowvolumemoney
18732022/9/1312.8812.9513.0212.661722689892.223707e+09
18742022/9/1412.7512.7312.8712.70858035841.095055e+09
18752022/9/1512.8013.0013.1012.771841017882.393239e+09
18762022/9/1612.9212.5612.9512.561357447811.719253e+09
18772022/9/1912.5412.5712.6712.48632121047.934913e+08
# 查看数据形状
df.shape
(1878, 7)
# 统计数据样本值
df.describe()
openclosehighlowvolumemoney
count1878.0000001878.0000001878.0000001878.0000001.878000e+031.878000e+03
mean12.46628912.47700712.65070312.2916881.165366e+081.467976e+09
std4.0546044.0575954.1418963.9626088.200638e+071.067033e+09
min7.2600007.1500007.3800007.0300002.259368e+071.755915e+08
25%8.7925008.8000008.9300008.7000006.478725e+076.991674e+08
50%11.87500011.86500012.05000011.6650009.268907e+071.240380e+09
75%14.71750014.73750014.91750014.5400001.390155e+081.890645e+09
max24.47000024.57000024.72000024.0900006.728781e+088.596942e+09

2. 统计函数:mean,max,min等

# 求均值
df['close'].mean()
12.477007454739086
# 求最大值
df['close'].max()
24.57
# 求最小值
df['close'].min()
7.15
# 求标准差
df['close'].std()
4.057594705064531
# 求中位数
df['close'].median()
11.865
# 求分位数,以0.25为例,表示%25分位数
df['close'].quantile(0.25)
8.8

3. shift函数:行移动指定位数

Pandas的shift函数可以将DataFrame移动指定的位数

df1 =df.head(5)
df1
dateopenclosehighlowvolumemoney
02015/1/59.9810.0010.179.744580990374.565388e+09
12015/1/69.909.8510.239.713469524963.453446e+09
22015/1/79.729.679.889.552722744012.634796e+09
32015/1/89.689.349.729.302254455022.128003e+09
42015/1/99.309.429.919.194017364193.835378e+09
df1['昨天的收盘价'] = df1['close'].shift(1)   # 1表示将收盘价整体下移1行
df1[['date','close','昨天的收盘价']]
dateclose昨天的收盘价
02015/1/510.00NaN
12015/1/69.8510.00
22015/1/79.679.85
32015/1/89.349.67
42015/1/99.429.34

4. diff函数:求两行差

# 计算今天的涨跌幅具体指 = 今天收盘价 - 昨天收盘价
df1['涨跌值'] = df1['close'].diff(1)  # 标志求下一行与上一行之差
df1[['date','close','涨跌值']]
dateclose涨跌值
02015/1/510.00NaN
12015/1/69.85-0.15
22015/1/79.67-0.18
32015/1/89.34-0.33
42015/1/99.420.08

5. pct_change函数:求变化比例

求两个数差值的比例, 与diff类似。但是diff求的是差值,pct_change求的是变化比例

# 求今天的涨跌幅比例 = (今天收盘价 - 昨天收盘价) / 昨天收盘价
df1['涨跌幅_百分比'] = df1['close'].pct_change()
df1[['date','close','涨跌幅_百分比']]
dateclose涨跌幅_百分比
02015/1/510.00NaN
12015/1/69.85-0.015000
22015/1/79.67-0.018274
32015/1/89.34-0.034126
42015/1/99.420.008565

6. cum函数:累加

# 计算成交量
df1['成交量_cum'] = df1['volume'].cumsum()  #该列的累加
df1[['date','volume','成交量_cum']]
datevolume成交量_cum
02015/1/5458099037458099037
12015/1/6346952496805051533
22015/1/72722744011077325934
32015/1/82254455021302771436
42015/1/94017364191704507855

7. cumprod函数:累乘

# 计算涨跌幅曲线: 假设起始资金1元钱,资金的变化曲线
df1['涨跌幅变化曲线'] =(df1['涨跌幅_百分比'] + 1).cumprod()
df1[['date','close','涨跌幅_百分比','涨跌幅变化曲线']]
dateclose涨跌幅_百分比涨跌幅变化曲线
02015/1/510.00NaNNaN
12015/1/69.85-0.0150000.985
22015/1/79.67-0.0182740.967
32015/1/89.34-0.0341260.934
42015/1/99.420.0085650.942

8. rank函数:用于计算排名

# 举例:按照收盘价进行排名
# pct参数如果设置为True,则表示以百分比形式排名
df1['收盘价_排名'] = df1['close'].rank(ascending=True,pct=False)
df1[['date','close','收盘价_排名']]
dateclose收盘价_排名
02015/1/510.005.0
12015/1/69.854.0
22015/1/79.673.0
32015/1/89.341.0
42015/1/99.422.0

9. value_counts函数:统计出现次数

统计该列中每个元素出现的次数,返回Series

df['股票代码'].value_counts()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿_旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值