美文网首页
python数据分析8:数据分组统计

python数据分析8:数据分组统计

作者: 0清婉0 | 来源:发表于2021-01-12 21:29 被阅读0次

    1.根据给定的条件将数据拆分成组

    2.每个组都可以独立应用函数(如求和,求平均值)

    3.将结果合并到一个数据结构中

    DataFrame.groupby(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=False,observed=False)

    by 映射,字典或Series对象、数组、标签或标签列表。如果by是一个函数,则对象索引的每个值调用它。如果传递了一个字典或Series对象,则使用该字典或Series对象值来确定组。如果传递了数组ndarray,则按原样使用这些值为确定组

    axis axis=1表示行,axis=0表示列(默认)

    level 表示索引层级,默认无

    as_index 布尔型,默认为True,返回以组标签为索引的对象

    sort 对组进行排序,布尔型,默认为True

    group_keys 布尔型,默认为True,调用apply函数时,将分组的键添加到索引以标识片段

    squeeze 布尔型,默认为False,如果可能,减少返回类型的维度,否则返回一致类型

    observed 当以石斑鱼为分类时,才会使用该参数。如果参数值为True,则仅显示分类石斑鱼的观测值。如果为False,则显示分类石斑鱼的所有值

    返回值 DataFrameGroupBy,返回包含有关组的信息的groupby对象

    # 根据一级分类统计订单数据

    import pandas as pd

    # 设置数据显示的列数和宽度

    pd.set_option('display.max_columns', 500)

    pd.set_option('display.width', 1000)

    pd.set_option('display.unicode.east_asian_width', True)

    df = pd.read_excel('JD.xlsx')

    df1 = df[['一级分类','7天点击量','订单预定']]

    print(df1.groupby('一级分类').sum())

                        7天点击量  订单预定

    一级分类                             

    数据库                    186        15

    移动开发                  261        7

    编程语言与程序设计      4280      192

    网页制作/Web技术          345        15

    【按照多列分组统计】

    # 根据两级分类统计订单数据

    import pandas as pd

    # 设置数据显示的列数和宽度

    pd.set_option('display.max_columns', 500)

    pd.set_option('display.width', 1000)

    pd.set_option('display.unicode.east_asian_width', True)

    df = pd.read_excel('JD.xlsx')

    df1 = df[['一级分类','二级分类','7天点击量','订单预定']]

    print(df1.groupby(['一级分类','二级分类']).sum())

                                    7天点击量  订单预定

    一级分类          二级分类                       

    数据库            Oracle              58        2

                      SQL                128        13

    移动开发          Android            261        7

    编程语言与程序设计 ASP.NET              87        2

                      C#                  314        12

                      C++/C语言          724        28

                      JSP/JavaWeb        157        1

                      Java                408        16

                      PHP                113        1

                      Python            2449      132

                      Visual Basic        28        0

                    网页制作/Web技术  HTML                188        8

                      JavaScript          100        7

                      WEB前端              57        0

    【分组并按指定列进行数据计算】

    # 统计各编程语言的7天点击量

    import pandas as pd

    # 设置数据显示的列数和宽度

    pd.set_option('display.max_columns', 500)

    pd.set_option('display.width', 1000)

    pd.set_option('display.unicode.east_asian_width', True)

    df = pd.read_excel('JD.xlsx')

    df1 = df[['一级分类','二级分类','7天点击量','订单预定']]

    print(df1.groupby('二级分类')['7天点击量'].sum())

    二级分类

    ASP.NET          87

    Android          261

    C#              314

    C++/C语言        724

    HTML            188

    JSP/JavaWeb      157

    Java            408

    JavaScript      100

    Oracle            58

    PHP              113

    Python          2449

    SQL              128

    Visual Basic      28

    WEB前端          57

    Name: 7天点击量, dtype: int64

    【对分组数据进行迭代】

    # 迭代一级分类的订单数据

    import pandas as pd

    # 设置数据显示的列数和宽度

    pd.set_option('display.max_columns', 500)

    pd.set_option('display.width', 1000)

    pd.set_option('display.unicode.east_asian_width', True)

    df = pd.read_excel('JD.xlsx')

    df1 = df[['一级分类','二级分类','7天点击量','订单预定']]

    for name,group in df1.groupby('一级分类'):

        print(name)

        print(group)

    数据库

      一级分类 二级分类  7天点击量  订单预定

    25  数据库  Oracle        58        2

    27  数据库      SQL        128        13

    移动开发

        一级分类 二级分类  7天点击量  订单预定

    10  移动开发  Android        85        4

    19  移动开发  Android        32        1

    24  移动开发  Android        85        2

    28  移动开发  Android        59        0

    编程语言与程序设计

                  一级分类      二级分类  7天点击量  订单预定

    0  编程语言与程序设计      ASP.NET        35        1

    1  编程语言与程序设计          PHP        49        0

    2  编程语言与程序设计          Java        51        2

    3  编程语言与程序设计          PHP        64        1

    4  编程语言与程序设计  JSP/JavaWeb        26        0

    5  编程语言与程序设计            C#        60        1

    6  编程语言与程序设计    C++/C语言        227        11

    8  编程语言与程序设计            C#        122        3

    9  编程语言与程序设计    C++/C语言        111        5

    11  编程语言与程序设计    C++/C语言        165        5

    12  编程语言与程序设计  JSP/JavaWeb        131        1

    13  编程语言与程序设计          Java        149        10

    15  编程语言与程序设计        Python      1139        79

    16  编程语言与程序设计          Java        125        1

    18  编程语言与程序设计    C++/C语言        149        4

    20  编程语言与程序设计      ASP.NET        52        1

    21  编程语言与程序设计        Python        597        25

    22  编程语言与程序设计        Python        474        15

    23  编程语言与程序设计          Java        83        3

    26  编程语言与程序设计            C#        132        8

    29  编程语言与程序设计    C++/C语言        27        2

    30  编程语言与程序设计        Python        239        13

    31  编程语言与程序设计    C++/C语言        45        1

    32  编程语言与程序设计  Visual Basic        28        0

    网页制作/Web技术

                一级分类    二级分类  7天点击量  订单预定

    7  网页制作/Web技术  JavaScript        100        7

    14  网页制作/Web技术        HTML        188        8

    17  网页制作/Web技术    WEB前端        57        0

    【迭代两级分类的订单数据】

    import pandas as pd

    # 设置数据显示的列数和宽度

    pd.set_option('display.max_columns', 500)

    pd.set_option('display.width', 1000)

    pd.set_option('display.unicode.east_asian_width', True)

    df = pd.read_excel('JD.xlsx')

    df1 = df[['一级分类','二级分类','7天点击量','订单预定']]

    for (key1,key2),group in df1.groupby(['一级分类','二级分类']):

        print(key1,key2)

        print(group)

      一级分类 二级分类  7天点击量  订单预定

    25  数据库  Oracle        58        2

    数据库 SQL

      一级分类 二级分类  7天点击量  订单预定

    27  数据库      SQL        128        13

    移动开发 Android

        一级分类 二级分类  7天点击量  订单预定

    10  移动开发  Android        85        4

    19  移动开发  Android        32        1

    24  移动开发  Android        85        2

    28  移动开发  Android        59        0

    编程语言与程序设计 ASP.NET

                  一级分类 二级分类  7天点击量  订单预定

    0  编程语言与程序设计  ASP.NET        35        1

    20  编程语言与程序设计  ASP.NET        52        1

    编程语言与程序设计 C#

                  一级分类 二级分类  7天点击量  订单预定

    5  编程语言与程序设计      C#        60        1

    8  编程语言与程序设计      C#        122        3

    26  编程语言与程序设计      C#        132        8

    编程语言与程序设计 C++/C语言

                  一级分类  二级分类  7天点击量  订单预定

    6  编程语言与程序设计  C++/C语言        227        11

    9  编程语言与程序设计  C++/C语言        111        5

    11  编程语言与程序设计  C++/C语言        165        5

    18  编程语言与程序设计  C++/C语言        149        4

    29  编程语言与程序设计  C++/C语言        27        2

    31  编程语言与程序设计  C++/C语言        45        1

    编程语言与程序设计 JSP/JavaWeb

                  一级分类    二级分类  7天点击量  订单预定

    4  编程语言与程序设计  JSP/JavaWeb        26        0

    12  编程语言与程序设计  JSP/JavaWeb        131        1

    编程语言与程序设计 Java

                  一级分类 二级分类  7天点击量  订单预定

    2  编程语言与程序设计    Java        51        2

    13  编程语言与程序设计    Java        149        10

    16  编程语言与程序设计    Java        125        1

    23  编程语言与程序设计    Java        83        3

    编程语言与程序设计 PHP

                一级分类 二级分类  7天点击量  订单预定

    1  编程语言与程序设计      PHP        49        0

    3  编程语言与程序设计      PHP        64        1

    编程语言与程序设计 Python

                  一级分类 二级分类  7天点击量  订单预定

    15  编程语言与程序设计  Python      1139        79

    21  编程语言与程序设计  Python        597        25

    22  编程语言与程序设计  Python        474        15

    30  编程语言与程序设计  Python        239        13

    编程语言与程序设计 Visual Basic

                  一级分类      二级分类  7天点击量  订单预定

    32  编程语言与程序设计  Visual Basic        28        0

    网页制作/Web技术 HTML

                一级分类 二级分类  7天点击量  订单预定

    14  网页制作/Web技术    HTML        188        8

    网页制作/Web技术 JavaScript

              一级分类    二级分类  7天点击量  订单预定

    7  网页制作/Web技术  JavaScript        100        7

    网页制作/Web技术 WEB前端

                一级分类 二级分类  7天点击量  订单预定

    17  网页制作/Web技术  WEB前端        57        0

    【针对不同的列使用不同的聚合函数】

    # 按一级分类分组统计7天点击量、订单预定的平均值总和以及订单预定总和

    import pandas as pd

    # 设置数据显示的列数和宽度

    pd.set_option('display.max_columns', 500)

    pd.set_option('display.width', 1000)

    pd.set_option('display.unicode.east_asian_width', True)

    df = pd.read_excel('JD.xlsx')

    df1 = df[['一级分类','二级分类','7天点击量','订单预定']]

    print(df1.groupby('一级分类').agg({'7天点击量':['mean','sum'],'订单预定':['sum']}))

                        7天点击量      订单预定

                              mean  sum      sum

    一级分类                                   

    数据库              93.000000  186      15

    移动开发            65.250000  261        7

    编程语言与程序设计  178.333333  4280      192

    网页制作/Web技术    115.000000  345      15

    【通过自定义函数实现分组统计】

    # 统计1月份销售数据中,购买次数最多的产品

    import pandas as pd

    # 设置数据显示的列数和宽度

    pd.set_option('display.max_columns', 500)

    pd.set_option('display.width', 1000)

    pd.set_option('display.unicode.east_asian_width', True)

    df = pd.read_excel('1月.xlsx')

    max1 = lambda x: x.value_counts(dropna=False).index[0]

    max1.__name__ = "购买次数最多"

    df1= df.agg({

        '宝贝标题':[max1],

        '数量':['sum','mean'],

        '买家实际支付金额':['sum','mean']

    })

    print(df1)

                        宝贝标题  数量  买家实际支付金额

    购买次数最多  零基础学Python    NaN              NaN

    sum                      NaN  53.00        2528.5600

    mean                    NaN  1.06          50.5712

    # 通过字典分组统计“北上广”的销量

    import pandas as pd

    # 设置数据显示的列数和宽度

    pd.set_option('display.max_columns', 500)

    pd.set_option('display.width', 1000)

    pd.set_option('display.unicode.east_asian_width', True)

    df = pd.read_excel('JD2.xlsx')

    df = df.set_index(['商品名称'])

    dict1={

        '上海出库销量':'北上广','北京出库销量':'北上广',

        '广州出库销量':'广州','成都出库销量':'成都',

        '武汉出库销量':'武汉','西安出库销量':'西安',

    }

    df1 = df.groupby(dict1, axis=1).sum()

    print(df1)

                                      北上广  广州  成都  武汉  西安

    商品名称                                                       

    零基础学Python(全彩版)            1413  578  284  246  152

    Python从入门到项目实践(全彩版)    568  230  113    92    63

    Python项目开发案例集锦(全彩版)    451  189  115    88    57

    Python编程锦囊(全彩版)            321  136    85    65    47

    零基础学C语言(全彩版)              249  115    82    63    40

    SQL即查即用(全彩版)                217    88    29    25    40

    零基础学Java(全彩版)              157    81    48    43    29

    零基础学C++(全彩版)                148    75    53    35    23

    零基础学C#(全彩版)                  95    51    27    16    7

    C#项目开发实战入门(全彩版)          93    42    18    22    12

    相关文章

      网友评论

          本文标题:python数据分析8:数据分组统计

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