📅  最后修改于: 2020-10-29 01:58:41             🧑  作者: Mango
在Pandas 中,groupby()函数使我们可以通过在实际数据集上利用它们来重新排列数据。它的主要任务是将数据分成不同的组。这些组基于一些标准进行分类。可以从任何轴划分对象。
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)
此操作包括以下步骤,用于汇总/分组数据:
注意:Groupby操作的结果不是DataFrame,而是DataFrame对象的字典。
有多种方法可以将任何对象拆分为组,如下所示:
我们还可以向每个子集添加一些功能。可以对应用的功能执行以下操作:
它被定义为为每个组返回单个聚合值的函数。创建groupby对象时,我们可以对分组的数据执行多种聚合操作。
例
# import the pandas library
import pandas as pd
import numpy as np
data = {'Name': ['Parker', 'Smith', 'John', 'William'],
'Percentage': [82, 98, 91, 87],
'Course': ['B.Sc','B.Ed','M.Phill','BA']}
df = pd.DataFrame(data)
grouped = df.groupby('Course')
print(grouped['Percentage'].agg(np.mean))
输出量
Course
B.Ed 98
B.Sc 82
BA 87
M.Phill 91
Name: Percentage, dtype: int64
这是对组或列执行的操作,它执行某些特定于组的计算,并返回一个索引,该对象的索引大小与组大小相同。
例
# import the pandas library
import pandas as pd
import numpy as np
data = {'Name': ['Parker', 'Smith', 'John', 'William'],
'Percentage': [82, 98, 91, 87],
'Course': ['B.Sc','B.Ed','M.Phill','BA']}
df = pd.DataFrame(data)
grouped = df.groupby('Course')
Percentage = lambda x: (x - x.mean()) / x.std()*10
print(grouped.transform(Percentage))
输出量
Percentage
0 NaN
1 NaN
2 NaN
3 NaN
filter()函数通过定义一些条件来过滤数据并返回数据的子集。
例
# import the pandas library
import pandas as pd
import numpy as np
data = {'Name': ['Parker', 'Smith', 'John', 'William'],
'Percentage': [82, 98, 91, 87],
'Course': ['B.Sc','B.Ed','M.Phill','BA']}
df = pd.DataFrame(data)
grouped = df.groupby('Course')
print (df.groupby('Course').filter(lambda x: len(x) >= 1))
输出量
Name Percentage Course
0 Parker 82 B.Sc
1 Smith 98 B.Ed
2 John 91 M.Phill
3 William 87 BA
它的主要任务是确定groupby中的组。如果我们将by作为函数,则会在对象索引的每个值上调用它。如果通过了dict或Series,则将使用Series或dict VALUES来确定组。
如果传递了ndarray,则按原样使用这些值来确定组。
我们还可以传递标签或标签列表以按自身中的列进行分组。
当轴为MultiIndex(分层)时使用它,因此它将按一个或多个特定级别分组。
注意:它不会影响每个组中观察的顺序。 Groupby保留每个组中行的顺序。