Pandas DataFrame分组求和、分组乘积的实例

2024-03-01 0 926
目录
  • Pandas DataFrame分组求和、分组乘积
  • DataFrame group分组(单列分组、多列分组、分组统计、迭代、聚合计算)
    • 分组
  • 总结

    Pandas DataFrame分组求和、分组乘积

    import numpy as np
    import pandas as pd
    pd.set_option(\’display.max_columns\’, 10)

    # 删除空数据
    def DropNan(data_qd):
    for i in range(len(data_qd)):
    if np.isnan(data_qd[\’test_uniq_cnt\’][i]) or \\
    np.isnan(data_qd[\’fail_uniq_cnt\’][i]):
    data_qd = data_qd.drop(i)
    return data_qd

    def GetGroupSum(df, lst_merge):
    pop_group = df.groupby(lst_merge).sum().reset_index().\\
    rename(columns = {\’test_uniq_cnt\’:\’sum_test_cnt\’,\’fail_uniq_cnt\’:\’sum_fail_cnt\’})
    pop_group[\’Percentofpass\’] = pop_group.\\
    apply(lambda x: -99999 if x.sum_test_cnt == 0 or np.isnan(x.sum_test_cnt) or np.isnan(x.sum_fail_cnt) \\
    else 1 – float(x.sum_fail_cnt)/x.sum_test_cnt, axis = 1)

    return pop_group

    def GetGroupProd(df, lst_group):
    fpy_group = df.groupby(lst_group).\\
    apply(lambda x: \’无生产\’ if x[\’Percentofpass\’].max(axis = 0) < 0 \\
    else \’NA\’ if x[\’Percentofpass\’].min(axis = 0) < 0 \\
    else x[\’Percentofpass\’].cumprod(axis = 0).iloc[-1]).reset_index()
    fpy_group.columns = lst_group + [\’fpy\’]
    return fpy_group

    DataFrame group分组(单列分组、多列分组、分组统计、迭代、聚合计算)

    pandas – DataFrame

    分组

    def dataFormatGroup():
    \”\”\”
    分组统计
    :return:
    \”\”\”
    # 解决数据输出时列名不对齐的问题
    pd.set_option(\’display.unicode.ambiguous_as_wide\’, True)
    pd.set_option(\’display.unicode.east_asian_width\’, True)

    data = [
    [\”组织结构-1\”, \”组织结构-1-1\”, 11, 12],
    [\”组织结构-1\”, \”组织结构-1-2\”, 11, 12],
    [\”组织结构-1\”, \”组织结构-1-3\”, 11, 12],
    [\”组织结构-1\”, \”组织结构-1-3\”, 13, 14],
    [\”组织结构-2\”, \”组织结构-2-1\”, 21, 22],
    [\”组织结构-2\”, \”组织结构-2-1\”, 21, 22],
    [\”组织结构-2\”, \”组织结构-2-3\”, 21, 22],
    [\”组织结构-3\”, \”组织结构-3-1\”, 31, 32],
    [\”组织结构-3\”, \”组织结构-3-1\”, 31, 32],
    [\”组织结构-3\”, \”组织结构-3-3\”, 31, 32],
    [\”组织结构-4\”, \”组织结构-4-1\”, 41, 42],
    [\”组织结构-4\”, \”组织结构-4-1\”, 41, 42],
    [\”组织结构-4\”, \”组织结构-4-3\”, 41, 42]
    ]
    columns = [\’一级单位\’, \’二级单位\’, \’男员工人数\’, \’女员工人数\’]

    df = pd.DataFrame(data=data, columns=columns)

    # 按单列进行分组统计
    group_one_org = df.groupby(\’一级单位\’).sum()
    print(group_one_org)

    # 按多列进行分组统计
    group_two_org = df.groupby([\’一级单位\’, \’二级单位\’]).sum()
    print(group_two_org)

    # 按单列进行分组统计,并统计男员工人数
    group_one_org_by_man = df.groupby([\’一级单位\’])[\”男员工人数\”].sum()
    print(group_one_org_by_man)

    # 迭代
    groups = df.groupby([\’一级单位\’])
    for name, group in groups:
    print(name)
    print(group)

    # 聚合函数 (平均、求和、最大、最小)
    agg_1 = df.groupby(\”一级单位\”).agg([\’mean\’, \’sum\’, \’max\’, \’min\’])
    print(agg_1)

    # 聚合函数 分列聚合计算
    agg_2 = df.groupby(\”一级单位\”).agg({\’男员工人数\’: [\’mean\’, \’sum\’], \’女员工人数\’: [\’max\’, \’min\’]})
    print(agg_2)

    # 求和分组并排序(ascending True 升序 False 降序)
    group_and_num = df.assign(sum=df.sum(axis=1)).groupby([\’一级单位\’, \’二级单位\’]).sum().sort_values(\”sum\”, ascending=True)
    print(group_and_num)

    原始数据:

    一级单位 二级单位 男员工人数 女员工人数
    0 组织结构-1 组织结构-1-1 11 12
    1 组织结构-1 组织结构-1-2 11 12
    2 组织结构-1 组织结构-1-3 11 12
    3 组织结构-1 组织结构-1-3 13 14
    4 组织结构-2 组织结构-2-1 21 22
    5 组织结构-2 组织结构-2-1 21 22
    6 组织结构-2 组织结构-2-3 21 22
    7 组织结构-3 组织结构-3-1 31 32
    8 组织结构-3 组织结构-3-1 31 32
    9 组织结构-3 组织结构-3-3 31 32
    10 组织结构-4 组织结构-4-1 41 42
    11 组织结构-4 组织结构-4-1 41 42
    12 组织结构-4 组织结构-4-3 41 42

    group_one_org 按单列进行分组统计 返回结果:

    男员工人数 女员工人数
    一级单位
    组织结构-1 46 50
    组织结构-2 63 66
    组织结构-3 93 96
    组织结构-4 123 126

    ** group_two_org 按多列进行分组统计 返回结果:**

    男员工人数 女员工人数
    一级单位 二级单位
    组织结构-1 组织结构-1-1 11 12
    组织结构-1-2 11 12
    组织结构-1-3 24 26
    组织结构-2 组织结构-2-1 42 44
    组织结构-2-3 21 22
    组织结构-3 组织结构-3-1 62 64
    组织结构-3-3 31 32
    组织结构-4 组织结构-4-1 82 84
    组织结构-4-3 41 42

    group_one_org_by_man 按单列进行分组统计,并统计男员工人数 返回结果:

    一级单位
    组织结构-1 46
    组织结构-2 63
    组织结构-3 93
    组织结构-4 123
    Name: 男员工人数, dtype: int64

    groups 迭代 返回结果:

    组织结构-1
    一级单位 二级单位 男员工人数 女员工人数
    0 组织结构-1 组织结构-1-1 11 12
    1 组织结构-1 组织结构-1-2 11 12
    2 组织结构-1 组织结构-1-3 11 12
    3 组织结构-1 组织结构-1-3 13 14

    组织结构-2
    一级单位 二级单位 男员工人数 女员工人数
    4 组织结构-2 组织结构-2-1 21 22
    5 组织结构-2 组织结构-2-1 21 22
    6 组织结构-2 组织结构-2-3 21 22

    组织结构-3
    一级单位 二级单位 男员工人数 女员工人数
    7 组织结构-3 组织结构-3-1 31 32
    8 组织结构-3 组织结构-3-1 31 32
    9 组织结构-3 组织结构-3-3 31 32

    组织结构-4
    一级单位 二级单位 男员工人数 女员工人数
    10 组织结构-4 组织结构-4-1 41 42
    11 组织结构-4 组织结构-4-1 41 42
    12 组织结构-4 组织结构-4-3 41 42

    agg_1 聚合函数 (平均、求和、最大、最小) 返回结果:

    男员工人数 女员工人数
    mean sum max min mean sum max min
    一级单位
    组织结构-1 11.5 46 13 11 12.5 50 14 12
    组织结构-2 21.0 63 21 21 22.0 66 22 22
    组织结构-3 31.0 93 31 31 32.0 96 32 32
    组织结构-4 41.0 123 41 41 42.0 126 42 42

    agg_2 聚合函数 分列聚合计算 返回结果:

    男员工人数 女员工人数
    mean sum max min
    一级单位
    组织结构-1 11.5 46 14 12
    组织结构-2 21.0 63 22 22
    组织结构-3 31.0 93 32 32
    组织结构-4 41.0 123 42 42

    求和分组并排序(ascending True 升序 False 降序) 返回结果:

    男员工人数 女员工人数 sum
    一级单位 二级单位
    组织结构-1 组织结构-1-1 11 12 23
    组织结构-1-2 11 12 23
    组织结构-2 组织结构-2-3 21 22 43
    组织结构-1 组织结构-1-3 24 26 50
    组织结构-3 组织结构-3-3 31 32 63
    组织结构-4 组织结构-4-3 41 42 83
    组织结构-2 组织结构-2-1 42 44 86
    组织结构-3 组织结构-3-1 62 64 126
    组织结构-4 组织结构-4-1 82 84 166

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持悠久资源网。

    您可能感兴趣的文章:

    • pandas报错AttributeError:DataFrameobjecthasnoattributeix问题
    • pandasdataframe统计填充空值方式
    • Python数据分析:pandas中Dataframe的groupby与索引用法
    • pandasDataFrame.to_sql()用法小结
    • pandas如何实现两个dataframe相减
    • Pandas实现复制dataframe中的每一行

    收藏 (0) 打赏

    感谢您的支持,我会继续努力的!

    打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
    点赞 (0)

    悠久资源 Python Pandas DataFrame分组求和、分组乘积的实例 https://www.u-9.cn/jiaoben/python/180238.html

    常见问题

    相关文章

    发表评论
    暂无评论
    官方客服团队

    为您解决烦忧 - 24小时在线 专业服务