乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      【python】DataFrame.groupby()聚合,分組級(jí)運(yùn)算

       LibraryPKU 2019-08-19

      pandas提供了一個(gè)靈活高效的groupby功能,它使你能以一種自然的方式對(duì)數(shù)據(jù)集進(jìn)行切片、切塊、摘要

      等操作。根據(jù)一個(gè)或多個(gè)鍵(可以是函數(shù)、數(shù)組或DataFrame列名)拆分pandas對(duì)象。計(jì)算分組摘要統(tǒng)

      計(jì),如計(jì)數(shù)、平均值、標(biāo)準(zhǔn)差,或用戶自定義函數(shù)。對(duì)DataFrame的列應(yīng)用各種各樣的函數(shù)。應(yīng)用組內(nèi)轉(zhuǎn)換

      或其他運(yùn)算,如規(guī)格化、線性回歸、排名或選取子集等。計(jì)算透視表或交叉表。執(zhí)行分位數(shù)分析以及其他分

      組分析。

      groupby分組函數(shù):

        返回值:返回重構(gòu)格式的DataFrame,特別注意,groupby里面的字段內(nèi)的數(shù)據(jù)重構(gòu)后都會(huì)變成索引

        groupby(),一般和sum()、mean()一起使用,如下例:

      先自定義生成數(shù)組

      import pandas as pd
      df = pd.DataFrame({'key1':list('ababa'),
                        'key2': ['one','two','one','two','one'],
                        'data1': np.random.randn(5),
                        'data2': np.random.randn(5)})
      print(df)
      
            data1     data2 key1 key2
      0 -1.313101 -0.453361    a  one
      1  0.791463  1.096693    b  two
      2  0.462611  1.150597    a  one
      3 -0.216121  1.381333    b  two
      4  0.077367 -0.282876    a  one

      應(yīng)用groupby,分組鍵均為Series(譬如df[‘xx’]),實(shí)際上分組鍵可以是任何長(zhǎng)度適當(dāng)?shù)臄?shù)組

      #將df['data1']按照分組鍵為df['key1']進(jìn)行分組
      grouped=df['data1'].groupby(df['key1'])
      print(grouped.mean())
      
      key1
      a   -0.257707
      b    0.287671
      Name: data1, dtype: float64
      
      states=np.array(['Ohio','California','California','Ohio','Ohio'])
      years=np.array([2005,2005,2006,2005,2006])
      #states第一層索引,years第二層分層索引
      print(df['data1'].groupby([states,years]).mean())
      California  2005    0.791463
                  2006    0.462611
      Ohio        2005   -0.764611
                  2006    0.077367
      Name: data1, dtype: float64
      
      
      #df根據(jù)‘key1’分組,然后對(duì)df剩余數(shù)值型的數(shù)據(jù)運(yùn)算
      df.groupby('key1').mean()
               data1     data2
      key1                    
      a    -0.257707  0.138120
      b     0.287671  1.239013
      #可以看出沒(méi)有key2列,因?yàn)閐f[‘key2’]不是數(shù)值數(shù)據(jù),所以被從結(jié)果中移除。默認(rèn)情況下,所有數(shù)值列都會(huì)被聚合,雖然有時(shí)可能被過(guò)濾為一個(gè)子集。

      對(duì)分組進(jìn)行迭代

      #name就是groupby中的key1的值,group就是要輸出的內(nèi)容
      for name, group in df.groupby('key1'):
              print (name,group)
      
      a       data1     data2 key1 key2
      0 -1.313101 -0.453361    a  one
      2  0.462611  1.150597    a  one
      4  0.077367 -0.282876    a  one
      b       data1     data2 key1 key2
      1  0.791463  1.096693    b  two
      3 -0.216121  1.381333    b  two

      對(duì)group by后的內(nèi)容進(jìn)行操作,可轉(zhuǎn)換成字典

      #轉(zhuǎn)化為字典
      piece=dict(list(df.groupby('key1')))
      
      {'a':       data1     data2 key1 key2
       0 -1.313101 -0.453361    a  one
       2  0.462611  1.150597    a  one
       4  0.077367 -0.282876    a  one, 'b':       data1     data2 key1 key2
       1  0.791463  1.096693    b  two
       3 -0.216121  1.381333    b  two}
      #對(duì)字典取值
      value = piece['a']

      groupby默認(rèn)是在axis=0上進(jìn)行分組的,通過(guò)設(shè)置也可以在其他任何軸上進(jìn)行分組

      grouped=df.groupby(df.dtypes, axis=1)
      value = dict(list(grouped))
      print(value)
      
      {dtype('float64'):       data1     data2
      0 -1.313101 -0.453361
      1  0.791463  1.096693
      2  0.462611  1.150597
      3 -0.216121  1.381333
      4  0.077367 -0.282876, dtype('O'):   key1 key2
      0    a  one
      1    b  two
      2    a  one
      3    b  two
      4    a  one}

      對(duì)于大數(shù)據(jù),很多情況是只需要對(duì)部分列進(jìn)行聚合

      #對(duì)df進(jìn)行'key1','key2'的兩次分組,然后取data2的數(shù)據(jù),對(duì)兩次細(xì)分的分組數(shù)據(jù)取均值
      value = df.groupby(['key1','key2'])[['data2']].mean()
      
                    data2
      key1 key2          
      a    one   0.138120
      b    two   1.239013
      ----------------------------------
      df
      Out[1]: 
            data1     data2 key1 key2
      0 -1.313101 -0.453361    a  one
      1  0.791463  1.096693    b  two
      2  0.462611  1.150597    a  one
      3 -0.216121  1.381333    b  two
      4  0.077367 -0.282876    a  one
      ----------------------------------
      
      df['key2'].iloc[-1] ='two'
      
      value = df.groupby(['key1','key2'])[['data2']].mean()
      
      value
      Out[2]: 
                    data2
      key1 key2          
      a    one   0.348618
           two  -0.282876
      b    two   1.239013

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多