pandas學習-task3

一、SAC過程
SAC指的是分組操作中的split-apply-combine過程
在該過程中,我們實際往往會遇到四類問題:
整合(Aggregation)——即分組計算統計量(如求均值、求每組元素個數)
變換(Transformation)——即分組對每個單元的數據進行操作(如元素標準化)
過濾(Filtration)——即按照某些規則篩選出一些組(如選出組內某一指標小於50的組)
綜合問題——即前面提及的三種問題的混合

二、groupby函數
1. groupby分組函數的基本內容
單/多列分組
經過groupby後會生成一個groupby對象,該對象本身不會返回任何東西,只有當相應的方法被調用纔會起作用。

grouped_single = df.groupby('School')
print(grouped_single)
print(grouped_single.get_group('S_1').head())

打印了School爲S_1的

     School Class Gender   Address  Height  Weight  Math Physics
ID                                                              
1101    S_1   C_1      M  street_1     173      63  34.0      A+
1102    S_1   C_1      F  street_2     192      73  32.5      B+
1103    S_1   C_1      M  street_2     186      82  87.2      B+
1104    S_1   C_1      F  street_2     167      81  80.4      B-
1105    S_1   C_1      F  street_4     159      64  84.8      B+

grouped_mul = df.groupby(['School','Class'])
grouped_mul.get_group(('S_2','C_4'))

根據多列分組

     School Class Gender   Address  Height  Weight  Math Physics
ID                                                              
2401    S_2   C_4      F  street_2     192      62  45.3       A
2402    S_2   C_4      M  street_7     166      82  48.7       B
2403    S_2   C_4      F  street_6     158      60  59.7      B+
2404    S_2   C_4      F  street_2     160      84  67.7       B
2405    S_2   C_4      F  street_6     193      54  47.6       B

組容量與組數
print('組容量與組數')
print(grouped_single.size())
print(grouped_mul.size())
print(grouped_single.ngroups)
print(grouped_mul.ngroups)

組容量與組數
School
S_1    15
S_2    20
dtype: int64
School  Class
S_1     C_1      5
        C_2      5
        C_3      5
S_2     C_1      5
        C_2      5
        C_3      5
        C_4      5
dtype: int64
2
7

組的遍歷:
for name,group in grouped_single:
    print(name)
    print(group)

    
S_1
     School Class Gender   Address  Height  Weight  Math Physics
ID                                                              
1101    S_1   C_1      M  street_1     173      63  34.0      A+
1102    S_1   C_1      F  street_2     192      73  32.5      B+
1103    S_1   C_1      M  street_2     186      82  87.2      B+
1104    S_1   C_1      F  street_2     167      81  80.4      B-
1105    S_1   C_1      F  street_4     159      64  84.8      B+
1201    S_1   C_2      M  street_5     188      68  97.0      A-
1202    S_1   C_2      F  street_4     176      94  63.5      B-
1203    S_1   C_2      M  street_6     160      53  58.8      A+
1204    S_1   C_2      F  street_5     162      63  33.8       B
1205    S_1   C_2      F  street_6     167      63  68.4      B-
1301    S_1   C_3      M  street_4     161      68  31.5      B+
1302    S_1   C_3      F  street_1     175      57  87.7      A-
1303    S_1   C_3      M  street_7     188      82  49.7       B
1304    S_1   C_3      M  street_2     195      70  85.2       A
1305    S_1   C_3      F  street_5     187      69  61.7      B-
S_2
     School Class Gender   Address  Height  Weight  Math Physics
ID                                                              
2101    S_2   C_1      M  street_7     174      84  83.3       C
2102    S_2   C_1      F  street_6     161      61  50.6      B+
2103    S_2   C_1      M  street_4     157      61  52.5      B-
2104    S_2   C_1      F  street_5     159      97  72.2      B+
2105    S_2   C_1      M  street_4     170      81  34.2       A
2201    S_2   C_2      M  street_5     193     100  39.1       B
2202    S_2   C_2      F  street_7     194      77  68.5      B+
2203    S_2   C_2      M  street_4     155      91  73.8      A+
2204    S_2   C_2      M  street_1     175      74  47.2      B-
2205    S_2   C_2      F  street_7     183      76  85.4       B
2301    S_2   C_3      F  street_4     157      78  72.3      B+
2302    S_2   C_3      M  street_5     171      88  32.7       A
2303    S_2   C_3      F  street_7     190      99  65.9       C
2304    S_2   C_3      F  street_6     164      81  95.5      A-
2305    S_2   C_3      M  street_4     187      73  48.9       B
2401    S_2   C_4      F  street_2     192      62  45.3       A
2402    S_2   C_4      M  street_7     166      82  48.7       B
2403    S_2   C_4      F  street_6     158      60  59.7      B+
2404    S_2   C_4      F  street_2     160      84  67.7       B
2405    S_2   C_4      F  street_6     193      54  47.6       B

level參數(用於多級索引)和axis參數
參數level,指明聚合的層級
print(df.set_index(['Gender','School']).groupby(level=1,axis=0).get_group('S_1').head()
level就是school,也可以直接用’school’——df.set_index(['Gender','School']).groupby(level='School',axis=0).get_group('S_1').head())

              Class   Address  Height  Weight  Math Physics
Gender School                                              
M      S_1      C_1  street_1     173      63  34.0      A+
F      S_1      C_1  street_2     192      73  32.5      B+
M      S_1      C_1  street_2     186      82  87.2      B+
F      S_1      C_1  street_2     167      81  80.4      B-
       S_1      C_1  street_4     159      64  84.8      B+

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章