pandas dataframe dataframe.groupby() 函数
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_stock
和 supplier
列中的数值将 df
分组,并返回一个 dataframegroupby
对象。
我们使用 first()
方法来获取每个组的第一个元素。它返回一个由以下四个组的第一个元素组合而成的 dataframe。
in_stock
列no
和supplier
列abc
值的组。in_stock
列no
和supplier
列xyz
值的组。in_stock
列yes
和supplier
列abc
值的组。in_stock
列yes
和supplier
列xyz
值的组。
当我们将多个标签传递给 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 dataframe dataframe.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:python
-
dataframe.shift() 函数是将 dataframe 的索引按指定的周期数进行移位。
python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:python
-
python pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:python
-
pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 dataframe 中。
pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:python
-
本教程介绍了如何在 pandas 中使用 dataframe.merge()方法合并两个 dataframes。
pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:python
-
本教程介绍了如何使用 python 中的 loc 和 iloc 从 pandas dataframe 中过滤数据。
在 python 中将 pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:python
-
了解如何在 python 中将 pandas 系列日期时间转换为字符串