<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知識(shí)點(diǎn)-索引和切片操作

          共 2044字,需瀏覽 5分鐘

           ·

          2021-03-05 12:16



          索引和切片操作是最基本最常用的數(shù)據(jù)處理操作,Pandas中的索引和切片操作基于Python的語言特性,支持類似于numpy中的操作,也可以使用行標(biāo)簽、列標(biāo)簽以及行標(biāo)簽與列標(biāo)簽的組合來進(jìn)行索引和切片操作。


          本文使用的數(shù)據(jù)來源于網(wǎng)易財(cái)經(jīng),具體下載方式可以參考:Pandas知識(shí)點(diǎn)-DataFrame數(shù)據(jù)結(jié)構(gòu)介紹


          前面介紹DataFrame和Series的文章中,代碼是在Pycharm中編寫的,本文和后面介紹Pandas的文章,代碼會(huì)優(yōu)先在Jupyter Notebook中編寫。Jupyter Notebook的安裝可以參考:Jupyter Notebook的安裝和使用


          一、數(shù)據(jù)讀取


          數(shù)據(jù)文件是600519.csv,將此文件放到代碼同級(jí)目錄下,從文件中讀取出數(shù)據(jù)。



          為了避免數(shù)據(jù)量太大,只取了前5行數(shù)據(jù)。查看讀取的數(shù)據(jù),列還是很多,為了讓數(shù)據(jù)再精簡(jiǎn)一點(diǎn),接下來將后面幾列刪除。默認(rèn)的行索引是數(shù)值索引,為了方便后面演示索引操作,設(shè)置日期為索引。



          處理后的數(shù)據(jù)如上圖,這樣看起來簡(jiǎn)潔了很多。


          二、讀取一列數(shù)據(jù)或一行數(shù)據(jù)


          1. 讀取一列數(shù)據(jù)



          獲取DataFrame中的一列數(shù)據(jù)有兩種方式,第一種是用 data['列索引'] ,如 data['收盤價(jià)'] 可以獲取收盤價(jià)這一列的數(shù)據(jù)。第二種是 data.列索引 的方式,如 data.收盤價(jià) 與 data['收盤價(jià)'] 的結(jié)果相同。


          第一種方式是通用的方式,對(duì)于任意DataFrame都適用。第二種方式除了支持英文的索引名,也支持中文的索引名,但是如果英文的索引名與Python關(guān)鍵字(如class,list)同名,會(huì)報(bào)錯(cuò),只能用第一種方式來取數(shù)據(jù)。


          2. 讀取一行數(shù)據(jù)


          獲取DataFrame中的一行數(shù)據(jù)時(shí),不能直接用 data['行索引'] 或 data.行索引 的方式。


          獲取行數(shù)據(jù)也有兩種方式,需要借助loc屬性或iloc屬性。loc屬性基于行索引名獲取數(shù)據(jù),用法為 data.loc['行索引'] ,如 data.loc['2021-02-19'] 可以獲取2021年2月19日的交易數(shù)據(jù)。iloc屬性基于數(shù)值索引獲取數(shù)據(jù),用法為 data.iloc[數(shù)值] ,如 data.iloc[0] 是獲取DataFrame中的第一行數(shù)據(jù),與 data.loc['2021-02-19'] 結(jié)果相同。


          三、讀取指定位置的數(shù)據(jù)



          Pandas中獲取指定位置數(shù)據(jù)的索引方式默認(rèn)是“先列后行”,這與numpy中ndarray的索引方式“先行后列”是相反的。在Pandas中,取數(shù)據(jù)的邏輯通常是先獲取某一列數(shù)據(jù),然后再取這列數(shù)據(jù)中的某個(gè)數(shù)據(jù),所以默認(rèn)采用了“先列后行”的方式,如果順序反了會(huì)報(bào)錯(cuò)。



          除了用“先列后行”的方式獲取數(shù)據(jù),如果想用“先行后列”的方式獲取數(shù)據(jù),可以借助loc屬性或iloc屬性來實(shí)現(xiàn)。loc屬性是基于索引名來獲取數(shù)據(jù)的,在loc中的行索引和列索引都要使用索引名,iloc屬性是基于數(shù)值索引來獲取數(shù)據(jù)的,在iloc中的行索引和列索引都要使用數(shù)值索引。同時(shí),loc屬性和iloc屬性都只支持“先行后列”,順序不能反。


          四、DataFrame的索引轉(zhuǎn)換



          在使用loc屬性和iloc屬性時(shí),行索引和列索引必須同時(shí)為索引名或同時(shí)為數(shù)值索引,所以,經(jīng)常需要對(duì)索引名和數(shù)值索引互相轉(zhuǎn)換。


          使用DataFrame的index屬性和columns屬性可以得到行索引和列索引,在后面?zhèn)魅雽?duì)應(yīng)的數(shù)值就可以將數(shù)值索引轉(zhuǎn)換成索引名。鏈?zhǔn)秸{(diào)用index屬性和columns屬性的get_indexer()方法,就可以將索引名轉(zhuǎn)換成數(shù)值索引,get_indexer()中傳入需要轉(zhuǎn)換的索引名列表,即使只轉(zhuǎn)換一個(gè)索引名,也要用列表的方式傳入。



          如果需要同時(shí)轉(zhuǎn)換多個(gè)索引名,可以在列表中添加,列表中的順序可以不遵守index和columns的先后順序,返回結(jié)果是一一對(duì)應(yīng)的數(shù)值索引數(shù)組。


          五、切片



          DataFrame的切片操作也要使用loc屬性和iloc屬性,不能直接用 data[:][:] 或 data[:, :] 的方式。loc中傳入需要切片的行索引和列索引的索引名,iloc中傳入需要切片的行索引和列索引的數(shù)值索引范圍。


          使用iloc進(jìn)行切片操作時(shí),切片規(guī)則與Python基本的切片規(guī)則相同,傳入的切片索引是左閉右開的(包含起始值,不包含結(jié)束值)。



          上面的索引互相轉(zhuǎn)換方法,可以靈活地在切片中使用,在使用loc時(shí)將數(shù)值索引轉(zhuǎn)換成索引名,在使用iloc時(shí)將索引名轉(zhuǎn)換成數(shù)值索引。


          以上就是Pandas中的索引和切片基本操作介紹,如果需要獲取數(shù)據(jù)和代碼,可以點(diǎn)擊關(guān)注公眾號(hào)“Python碎片”,然后在后臺(tái)回復(fù)“pandas03”關(guān)鍵字獲取本文代碼和數(shù)據(jù)。


          瀏覽 36
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  欧美日韩毛 | 青青草成人影院 | 夜夜爽AV | 深爱激情丁香伊人 | 俺来也俺也射 |