python数据分析之Dataframe分组(group by)

Dataframe分组统计group by函数

对数据进行分组统计主要使用Dataframe函数,其功能如下:

  • 根据给定的条件将数据拆分成组。
  • 每个组都可单独应用函数(如sum、mean、std等)。
  • 将结果合并到一个数据结果中。

语法如下:

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表示列,默认值为0
level:表示索引层级,默认为无
as_index:布尔类型,默认为True,返回组标签为索引的对象
sort:对组进行排序,布尔类型,默认为True
group_keys:布尔类型,默认为True,调用apply函数时,将分组键添加到索引以标识片段
squeeze:布尔类型,默认为False,如果可能,减少返回类型的维度,否则返回一致类型
返回值:DataFrameGroupBy,返回包含有关组的信息的groupby对象

"""

2.展示举例数据集

这里我们使用书籍的数据进行展示。

import pandas as pd
pd.set_option('display.max_rows',500)
pd.set_option('display.max_columns',1000)
pd.set_option('display.unicode.east_asian_width',True)

df=pd.read_csv(r"C:\Users\Administrator\Desktop\python-code\Code\04\15\JD.csv",encoding="gbk")
print(df.head(10))

python数据分析之Dataframe分组(group by)

3.根据某一列分组

我们将”一级分类”,”7天点击量”,”订单预定”这3列拿出组成一个新的df ,然后根据”一级分类”进行分组。并统计分组后的求和结果


df1=df[["一级分类","7天点击量","订单预定"]]
print(df1.groupby('一级分类').sum())

这里我们可以看见,被分组的属性会被放到最左边,根据属性内的种类进行统计计算。

python数据分析之Dataframe分组(group by)

4.按照多列进行分组

我们抽取4列组成新的df,并按照2列进行分组


df2=df[["一级分类","二级分类","7天点击量","订单预定"]]
print(df2.groupby(["一级分类","二级分类"]).sum())

这里的分组,会按照”一级分类”进行分组后,再在”二级分类”分组内再进行分组。

python数据分析之Dataframe分组(group by)
如果我们想只获取分组后”7天点击量”的求和结果,我们可以只取这一列。

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

5.对分组数据进行迭代

迭代是指对分组后的数据进行循环操作,查看每一种类型中的具体的结果。


df3=df[["一级分类","7天点击量","订单预定"]]
for name,group in df3.groupby("一级分类"):
    print(name)
    print(group)

上述代码的name是指”一级分类”分组后的值;而group是分组后的数据

python数据分析之Dataframe分组(group by)
如果对多列进行了分组,则需要在for循环中指定多列

key1和key2即是分组后的值


df4=df[["一级分类","二级分类","7天点击量","订单预定"]]
for (key1,key2),group in df4.groupby(["一级分类","二级分类"]):
    print(key1,key2)
    print(group)

6.对分组后的某列或者多列使用聚合函数

主要使用函数agg对分组结果进行聚合运算


print(df3.groupby("一级分类").agg(["mean","sum"]))

python数据分析之Dataframe分组(group by)
可以指定不同列使用不同的聚合效果

如:一列求平均和总和,一列只求总和

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

python数据分析之Dataframe分组(group by)

7.通过字典和Series对象进行分组统计

这一部分主要就是通过字典或者series将某些类别重新打上标签,然后按照新的标签分类。

如:我们要将北京,上海,广州三个一线城市放在北上广,其他城市各自统计,给他们重新打上标签,然后分组。

  • 通过字典重新标签

df=pd.read_csv(r"C:\Users\Administrator\Desktop\python-code\Code\04\23\JD.csv",encoding="gbk")
df.set_index(['商品名称'],inplace=True)
dicts={"上海出库销量":"北上广",
       "北京出库销量":"北上广",
       "广州出库销量":"北上广",
       "成都出库销量":"成都",
       "武汉出库销量":"武汉",
       "西安出库销量":"西安"}
df5=df.groupby(dicts,axis=1).sum()
print(df5)

python数据分析之Dataframe分组(group by)
  • 通过series对象重新标签

data={"上海出库销量":"北上广",
       "北京出库销量":"北上广",
       "广州出库销量":"北上广",
       "成都出库销量":"成都",
       "武汉出库销量":"武汉",
       "西安出库销量":"西安"}
s1=pd.Series(data)
print(s1)
df6=df.groupby(s1,axis=1).sum()
print(df6)

series的结果:

python数据分析之Dataframe分组(group by)
分组series对象的结果:
python数据分析之Dataframe分组(group by)

结束!

Original: https://blog.csdn.net/weixin_48077303/article/details/115175150
Author: 柳小葱
Title: python数据分析之Dataframe分组(group by)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/737845/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球