groupby的结果调用
groupby的结果调用

蝈蝈

2022/7/31 11:42:58

groupby分类分组聚合函数。


#1.先用字典产生一个数据库

In [1]:
import pandas as pd
d = {"a":(0,1,0,1,1),"b":(3,4,4,3,3),"c":[5,4,3,2,1]}
df = pd.DataFrame(d)
print(df)
   a  b  c
0  0  3  5
1  1  4  4
2  0  4  3
3  1  3  2
4  1  3  1

注:也可用随机数产生指定形状的数据框:

    import numpy as np
    pd.DataFrame(np.random.randint(1,10,(3,4)),columns=list("abcd"))


#2.对数据库按照a、b属性进行分组,并提取分组后双索引关键字
In [2]:
A=df.groupby(["a","b"])

group_data = A.groups.keys() #对分组后的提取分组的关键字

print(group_data)
dict_keys([(0, 3), (0, 4), (1, 3), (1, 4)])


#3.对某关键字打印,并对分组进行统计

In [3]:
A.get_group((1, 3))
gd = A.count()
print(gd)
     c
a b   
0 3  1
  4  1
1 3  2
  4  1


#4.对分组后的索引做成列属性
In [4]:
gd.reset_index(drop=False)
Out[4]:
a b c
0 0 3 1
1 0 4 1
2 1 3 2
3 1 4 1


#5.显示分组后的数据

In[5]: A.first()
      c
a b
0 3 5
   4 3
1 3 2
   4 4


【groupby】的使用

单类分组:df.groupby("性别")
     eg: df.groupby("性别").describe().unstack()
多类分组:  df.groupby( ["班级","性别"])
     eg: df.groupby( ["班级","性别"]).mean()
         df.groupby( ["班级","性别"]).agg([np.sum, np.mean, np.std]) # 一次计算了三个
时间分组: 
    1、按照【生日】的【年份】进行分组,看看有多少人是同龄?
     df["生日"] = pd.to_datetime(A["生日"],format ="%Y/%m/%d") # 转化为时间格式
    df.groupby(A["生日"].apply(lambda x:x.year)).count() # 按照【生日】的【年份】分组
    2、同一年作为一个小组,小组内生日靠前的那一位作为小队长
    df.sort_values("生日", inplace=True) # 按时间排序
     df.groupby(A["生日"].apply(lambda x:x.year),as_index=False).first()

还可以输入200个字

蝈蝈派【海南省教改项目(Hnjg2022-80)支持】 网站版权所有

Python remained the copyright of our website

吉公网安备 22020402000437号

备案号:吉ICP备2020005062号-2

关注QQ群

了解Python

实时动态