pandas-5.groupby

作者: ddm2014 | 来源:发表于2018-06-18 16:29 被阅读0次

    pandas的groupby有点像excel的透视表,思路是分类,运算,聚合。
    一般的表达为
    dataframe.groupby(['列1',‘列2]).mean()
    dataframe.groupby(['列1',‘列2]).agg(['函数1',’函数2])
    多是分组统计一个/多个自有函数,比如mean,max,也可以传入自定义函数。

    或者
    dataframe.groupby(['列1',‘列2])['列名'].apply(function)
    多是分组用自定义函数统计,列名省略则是对全部dataframe,有则是只对这一列
    或者
    dataframe.groupby(['列1',‘列2]).agg({'列1':'函数1','列2':'函数2'})
    对多列用不同函数groupby

    其中['列1',‘列2]是分类依据,如果只按一列则直接dataframe.groupby('列1')

    groupby是根据dataframe的行计算,agg,apply是根据列计算。默认只对数字列进行groupby。

    import tushare as ts
    import pandas as pd
    code = '000001'
    start = '2018-01-15'
    end = '2018-01-30'
    gf = ts.get_k_data(code, start=start, end=end)
    gf = gf.reset_index(drop=True)
    gf['label'] = gf['close'].map(lambda x:1 if x > gf['close'].mean() else 2)
    code = '000001'
    start = '2018-01-15'
    end = '2018-01-30'
    gf = ts.get_k_data(code, start=start, end=end)
    gf = gf.reset_index(drop=True)
    gf['label_close'] = gf['close'].map(lambda x:1 if x > gf['close'].mean() else 2)
    gf['label_high'] = gf['high'].map(lambda x:1 if x > gf['close'].mean() else 2)
    
    gf1 = gf.groupby('label_close').mean()
    gf2 = gf.groupby('label_close').agg(['mean','max'])
    gf3 = gf.groupby(['label_close','label_high']).agg(['mean','max'])
    gf4 = gf.groupby('label_close')['open'].agg(['mean','max'])
    gf5 = gf.groupby('label_close').agg({'open':'mean','high':'max'})
    

    先print(gf)


    gf

    print(gf1)


    gf1

    print(gf2)


    gf2

    print(gf3)


    gf3

    print(gf4)


    gf4

    print(gf5)


    image.png

    相关文章

      网友评论

        本文标题:pandas-5.groupby

        本文链接:https://www.haomeiwen.com/subject/kbqgeftx.html