Pandas 数据聚合
在本文中,我们将介绍Pandas中的数据聚合。数据聚合是一种常见的数据转换方式,通过聚合计算可得到数据的总体特征。Pandas提供了强大的聚合函数和灵活的组合操作,能够快速地处理大规模的数据集。
阅读更多:Pandas 教程
Pandas中的聚合函数
Pandas中的聚合函数可以分为两类:基于Series的函数,和基于DataFrame的函数。其中,基于Series的函数适用于单列数据的聚合计算,如求取最大值、最小值、总数、均值等;而基于DataFrame的函数则适用于多列数据的复杂聚合计算,如分组、统计等。
基于Series的聚合函数
Pandas中的聚合函数有很多种,常用的有以下几种:
sum()函数:计算数据的总和。
import pandas as pd
data = pd.Series([1, 2, 3, 4, 5])
print(data.sum()) # 输出15
mean()函数:计算数据的平均值。
import pandas as pd
data = pd.Series([1, 2, 3, 4, 5])
print(data.mean()) # 输出3.0
min()函数:计算数据的最小值。
import pandas as pd
data = pd.Series([1, 2, 3, 4, 5])
print(data.min()) # 输出1
max()函数:计算数据的最大值。
import pandas as pd
data = pd.Series([1, 2, 3, 4, 5])
print(data.max()) # 输出5
count()函数:计算数据的数据数量。
import pandas as pd
data = pd.Series([1, 2, 3, 4, 5])
print(data.count()) # 输出5
median()函数:计算数据的中位数。
import pandas as pd
data = pd.Series([1, 2, 3, 4, 5])
print(data.median()) # 输出3.0
基于DataFrame的聚合函数
在基于DataFrame的聚合函数中,最常用的是groupby函数。groupby函数将数据按照某些条件分组,然后对每一组数据求取聚合函数。
import pandas as pd
data = pd.DataFrame({
'group': ['A', 'B', 'C', 'A', 'B', 'C'],
'value': [1, 2, 3, 4, 5, 6]
})
# 按照group列分组后,对每一组求取均值
print(data.groupby('group').mean())
"""
输出:
value
group
A 2.50
B 3.50
C 4.50
"""
# 按照group列分组后,对每一组求取最大值
print(data.groupby('group').max())
"""
输出:
value
group
A 4
B 5
C 6
"""
groupby函数支持多列分组、多个聚合函数等复杂操作。详细使用方法请参考Pandas官方文档。
Pandas中的聚合操作
除了聚合函数,Pandas还提供了许多强大的聚合操作,可以通过组合、过滤、转换等多种操作方式,实现多样化的聚合计算,如下所示:
组合操作
组合操作是指在数据中添加、删除、修改数据,然后进行聚合计算的操作。常用的组合操作包括concat、join和merge等。
import pandas as pd
# 定义两个数据集
data1 = pd.DataFrame({
'key': ['K0', 'K1', 'K2', 'K3'],
'A': ['A0', 'A1', 'A2', 'A3']
})
data2 = pd.DataFrame({
'key': ['K0', 'K1', 'K2', 'K3'],
'B': ['B0', 'B1', 'B2', 'B3']
})
# 按照key列进行连接
result = pd.merge(data1, data2, on='key')
print(result)
"""
输出:
key A B
0 K0 A0 B0
1 K1 A1 B1
2 K2 A2 B2
3 K3 A3 B3
"""
过滤操作
过滤操作是指在数据中根据特定条件,筛选出需要的数据进行聚合计算的操作。常用的过滤操作包括filter和where两种方法。
import pandas as pd
# 定义一个数据集
data = pd.DataFrame({
'group': ['A', 'B', 'C', 'A', 'B', 'C'],
'value': [1, 2, 3, 4, 5, 6]
})
# 按照group进行分组后,对value列进行过滤操作
result = data.groupby('group').filter(lambda x: x['value'].mean() > 3)
print(result)
"""
输出:
group value
1 B 2
2 C 3
4 B 5
5 C 6
"""
转换操作
转换操作是指在数据中对特定列进行计算,并将计算结果合并到原有数据中进行聚合计算的操作。常用的转换操作包括apply、transform等方法。
import pandas as pd
# 定义一个数据集
data = pd.DataFrame({
'group': ['A', 'B', 'C', 'A', 'B', 'C'],
'value': [1, 2, 3, 4, 5, 6]
})
# 按照group进行分组后,对value列进行转换操作
result = data.groupby('group').apply(lambda x: x['value'] - x['value'].mean())
print(result)
"""
输出:
0 -1.5
1 -0.5
2 0.5
3 0.5
4 1.5
5 0.5
dtype: float64
"""
总结
本文介绍了Pandas中的数据聚合操作,包括基于Series的聚合函数、基于DataFrame的聚合函数、组合操作、过滤操作和转换操作。这些操作的灵活组合可以实现丰富多样的数据聚合计算,是Pandas中重要的数据处理方法之一。
极客笔记