[Pandas]Groupby函数

官方文档语法格式:

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"&#x5212;&#x5206;&#x7684;&#x4F9D;&#x636E;&#x4E3A;&#xFF1A; {name}")
    print(group)

out:
&#x5212;&#x5206;&#x7684;&#x4F9D;&#x636E;&#x4E3A;&#xFF1A; ('a', 1)
  key1  key2     data1     data2
0    a     1 -1.682936  0.888643
4    a     1 -0.189291  0.411055
&#x5212;&#x5206;&#x7684;&#x4F9D;&#x636E;&#x4E3A;&#xFF1A; ('a', 2)
  key1  key2     data1     data2
1    a     2 -1.620872 -0.071639
&#x5212;&#x5206;&#x7684;&#x4F9D;&#x636E;&#x4E3A;&#xFF1A; ('b', 1)
  key1  key2     data1     data2
2    b     1 -0.556014  0.222129
&#x5212;&#x5206;&#x7684;&#x4F9D;&#x636E;&#x4E3A;&#xFF1A; ('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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球