11-python-pandas-groupby
11. Pandas高级教程之:GroupBy用法
简介
pandas中的DF数据类型可以像数据库表格一样进行groupby操作。通常来说groupby操作可以分为三部分:分割数据,应用变换和和合并数据。
本文将会详细讲解Pandas中的groupby操作。
分割数据
分割数据的目的是将DF分割成为一个个的group。为了进行groupby操作,在创建DF的时候需要指定相应的label:
df = pd.DataFrame(
...: {
...: "A": ["foo", "bar", "foo", "bar", "foo", "bar", "foo", "foo"],
...: "B": ["one", "one", "two", "three", "two", "two", "one", "three"],
...: "C": np.random.randn(8),
...: "D": np.random.randn(8),
...: }
...: )
...:
df
Out[61]:
A B C D
0 foo one -0.490565 -0.233106
1 bar one 0.430089 1.040789
2 foo two 0.653449 -1.155530
3 bar three -0.610380 -0.447735
4 foo two -0.934961 0.256358
5 bar two -0.256263 -0.661954
6 foo one -1.132186 -0.304330
7 foo three 2.129757 0.445744默认情况下,groupby的轴是x轴。可以一列group,也可以多列group:
多index
在0.24版本中,如果我们有多index,可以从中选择特定的index进行group:
get_group
get_group 可以获取分组之后的数据:
dropna
默认情况下,NaN数据会被排除在groupby之外,通过设置 dropna=False 可以允许NaN数据:
groups属性
groupby对象有个groups属性,它是一个key-value字典,key是用来分类的数据,value是分类对应的值。
index的层级
对于多级index对象,groupby可以指定group的index层级:
group第一级:
group第二级:
group的遍历
得到group对象之后,我们可以通过for语句来遍历group:
如果是多字段group,group的名字是一个元组:
聚合操作
分组之后,就可以进行聚合操作:
对于多index数据来说,默认返回值也是多index的。如果想使用新的index,可以添加 as_index = False:
上面的效果等同于reset_index
grouped.size() 计算group的大小:
grouped.describe() 描述group的信息:
通用聚合方法
下面是通用的聚合方法:
mean()
平均值
sum()
求和
size()
计算size
count()
group的统计
std()
标准差
var()
方差
sem()
均值的标准误
describe()
统计信息描述
first()
第一个group值
last()
最后一个group值
nth()
第n个group值
min()
最小值
max()
最大值
同时使用多个聚合方法
可以同时指定多个聚合方法:
可以重命名:
NamedAgg
NamedAgg 可以对聚合进行更精准的定义,它包含 column 和aggfunc 两个定制化的字段。
或者直接使用一个元组:
不同的列指定不同的聚合方法
通过给agg方法传入一个字典,可以指定不同的列使用不同的聚合:
转换操作
转换是将对象转换为同样大小对象的操作。在数据分析的过程中,经常需要进行数据的转换操作。
可以接lambda操作:
填充na值:
过滤操作
filter方法可以通过lambda表达式来过滤我们不需要的数据:
Apply操作
有些数据可能不适合进行聚合或者转换操作,Pandas提供了一个 apply 方法,用来进行更加灵活的转换操作。
可以外接函数:
最后更新于
这有帮助吗?