📅  最后修改于: 2023-12-03 15:18:13.908000             🧑  作者: Mango
Pandas是一种流行的dataframe库,在Python数据科学和数据分析中广泛应用。其中一个最强大的功能是groupby操作,可以用来汇总、聚合和分组数据。下面介绍了Pandas groupby的基础知识和一些实际应用:
groupby操作通常涉及以下五个步骤:
下面是groupby的基础语法:
grouped = df.groupby(key)
grouped.size() # 统计每个组中的元素数目
grouped.mean() # 求每个组的平均值
grouped.sum() # 求每个组的和
grouped.apply(func) # 对每个组应用自定义函数func
其中key
是一个列名的string、多个列名的list或函数。例如,按照一个列的值进行groupby:
grouped = df.groupby('column_name')
按照多个列的值进行groupby:
grouped = df.groupby(['column1', 'column2'])
按照自定义函数进行groupby:
def func(x):
return x.column_name % 2 == 0
grouped = df.groupby(func)
groupby操作中最常用的函数是聚合函数,它们可以统计、聚合和汇总数据。下面是一些常用的聚合函数:
count()
:统计元素数目。sum()
:求和。mean()
:求平均值。median()
:求中位数。min()
:求最小值。max()
:求最大值。std()
:求标准差。var()
:求方差。describe()
:生成描述性统计量。这些聚合函数可以直接应用到分组对象上:
grouped = df.groupby('column_name')
grouped.mean()
如果需要同时应用多个聚合函数,可以使用agg()
函数:
grouped = df.groupby('column_name')
grouped.agg(['mean', 'std', 'max'])
除了聚合函数,还有一些转换函数可以应用到groupby对象上:
transform()
:将每个分组的数据转换为新的数据,例如标准化、归一化等。apply()
:对每个分组应用自定义函数。下面是一些使用转换函数的示例:
grouped = df.groupby('column_name')
def func(x):
return (x - x.mean()) / x.std()
grouped.transform(func)
grouped.apply(lambda x: x.column_name.mean())
groupby操作会创建一个分组对象,它可以通过迭代器进行迭代处理:
grouped = df.groupby('column_name')
for key, group in grouped:
print(key)
print(group)
除了基本的groupby操作,Pandas还提供了一些其他应用,例如:
pivot_table()
:用于数据透视表。crosstab()
:用于交叉表。rolling()
:用于滑动窗口计算。expanding()
:用于累计计算。下面是一些使用这些应用的示例:
pd.pivot_table(df, index='column1', columns='column2', values='value')
pd.crosstab(df.column1, df.column2)
df.rolling(window=3).mean()
df.expanding().sum()
Pandas groupby操作是一种强大的数据汇总、聚合和分组工具。通过指定key、应用聚合函数或转换函数、迭代groupby对象和使用其他应用,可以轻松地对数据进行分组和分析。