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


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

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

    import pandas as pd
    
    • 1
    # 读取CSV文件
    df = pd.read_csv('./000001.XSHE.csv')
    
    • 1
    • 2
    # 显示前n行,默认是5
    df.head(5)
    
    • 1
    • 2
    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)
    
    • 1
    • 2
    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
    
    • 1
    • 2
    (1878, 7)
    
    • 1
    # 统计数据样本值
    df.describe()
    
    • 1
    • 2
    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()
    
    • 1
    • 2
    12.477007454739086
    
    • 1
    # 求最大值
    df['close'].max()
    
    • 1
    • 2
    24.57
    
    • 1
    # 求最小值
    df['close'].min()
    
    • 1
    • 2
    7.15
    
    • 1
    # 求标准差
    df['close'].std()
    
    • 1
    • 2
    4.057594705064531
    
    • 1
    # 求中位数
    df['close'].median()
    
    • 1
    • 2
    11.865
    
    • 1
    # 求分位数,以0.25为例,表示%25分位数
    df['close'].quantile(0.25)
    
    • 1
    • 2
    8.8
    
    • 1

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

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

    df1 =df.head(5)
    
    • 1
    df1
    
    • 1
    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行
    
    • 1
    df1[['date','close','昨天的收盘价']]
    
    • 1
    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','涨跌值']]
    
    • 1
    • 2
    • 3
    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','涨跌幅_百分比']]
    
    • 1
    • 2
    • 3
    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']]
    
    • 1
    • 2
    • 3
    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','涨跌幅_百分比','涨跌幅变化曲线']]
    
    • 1
    • 2
    • 3
    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','收盘价_排名']]
    
    • 1
    • 2
    • 3
    • 4
    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()
    
    • 1
  • 相关阅读:
    基于HTML语言的环保网站的设计与实现 前后端分离 Java毕业设计·文档报告·代码讲解·安装调试
    快充插线板怎么选?我的办公搭子是它!
    正雅GS产系——错颌畸形治疗新方式
    InnoDB:一条update语句执行过程
    Matlab中图形对象属性gca使用
    Rockland甘油激酶抗体生物素偶联物丨山羊多克隆
    如何在Linux环境中远程访问企业级夜莺监控分析工具?
    ElasticSearch实战
    IoTBrowser V2.0:引领物联网时代的全新浏览器
    Minianaconda安装jupyter notebook遇到的问题及解决
  • 原文地址:https://blog.csdn.net/qq_42589613/article/details/127405907