本文概述
在Pandas中, groupby()函数使我们可以通过在实际数据集上利用它们来重新排列数据。它的主要任务是将数据分成不同的组。这些组基于一些标准进行分类。可以从任何轴划分对象。
句法
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)
此操作包括以下步骤, 以对数据进行汇总/分组:
- 分割数据集
- 分析数据
- 汇总或合并数据
注意:Groupby操作的结果不是DataFrame, 而是DataFrame对象的字典。
将数据分组
有多种方法可将任何对象拆分为组, 如下所示:
- obj.groupby(‘key’)
- obj.groupby([‘key1’, ‘key2’])
- obj.groupby(key, axis = 1)
我们还可以向每个子集添加一些功能。可以对应用的功能执行以下操作:
- 汇总:计算摘要统计信息。
- 转换:它执行某些特定于组的操作。
- 过滤:它通过在某些条件下丢弃数据来过滤数据。
集合体
它被定义为为每个组返回单个聚合值的函数。创建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的参数
- 创建人:映射, 函数, str或可迭代
它的主要任务是确定groupby中的组。如果我们将by用作函数, 则在对象索引的每个值上调用它。如果通过了dict或Series, 则将使用Series或dict VALUES来确定组。
如果传递了ndarray, 则按原样使用这些值来确定组。
我们还可以传递标签或标签列表以按自身中的列进行分组。
- 轴:{0或’index’, 1或’columns’}, 默认值0
- 级别:整数, 级别名称或此类的序列, 默认值无。
当轴为MultiIndex(分层)时使用它, 因此它将按一个或多个特定级别分组。
- as_index:布尔值, 默认为True
它返回带有组标签的对象作为聚合输出的索引。 - 排序:布尔值, 默认为True
用于对组键进行排序。关闭此功能可获得更好的性能。
注意:它不会影响每个组中观察的顺序。 Groupby保留每个组中行的顺序。
- group_keys:bool, 默认值为True
当我们调用它时, 它将组密钥添加到索引中以识别片段。
- 已观察到:布尔值, 默认值为False
仅当任何石斑鱼为分类者时, 才使用它。如果该值为True, 则它将仅显示分类石斑鱼的观测值。否则, 它将显示其所有值。 - **夸克
它是一个可选参数, 仅接受传递给groupby的关键字参数” mutated”。
退货
它返回DataFrameGroupBy或SeriesGroupBy。返回值取决于由有关组的信息组成的调用对象。
例子
import pandas as pd
info = pd.DataFrame({'Name': ['Parker', 'Smith', 'John', 'William'], 'Percentage': [92., 98., 89., 86.]})
info
输出
例子
# import the pandas library
import pandas as pd
data = {'Name': ['Parker', 'Smith', 'John', 'William'], 'Percentage': [82, 98, 91, 87], }
info = pd.DataFrame(data)
print (info)
输出
Name Percentage
0 Parker 82
1 Smith 98
2 John 91
3 William 87
来源:
https://www.srcmini02.com/30941.html