官方文档语法格式:
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=_NoDefault.no_default, squeeze=_NoDefault.no_default, observed=False, dropna=True)
其中有很多参数,具体参数含义可参考官方文档:
作用就是对DataFrame进行分组,可以单类分组,也可以多类分组
使用单特征对数据进行分类:
in:
import pandas as pd
import numpy as np
df = pd.DataFrame({'key1':list('aabba'),'key2':[1,2,1,2,1],'data1':np.random.randn(5),'data2':np.random.randn(5)})
df
out:
key1 key2 data1 data2
0 a 1 -1.682936 0.888643
1 a 2 -1.620872 -0.071639
2 b 1 -0.556014 0.222129
3 b 2 -0.643906 0.067793
4 a 1 -0.189291 0.411055
in:
grouped = df.groupby(['key1'])
for i,j in grouped:
print(i)
print(j)
out:
a
key1 key2 data1 data2
0 a 1 -1.682936 0.888643
1 a 2 -1.620872 -0.071639
4 a 1 -0.189291 0.411055
b
key1 key2 data1 data2
2 b 1 -0.556014 0.222129
3 b 2 -0.643906 0.067793
注意:groupby函数产生的结果是个迭代器,若打印输出data.groupby([‘分组字段’])的结果可能会运行处以下结果:
in:
df.groupby(['key1'])
out:
<pandas.core.groupby.generic.dataframegroupby object at 0x00000235860555b0></pandas.core.groupby.generic.dataframegroupby>
要输出具体的结果详情可以用for循环读取(参考下文举例中的代码),其中每个分组结果中包含 分组名称(下文举例代码中:name)和分组记录(下文举例代码中:group)
根据多特征进行划分
in:
grouped2 = df.groupby(['key1','key2'])
for name,group in grouped2:
print(f"划分的依据为: {name}")
print(group)
out:
划分的依据为: ('a', 1)
key1 key2 data1 data2
0 a 1 -1.682936 0.888643
4 a 1 -0.189291 0.411055
划分的依据为: ('a', 2)
key1 key2 data1 data2
1 a 2 -1.620872 -0.071639
划分的依据为: ('b', 1)
key1 key2 data1 data2
2 b 1 -0.556014 0.222129
划分的依据为: ('b', 2)
key1 key2 data1 data2
3 b 2 -0.643906 0.067793
对DataFrame中的部分数据进行划分
in:
for name,group in df[['data1','data2','key1']].groupby(['key1']):
print(name)
print(group)
out:
a
data1 data2 key1
0 -1.682936 0.888643 a
1 -1.620872 -0.071639 a
4 -0.189291 0.411055 a
b
data1 data2 key1
2 -0.556014 0.222129 b
3 -0.643906 0.067793 b
Original: https://blog.csdn.net/m0_73598509/article/details/127171250
Author: 起风了xxx
Title: [Pandas]Groupby函数
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/743862/
转载文章受原作者版权保护。转载请注明原作者出处!