<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          pandas中apply與map的異同

          共 2115字,需瀏覽 5分鐘

           ·

          2020-09-01 05:58


          ◆?◆?◆ ?◆?



          前言


          pandas作為數(shù)據(jù)處理與分析的利器,它的江湖地位非同小可。在我們數(shù)據(jù)處理與分析過程中,有時(shí)候需要對某一列的每一個(gè)值都進(jìn)行處理,這時(shí)候推薦大家使用apply或者map。


          但是,二者又有啥區(qū)別呢?一起來通過幾個(gè)小例子學(xué)習(xí)一下吧。


          APPLY


          一、直接使用內(nèi)置函數(shù)或者numpy函數(shù)

          # 數(shù)據(jù)展示>>> dfOut[1]:    姓名  年齡0   alan  191  black  152   cici  233  david  224   eric  18
          #?計(jì)算字符長度>>> df['姓名'].apply(len)Out[2]:?0 41 52 43 54 4Name: 姓名, dtype: int64
          # 計(jì)算平方>>> df['年齡'].apply(np.square)Out[3]:?0 3611 2252 5293 4844 324Name: 年齡, dtype: int64

          二、使用lambda匿名函數(shù)

          #?根據(jù)年齡打標(biāo)簽:是否成年>>> df['年齡'].apply(lambda?x:?'已成年'?if?x>=18?else?'未成年')Out[4]:?0    已成年1    未成年2    已成年3    已成年4    已成年Name: 年齡, dtype: object
          #?修改姓名為首字母大寫>>> df['姓名'].apply(lambda?x:?x.title())Out[5]:?0 Alan1 Black2 Cici3 David4 EricName: 姓名, dtype: object


          三、使用def自定義函數(shù)
          # 自定義函數(shù)def fn(x):    if x >=18:        return '成年人'    else:        return '未成年'
          # 自定義函數(shù)作為apply參數(shù)??????>>> df['年齡'].apply(fn)Out[6]:?0 成年人1 未成年2 成年人3 成年人4 成年人Name: 年齡, dtype: object

          需要注意的是,apply不僅可以用于Series,還可用于DataFrame,具體可以根據(jù)自己的業(yè)務(wù)需要,及數(shù)據(jù)處理規(guī)范來使用即可。


          MAP


          一、直接使用內(nèi)置函數(shù)或者numpy函數(shù)
          # 計(jì)算字符長度>>> df['姓名'].map(len)Out[7]:?0    41    52    43    54    4Name: 姓名, dtype: int64
          # 計(jì)算平方>>> df['年齡'].map(np.square)Out[8]:?0 3611 2252 5293 4844 324Name: 年齡, dtype: int64


          二、使用lambda匿名函數(shù)
          # 根據(jù)年齡打標(biāo)簽:是否成年>>>?df['年齡'].map(lambda?x:?'已成年'?if?x>=18?else?'未成年')Out[9]:?0    已成年1    未成年2    已成年3    已成年4    已成年Name: 年齡, dtype: object
          # 修改姓名為首字母大寫>>>?df['姓名'].map(lambda?x:?x.title())Out[10]:?0 Alan1 Black2 Cici3 David4 EricName: 姓名, dtype: object

          三、使用def自定義函數(shù)

          #?自定義函數(shù)作為map參數(shù)??????>>> df['年齡'].map(fn)Out[11]:?0    成年人1    未成年2    成年人3    成年人4    成年人Name: 年齡, dtype: object


          四、使用dict作為map參數(shù)

          # apply沒有這種功能!>>> df['姓名'].map({'alan':'女','black':'男','cici':'女','david':'男','eric':'男'})Out[12]:?01234Name: 姓名, dtype: object



          通過上面的小例子講解,我們可以得出以下結(jié)論:
          (1)map、apply在用于Series時(shí),對每一個(gè)值進(jìn)行處理,兩者并沒有什么區(qū)別。(是否受數(shù)據(jù)量影響可以自行驗(yàn)證)
          (2)apply不僅可以用于Series,還可以用于DataFrame;而map只能用于Series。
          (3)一般情況下,apply應(yīng)用更廣泛,尤其是自定義函數(shù)帶多個(gè)參數(shù)時(shí),建議使用apply。



          記得點(diǎn)在看~祝大家一夜暴富,基金、股票一片紅~



          在看”的永遠(yuǎn)18歲~
          瀏覽 46
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  97精品 | 日本东京热无码视频 | 国产一级AV国产免费 | 国产裸体网站 | 77777色婷婷 |