<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>

          50個Pandas的奇淫技巧:一網(wǎng)打盡各種索引 iloc,loc,ix,iat,at…

          共 4622字,需瀏覽 10分鐘

           ·

          2022-05-25 04:45


          數(shù)據(jù)處理,也是風(fēng)控非常重要的一個環(huán)節(jié),甚至說是模型成敗的關(guān)鍵環(huán)節(jié)。因此,嫻熟簡潔的數(shù)據(jù)處理技巧,是提高建模效率和建模質(zhì)量的必要能力。這里開個專題,總結(jié)下Pandas的使用方法,方便大家,也方便自己查閱。

          這個專題叫做:【50個Pandas的奇淫技巧】,今天這個算是第一講,后續(xù)慢慢更新。

          一、Pandas索引概述

          很多人在使用Pandas處理數(shù)據(jù)時,總會迷失在data[]、iloc()、loc()、ix()中,似乎記得,又似乎不記得,每到用時都需要百度,不知所以然的解決了問題,下次繼續(xù)百度,記憶點基本上非?;靵y??偨Y(jié)本文,希望能解決這個問題,通過一個簡單的案例徹底搞明白這幾種索引方法到底有什么區(qū)別。

          日常使用中,推薦使用loc和iloc進(jìn)行索引,loc是指location的意思,iloc中的 i 是指integer,這兩個方法容易混淆,可以使用特殊方式來加強(qiáng)記憶。

          iloc:基于位置,用行號、列號進(jìn)行索引,i 可以看著 int,因此 iloc 只能用整數(shù) 來索引,例如data.iloc[0:2,:]

          loc :基于標(biāo)簽,用行名、列名進(jìn)行索引,數(shù)據(jù)的index經(jīng)常為整數(shù),因此 loc 的使用范圍要遠(yuǎn)高于iloc,loc可以使用整數(shù)切片、名稱(index,columns)索引、也可以切片和名稱混合使用。例如:data.loc[0:5:,'row1':'row2']

          我們簡單構(gòu)造一個數(shù)據(jù)集,在下面的案例中需要用到。

          import pandas as pdimport numpy  as npdata = pd.DataFrame(np.arange(25).reshape(5, 5),                   index = ['row1', 'row2','row3','row4','row5'],                   columns=['col1', 'col2','col3','col4','col5'])data       col1  col2  col3  col4  col5row1     0     1     2     3     4row2     5     6     7     8     9row3    10    11    12    13    14row4    15    16    17    18    19row5    20    21    22    23    24

          創(chuàng)建的表格數(shù)據(jù)如下:


          二、直接用列名索引

          取一列:data['col1'] ,即取得第一列,得到的是一個Series對象。

          取多列:data[['col1','col2']] ,即取得第一列、第二列,得到的是一個DataFrame對象。

          注 意:用data['row1'] 、data[0]、data[:,0]、data[0,:]、data[:,'col1':'col2'] 統(tǒng)統(tǒng)都會報錯的,這類命令只能用來按列名取一列或多列。

          data['col1']row1     0row2     5row3    10row4    15row5    20

          data[['col1','col2']]       col1  col2row1     0     1row2     5     6row3    10    11row4    15    16row5    20    21
          #下面的命令直接應(yīng)用都會報錯,但是用loc 和 iloc 就不會報錯data['row1']data[0]data[:,0]data[0,:]data[:,'col1':'col2'] #TypeError: '(slice(None, None, None), 0)' is an invalid ke


          三、直接用行號索引

          data[0:2] 代表取得第0行和第1行,不包含最后一個。

          注 意:只取一行的話,要用data[0:1],不能用data[0],data[0:2,]也會報錯

          data[0:2]      col1  col2  col3  col4  col5row1     0     1     2     3     4row2     5     6     7     8     9


          四、iloc按行號、列號索引

          官方:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html

          1、行索引

          1)取一行 :data.iloc[0] 、data.iloc[0,:]

          2)取多行 :data.iloc[[0,2]] 、data.iloc[[0,2],:]

          3)取連續(xù)多行 :data.iloc[0:2] 、data.iloc[0:2,:]

          2、列索引

          4)取一列 :data.iloc[:,0]

          5)取多列 :data.iloc[:,[0,2]]、data.iloc[:,[0,2]]

          6)取連續(xù)多列 :data.iloc[:,0:2]

          注 意:

          取行的時候可以不提列,也可以用 ",:" 來指全列

          取列的時候必須用":,"來指定全行。

          可以使用一個數(shù)字來代表一個,可以使用一個列表[a,b]代表多個,也可以使用a:b代表連續(xù)多個。

          data.iloc[0]col1    0col2    1col3    2col4    3col5    4

          data.iloc[:,2:4]      col3  col4row1     2     3row2     7     8row3    12    13row4    17    18row5    22    23

          data.iloc[:,[2,4]]      col3  col5row1     2     4row2     7     9row3    12    14row4    17    19row5    22    24


          五、loc按行名、列名索引

          官方網(wǎng)址:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html

          1、行索引

          取一行:data.loc['row1'] 、data.loc['row1',:]

          取多行:data.loc[['row1','row2']] 、data.loc[['row1','row2'],:]

          取連續(xù)多行:data.loc['row1':'row2'] 、data.loc['row1':'row2',:]

          2、列索引

          取一列:data.loc[:,'col1']

          取多列:data.loc[:,['row1','row2']]

          取連續(xù)多列:data.loc[:,'row1':'row2']

          注 意:

          取行的時候可以不提列,也可以用",:"來指全列。

          取列的時候必須用":,"來指定全行。

          可以使用一個數(shù)字來代表一個,可以使用一個list ['a','b']代表多個,也可以使用'a':'b'代表連續(xù)多個。

          data.loc[:,'col1':'col3']       col1  col2  col3row1     0     1     2row2     5     6     7row3    10    11    12row4    15    16    17row5    20    21    22

          data.loc[:,['col1','col3']]      col1  col3row1     0     2row2     5     7row3    10    12row4    15    17row5    20    22

          #當(dāng)索引為整數(shù)時,可以用整數(shù)進(jìn)行索引data = pd.DataFrame(np.arange(25).reshape(5, 5),                   columns=['col1', 'col2','col3','col4', 'col5'])   col1  col2  col3  col4  col50     0     1     2     3     41     5     6     7     8     92    10    11    12    13    143    15    16    17    18    194    20    21    22    23    24
          data.loc[0:3,'col1':'col3'] col1 col2 col30 0 1 21 5 6 72 10 11 123 15 16 17


          六、使用iat和at

          iat 和 at 只能取單個元素,iat 使用行、列索引,at 使用行、列名,但是其功能被 iloc 和 loc 包含,因此不推薦。

          data.iat[1,2] 7

          data.at['row4','col4'] 18


          七、最后總結(jié)(重點?。。。。?/span>

          正常情況下,推薦使用 iloc 和 loc。最核心的點記住,取行可以不提列,取列必須提行,可以用一個數(shù)字,一個list,或者一個區(qū)間來取行列。ix新版的已經(jīng)棄用了,所以可以不用太關(guān)注。




          推薦閱讀:

          入門:?最全的零基礎(chǔ)學(xué)Python的問題? |?零基礎(chǔ)學(xué)了8個月的Python??|?實戰(zhàn)項目?|學(xué)Python就是這條捷徑


          干貨:爬取豆瓣短評,電影《后來的我們》?|?38年NBA最佳球員分析?|? ?從萬眾期待到口碑撲街!唐探3令人失望? |?笑看新倚天屠龍記?|?燈謎答題王?|用Python做個海量小姐姐素描圖?|碟中諜這么火,我用機(jī)器學(xué)習(xí)做個迷你推薦系統(tǒng)電影


          趣味:彈球游戲? |?九宮格? |?漂亮的花?|?兩百行Python《天天酷跑》游戲!


          AI:?會做詩的機(jī)器人?|?給圖片上色?|?預(yù)測收入?|?碟中諜這么火,我用機(jī)器學(xué)習(xí)做個迷你推薦系統(tǒng)電影


          小工具:?Pdf轉(zhuǎn)Word,輕松搞定表格和水印!?|?一鍵把html網(wǎng)頁保存為pdf!|??再見PDF提取收費!?|?用90行代碼打造最強(qiáng)PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換?|?制作一款釘釘?shù)蛢r機(jī)票提示器!?|60行代碼做了一個語音壁紙切換器天天看小姐姐!



          年度爆款文案

          點閱讀原文,看B站我的視頻!

          瀏覽 49
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  久久麻豆电影 | 成人三级片在线免费观看 | 一级网站女人一级 | 免费观看全黄做爰的视频 | 久久人妖TS三区系列电影 |