pandas dataframe dataframe.groupby() 函数-ag捕鱼王app官网

pandas dataframe dataframe.groupby() 函数

作者:迹忆客 最近更新:2024/04/22 浏览次数:

pandas.dataframe.groupby() 将一个 dataframe 作为输入,根据给定的标准将 dataframe 分成若干组。我们可以使用 groupby() 方法轻松处理大型数据集。


pandas.dataframe.groupby() 语法

dataframe.groupby(
    by=none,
    axis=0,
    level=none,
    as_index=true,
    sort=true,
    group_keys=true,
    squeeze: bool=false,
    observed: bool=false)

参数

by 映射、函数、字符串、标签或可迭代的元素组
axis 按行(axis=0)或列(axis=1)来分组
level 整数,按特定级别进行分组的数值
as_index 布尔型。它返回一个以组标签为索引的对象
sort 布尔型。它对组键进行排序
group_keys 布尔型。它将组键添加到索引中,以识别分组
squeeze 布尔型。在可能的情况下,它会减少返回的维度
observed 布尔型。只适用于任何分类分组,如果设置为 true,则只显示分类分组的观测值

返回值

它返回一个 dataframegroupby 对象,该对象中包含了组的信息。


示例代码:使用 pandas.dataframe.groupby() 根据单列的值对两个 dataframe 进行分组

import pandas as pd
fruit_list = [ ('orange', 34, 'yes' ) ,
             ('mango', 24, 'no' ) ,
             ('banana', 14, 'no' ) ,
             ('apple', 44, 'yes' ) ,
             ('pineapple', 64, 'no') ,
             ('kiwi', 84, 'yes')  ]
df = pd.dataframe(fruit_list, columns = ['name' , 'price', 'in_stock']) 
grouped_df = df.groupby('in_stock')
print(grouped_df)
print(type(grouped_df))

输出:



它根据 in_stock 列中的值将 dataframe 分组,并返回一个 dataframegroupby 对象。

要想获得 groupby() 返回的 dataframegroupby 对象的详细信息,我们可以使用 dataframegroupby 对象的 first() 方法来获得每个组的第一个元素。

import pandas as pd
fruit_list = [ ('orange', 34, 'yes' ) ,
             ('mango', 24, 'no' ) ,
             ('banana', 14, 'no' ) ,
             ('apple', 44, 'yes' ) ,
             ('pineapple', 64, 'no') ,
             ('kiwi', 84, 'yes')  ]
df = pd.dataframe(fruit_list, columns = ['name' , 'price', 'in_stock']) 
grouped_df = df.groupby('in_stock')
print(grouped_df.first())

输出:

            name  price
in_stock               
no         mango     24
yes       orange     34

它打印由从 df 分割的两个组的第一个元素组成的 dataframe

我们也可以使用 get_group() 方法打印整个组。

import pandas as pd
fruit_list = [ ('orange', 34, 'yes' ) ,
             ('mango', 24, 'no' ) ,
             ('banana', 14, 'no' ) ,
             ('apple', 44, 'yes' ) ,
             ('pineapple', 64, 'no') ,
             ('kiwi', 84, 'yes')  ]
df = pd.dataframe(fruit_list, columns = ['name' , 'price', 'in_stock']) 
grouped_df = df.groupby('in_stock')
print(grouped_df.get_group('yes'))

输出:

     name  price in_stock
0  orange     34      yes
3   apple     44      yes
5    kiwi     84      yes

它打印的是 df 中所有在 in_stock 列中值为 yes 的元素。我们首先通过 groubpy() 方法将 in_stock 列值不同的元素分成不同的组,然后使用 get_group() 方法访问某个特定的组。


示例代码:使用 pandas.dataframe.groupby() 根据多个条件对两个 dataframe 进行分组

import pandas as pd
fruit_list = [ ('orange', 34, 'yes' ,'abc') ,
             ('mango', 24, 'no','abc' ) ,
             ('banana', 14, 'no','abc' ) ,
             ('apple', 44, 'yes',"xyz" ) ,
             ('pineapple', 64, 'no',"xyz") ,
             ('kiwi', 84, 'yes',"xyz")  ]
df = pd.dataframe(fruit_list, columns = ['name' , 'price', 'in_stock',"supplier"]) 
grouped_df = df.groupby(['in_stock', 'supplier']) 
print(grouped_df.first())

输出:

                        name  price
in_stock supplier                  
no       abc           mango     24
         xyz       pineapple     64
yes      abc          orange     34
         xyz           apple     44

它根据 in_stocksupplier 列中的数值将 df 分组,并返回一个 dataframegroupby 对象。

我们使用 first() 方法来获取每个组的第一个元素。它返回一个由以下四个组的第一个元素组合而成的 dataframe。

  • in_stocknosupplierabc 值的组。
  • in_stocknosupplierxyz 值的组。
  • in_stockyessupplierabc 值的组。
  • in_stockyessupplierxyz 值的组。

当我们将多个标签传递给 groupby() 函数时,由 groupby 对象的方法返回的 dataframe 有一个 multiindex

print(grouped_df.first().index)

输出:

multiindex(levels=[['no', 'yes'], ['abc', 'xyz']],
           labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
           names=['in_stock', 'supplier'])

示例代码:在 pandas.dataframe.groupby() 中设置 as_index=false

dataframe.groupby() 方法中的 as_index 参数默认为 true。当应用 first()groupby 方法时,组标签是返回的 dataframe 的索引。

import pandas as pd
fruit_list = [
    ("orange", 34, "yes"),
    ("mango", 24, "no"),
    ("banana", 14, "no"),
    ("apple", 44, "yes"),
    ("pineapple", 64, "no"),
    ("kiwi", 84, "yes"),
]
df = pd.dataframe(fruit_list, columns=["name", "price", "in_stock"])
grouped_df = df.groupby("in_stock", as_index=true)
firtgroup = grouped_df.first()
print(firtgroup)
print(firtgroup.index)
print("---------")
grouped_df = df.groupby("in_stock", as_index=false)
firtgroup = grouped_df.first()
print(firtgroup)
print(firtgroup.index)

输出:

            name  price
in_stock               
no         mango     24
yes       orange     34
index(['no', 'yes'], dtype='object', name='in_stock')  in_stock    name  price
0       no   mango     24
1      yes  orange     34
int64index([0, 1], dtype='int64')

正如你所看到的,生成的 dataframe 的索引默认为组标签,即 as_index=true

当我们设置 as_index=false 时,索引就变成了自动生成的数字索引。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:python

pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 dataframe 中。

pandas 追加数据到 csv 中

发布时间:2024/04/24 浏览次数:352 分类:python

本教程演示了如何在追加模式下使用 to_csv()向现有的 csv 文件添加数据。

pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:python

本教程介绍了如何在 pandas 中使用 dataframe.merge()方法合并两个 dataframes。

pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:python

本教程介绍了如何使用 python 中的 loc 和 iloc 从 pandas dataframe 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图