在Pandas中, groupby()函数使无涯教程可以通过在实际数据集上利用它们来重新排列数据。它的主要任务是将数据分成不同的组。这些组基于一些标准进行分类。可以从任何轴划分对象。
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)
有多种方法可以将任何对象拆分为组,如下所示:
还可以向每个子集添加一些函数。可以对应用的函数执行以下操作:
它被定义为为每个组返回单个聚合值的函数。创建 groupby 对象时,可以对分组的数据执行多种汇总操作。
# import the pandas library import pandas as pd import numpy as np data = {'Name': ['Parker', 'Learnfk', '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', 'Learnfk', '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', 'Learnfk', '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 Learnfk 98 B.Ed 2 John 91 M.Phill 3 William 87 BA
它返回 DataFrameGroupBy 或 SeriesGroupBy 。返回值取决于由有关组的信息组成的调用对象。
示例
import pandas as pd info = pd.DataFrame({'Name': ['Parker', 'Learnfk','John', 'William'],'Percentage': [92., 98., 89., 86.]}) info
输出
示例
# import the pandas library import pandas as pd data = {'Name': ['Parker', 'Learnfk', 'John', 'William'], 'Percentage': [82, 98, 91, 87],} info = pd.DataFrame(data) print (info)
输出
Name Percentage 0 Parker 82 1 Learnfk 98 2 John 91 3 William 87
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)