• python库学习笔记——分组计算利器:pandas中的groupby技术


            最近处理数据需要分组计算,又用到了groupby函数,温故而知新。

      分组运算的第一阶段,pandas 对象(无论是 Series、DataFrame 还是其他的)中的数据会根据你所提供的一个或多个键被拆分(split)为多组。拆分操作是在对象的特定轴上执行的。例如,DataFrame 可以在其行(axis=0)或列(axis=1)上进行分组。然后,将一个函数应用到各个分组并产生一个新值。最后,所有这些函数的执行结果会被合并到最终的结果对象中。结果对象的形式一般取决于数据上所执行的操作。


    举例说明,生成随机DataFrame数据

    输入

    df = DataFrame({'key1':['a','a','b','b','a'],
                    'key2':['one','two','one','two','one'],
                    'data1':np.random.randn(5),
                    'data2':np.random.randn(5)})
    输出df


    假设我们想要按 key1 进行分组,并计算 data1 列的平均值。

    输入

    df['data1'].groupby(df['key1']).mean() or df.groupby('key1')['data1'].mean()
    输出

    key1
    a    0.310092
    b   -0.785952
    Name: data1, dtype: float64


    假设我们想要按 key1 ,key2进行分组,并计算 data1 列的平均值。

    输入

    df['data1'].groupby([df['key1'],df['key2']]).mean() or df.groupby(['key1','key2'])[['data1']].mean()
    输出

    key1  key2
    a     one    -0.078753
          two     1.087782
    b     one    -1.346429
          two    -0.225475
    Name: data1, dtype: float64

    另外,我们可以对分组进行迭代,以多重键为例:

    输入

    for name,group in df.groupby('key1'):
        print (name)
        print (group)
    输出

    a
          data1     data2 key1 key2
    0  0.033971  0.066088    a  one
    1  1.087782 -0.095748    a  two
    4 -0.191477 -0.057805    a  one
    b
          data1     data2 key1 key2
    2 -1.346429  0.648059    b  one
    3 -0.225475  1.440988    b  two



    参考资料:《利用python进行数据分析》







  • 相关阅读:
    shell 模式匹配:case
    知识目录总结
    【运维--系统】nacos介绍和安装
    【运维--监控】zabbix自定义发现策略
    【转】在CentOS 8 / RHEL 8上配置主/从BIND DNS服务器
    【运维--安全相关】cerbot证书自动化续期
    【转】Docker 核心技术与实现原理
    【转】Kubernetes scheduler学习笔记
    [转]自建CDN防御DDoS
    【转】Dockerfile
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9411633.html
Copyright © 2020-2023  润新知