首页 > 软件开发 > PYTHON >

python下用pandas实现数据统计--groupby分组

来源:互联网 2023-03-16 19:13:37 295

在使用pandas时,数据统计的分组计算,比如:求平均 求和 求中值 求方差等非常常用,pandas提供了强大的分组函数 groupby可以轻松地完成这个工作。LQV办公区 - 实用经验教程分享!

本文介绍 单列分组,两列分组 , 求和 求平均 和describe 时间分组还有筛选 ,六个例子。LQV办公区 - 实用经验教程分享!

工具/原料

  • pycharm win7环境
  • pandas python3

方法/步骤

  • 1

    groupby广泛用在数据统计之中,可以实现很多数据库函数的功能。LQV办公区 - 实用经验教程分享!

    本文仅从单列分组,两列分组 , 求和 求平均 和 describe 时间分组还有筛选 ,六个方面例子进行说明。LQV办公区 - 实用经验教程分享!

    数据初始化代码:LQV办公区 - 实用经验教程分享!

    import pandas as pdLQV办公区 - 实用经验教程分享!

    import numpy as npLQV办公区 - 实用经验教程分享!

    import osLQV办公区 - 实用经验教程分享!

    import sysLQV办公区 - 实用经验教程分享!

    exampleData = {'电源': ['220v', '110v', '28v', '5v', '3v'], LQV办公区 - 实用经验教程分享!

    '电阻': ['100', '100', '100', '1M', '2.2K'], LQV办公区 - 实用经验教程分享!

    '厂家': ['A厂', 'B厂', 'A厂', 'B厂', 'C厂' ], LQV办公区 - 实用经验教程分享!

    '数量': [5, 20, 14, 15, 20]}LQV办公区 - 实用经验教程分享!

    df = pd.DataFrame(exampleData)LQV办公区 - 实用经验教程分享!

    print(df)LQV办公区 - 实用经验教程分享!

    python下用pandas实现数据统计--groupby分组LQV办公区 - 实用经验教程分享!

    python下用pandas实现数据统计--groupby分组LQV办公区 - 实用经验教程分享!

  • 2

    #按厂家分组,并统计个数LQV办公区 - 实用经验教程分享!

    print("------数据分组统计个数-----")LQV办公区 - 实用经验教程分享!

    groupnum = df.groupby(['厂家']).size()LQV办公区 - 实用经验教程分享!

    print(groupnum)LQV办公区 - 实用经验教程分享!

    #打印每组数据 这个很有用LQV办公区 - 实用经验教程分享!

    print("------数据分组-----")LQV办公区 - 实用经验教程分享!

    for groupname,grouplist in df.groupby('厂家'):LQV办公区 - 实用经验教程分享!

    print(groupname)LQV办公区 - 实用经验教程分享!

    print(grouplist)LQV办公区 - 实用经验教程分享!

    python下用pandas实现数据统计--groupby分组LQV办公区 - 实用经验教程分享!

  • 3

    # 求平均#将数量转换成浮点型,然后分组求均值print("------数据分组求平均-----")groupmean = df['数量'].astype(float).groupby(df['厂家']).mean()print(groupmean, type(groupmean))# 求和#将数量转换成浮点型,然后分组求和print("------数据分组求和-----")groupsum = df['数量'].astype(float).groupby(df['厂家']).sum()print(groupsum, type(groupsum))LQV办公区 - 实用经验教程分享!

    python下用pandas实现数据统计--groupby分组LQV办公区 - 实用经验教程分享!

  • 4

    #追加列LQV办公区 - 实用经验教程分享!

    print("------追加列-----")LQV办公区 - 实用经验教程分享!

    df['地点'] = ['上海','北京',"大陆",'台湾','广州']LQV办公区 - 实用经验教程分享!

    df['日期'] = ['2019-03-11','2019-03-16',"2019-03-16",'2019-03-16','2019-03-15']LQV办公区 - 实用经验教程分享!

    print(df)LQV办公区 - 实用经验教程分享!

    print("------多 列 数据分组统计个数-----")LQV办公区 - 实用经验教程分享!

    groupnum = df.groupby(['厂家','电阻']).size()LQV办公区 - 实用经验教程分享!

    print(groupnum)LQV办公区 - 实用经验教程分享!

    python下用pandas实现数据统计--groupby分组LQV办公区 - 实用经验教程分享!

  • 5

    # 按厂家与电阻分组,求数量这一列均值LQV办公区 - 实用经验教程分享!

    print("------按厂家与电阻分组,求数量这一列均值--")LQV办公区 - 实用经验教程分享!

    groupmean = df['数量'].astype(float).groupby([df['厂家'],df['电阻']]).mean()LQV办公区 - 实用经验教程分享!

    print(groupmean)LQV办公区 - 实用经验教程分享!

    LQV办公区 - 实用经验教程分享!

    # 按厂家与电阻分组,求数量这一列sumLQV办公区 - 实用经验教程分享!

    print("------按厂家与电阻分组,求数量这一列sum--")LQV办公区 - 实用经验教程分享!

    groupsum = df['数量'].astype(float).groupby([df['厂家'],df['电阻']]).sum()LQV办公区 - 实用经验教程分享!

    print(groupsum)LQV办公区 - 实用经验教程分享!

    LQV办公区 - 实用经验教程分享!

    print("------按厂家与电阻分组,求数量这一列describe--")LQV办公区 - 实用经验教程分享!

    groupdescribe = df['数量'].astype(float).groupby([df['厂家'],df['电阻']]).describe()LQV办公区 - 实用经验教程分享!

    print(groupdescribe)LQV办公区 - 实用经验教程分享!

    python下用pandas实现数据统计--groupby分组LQV办公区 - 实用经验教程分享!

  • 6

    print("------按厂家 分组,日期这一列count--")LQV办公区 - 实用经验教程分享!

    # 转化为时间格式LQV办公区 - 实用经验教程分享!

    df["新日期"] = pd.to_datetime(df["日期"],format ="%Y-%m-%d")LQV办公区 - 实用经验教程分享!

    print(df)LQV办公区 - 实用经验教程分享!

    groupcount = df.groupby([df['新日期']]).count()LQV办公区 - 实用经验教程分享!

    print(groupcount)LQV办公区 - 实用经验教程分享!

    groupnum = df.groupby(['新日期']).size()LQV办公区 - 实用经验教程分享!

    print(groupnum)LQV办公区 - 实用经验教程分享!

    LQV办公区 - 实用经验教程分享!

    # 按照年分组LQV办公区 - 实用经验教程分享!

    print(df.groupby(df["新日期"].apply(lambda i:i.year)).count())LQV办公区 - 实用经验教程分享!

    python下用pandas实现数据统计--groupby分组LQV办公区 - 实用经验教程分享!

  • 6本页面未经许可获取自百度经验
  • 7

    # 到这里是按月分组LQV办公区 - 实用经验教程分享!

    new_df = df.groupby(df["新日期"].apply(lambda i:i.day),as_index=False)LQV办公区 - 实用经验教程分享!

    print(new_df)LQV办公区 - 实用经验教程分享!

    print("------数据分组-----")LQV办公区 - 实用经验教程分享!

    for groupname,grouplist in new_df:LQV办公区 - 实用经验教程分享!

    print(groupname)LQV办公区 - 实用经验教程分享!

    print(grouplist)LQV办公区 - 实用经验教程分享!

    #打印按天 并且筛选数据只有一个的LQV办公区 - 实用经验教程分享!

    newdf = df.groupby(df["新日期"].apply(lambda i:i.day),as_index=False).filter(lambda i: len(i)==1)LQV办公区 - 实用经验教程分享!

    print(newdf)LQV办公区 - 实用经验教程分享!

    #打印按天 并且筛选数据大于一个的LQV办公区 - 实用经验教程分享!

    newdf = df.groupby(df["新日期"].apply(lambda i:i.day),as_index=False).filter(lambda i: len(i) > 1)LQV办公区 - 实用经验教程分享!

    print(newdf)LQV办公区 - 实用经验教程分享!

    python下用pandas实现数据统计--groupby分组LQV办公区 - 实用经验教程分享!

  • 注意事项

    • groupby 可以和lambda 配合使用
    • 注意 filter 的使用

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!LQV办公区 - 实用经验教程分享!


    标签: python

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码