溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何使用pandas進(jìn)行數(shù)據(jù)處理

發(fā)布時(shí)間:2020-09-16 13:57:45 來(lái)源:億速云 閱讀:211 作者:小新 欄目:編程語(yǔ)言

如何使用pandas進(jìn)行數(shù)據(jù)處理?這個(gè)問(wèn)題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見(jiàn)到的。希望通過(guò)這個(gè)問(wèn)題能讓你收獲頗深。下面是小編給大家?guī)?lái)的參考內(nèi)容,讓我們一起來(lái)看看吧!

在python中,今天我們開(kāi)始介紹一個(gè)新的常用的計(jì)算工具庫(kù),它就是大名鼎鼎的Pandas。

Pandas的全稱(chēng)是Python Data Analysis Library,是一種基于Numpy的科學(xué)計(jì)算工具。它最大的特點(diǎn)就是可以像是操作數(shù)據(jù)庫(kù)當(dāng)中的表一樣操作結(jié)構(gòu)化的數(shù)據(jù),所以它支持許多復(fù)雜和高級(jí)的操作,可以認(rèn)為是Numpy的加強(qiáng)版。它可以很方便地從一個(gè)csv或者是excel表格當(dāng)中構(gòu)建出完整的數(shù)據(jù),并支持許多表級(jí)別的批量數(shù)據(jù)計(jì)算接口。

安裝使用

和幾乎所有的Python包一樣,pandas也可以通過(guò)pip進(jìn)行安裝。如果你裝過(guò)Anaconda套件的話(huà),那么像是numpy、pandas等庫(kù)已經(jīng)自動(dòng)安裝好了,如果沒(méi)有安裝過(guò)也沒(méi)有關(guān)系,我們使用一行命令即可完成安裝。

pip install pandas復(fù)制代碼

和Numpy一樣,我們?cè)谑褂胮andas的時(shí)候通常也會(huì)給它起一個(gè)別名,pandas的別名是pd。所以使用pandas的慣例都是:

import pandas as pd復(fù)制代碼

如果你運(yùn)行這一行沒(méi)有報(bào)錯(cuò)的話(huà),那么說(shuō)明你的pandas已經(jīng)安裝好了。一般和pandas經(jīng)常一起使用的還有另外兩個(gè)包,其中一個(gè)也是科學(xué)計(jì)算包叫做Scipy,另外一個(gè)是對(duì)數(shù)據(jù)進(jìn)行可視化作圖的工具包,叫做Matplotlib。我們也可以使用pip將這兩個(gè)包一起安裝了,在之后的文章當(dāng)中,用到這兩個(gè)包的時(shí)候,也會(huì)簡(jiǎn)單介紹一下它們的用法。

pip install scipy matplotlib復(fù)制代碼

Series 索引

在pandas當(dāng)中我們最常用的數(shù)據(jù)結(jié)構(gòu)有兩個(gè),一個(gè)是Series另外一個(gè)是DataFrame。其中series是一維數(shù)據(jù)結(jié)構(gòu),可以簡(jiǎn)單理解成一維數(shù)組或者是一維向量。而DataFrame自然就是二維數(shù)據(jù)結(jié)構(gòu)了,可以理解成表或者是二維數(shù)組。

我們先來(lái)看看Series,Series當(dāng)中存儲(chǔ)的數(shù)據(jù)主要有兩個(gè),一個(gè)是一組數(shù)據(jù)構(gòu)成的數(shù)組,另外一個(gè)是這組數(shù)據(jù)的索引或者是標(biāo)簽。我們簡(jiǎn)單創(chuàng)建一個(gè)Series打印出來(lái)看一下就明白了。

這里我們隨意創(chuàng)建了一個(gè)包含四個(gè)元素的Series,然后將它打印了出來(lái)。可以看到打印的數(shù)據(jù)一共有兩列,第二列是我們剛才創(chuàng)建的時(shí)候輸入的數(shù)據(jù),第一列就是它的索引。由于我們創(chuàng)建的時(shí)候沒(méi)有特意指定索引,所以pandas會(huì)自動(dòng)為我們創(chuàng)建行號(hào)索引,我們可以通過(guò)Series類(lèi)型當(dāng)中的values和index屬性查看到Series當(dāng)中存儲(chǔ)的數(shù)據(jù)和索引:

這里輸出的values是一個(gè)Numpy的數(shù)組,這并不奇怪,因?yàn)槲覀兦懊嬲f(shuō)了,pandas是一個(gè)基于Numpy開(kāi)發(fā)的科學(xué)計(jì)算庫(kù),Numpy是它的底層。從打印出來(lái)的index的信息當(dāng)中,我們可以看到這是一個(gè)Range類(lèi)型的索引,它的范圍以及步長(zhǎng)。

索引是Series構(gòu)建函數(shù)當(dāng)中的一個(gè)默認(rèn)參數(shù),如果我們不填,它默認(rèn)會(huì)為我們生成一個(gè)Range索引,其實(shí)也就是數(shù)據(jù)的行號(hào)。我們也可以自己指定數(shù)據(jù)的索引,比如我們?cè)趧偛诺拇a當(dāng)中加入index這個(gè)參數(shù),我們就可以自己指定索引了。

當(dāng)我們指定了字符類(lèi)型的索引之后,index返回的結(jié)果就不再是RangeIndex而是Index了。說(shuō)明pandas內(nèi)部對(duì)數(shù)值型索引和字符型索引是做了區(qū)分的。

有了索引,自然是用來(lái)查找元素用的。我們可以直接將索引當(dāng)做是數(shù)組的下標(biāo)使用,兩者的效果是一樣的。不僅如此,索引數(shù)組也是可以接受的,我們可以直接查詢(xún)?nèi)舾蓚€(gè)索引的值。

另外在創(chuàng)建Series的時(shí)候,重復(fù)的索引也是允許的。同樣當(dāng)我們使用索引查詢(xún)的時(shí)候也會(huì)得到多個(gè)結(jié)果。

不僅如此,像是Numpy那樣的bool型索引也依然是支持的:

Series計(jì)算


Series支持許多類(lèi)型的計(jì)算,我們可以直接使用加減乘除操作對(duì)整個(gè)Series進(jìn)行運(yùn)算

也可以使用Numpy當(dāng)中的運(yùn)算函數(shù)來(lái)進(jìn)行一些復(fù)雜的數(shù)學(xué)運(yùn)算,但是這樣計(jì)算得到的結(jié)果會(huì)是一個(gè)Numpy的array。

因?yàn)镾eries當(dāng)中有索引,所以我們也可以使用dict的方式判斷索引是否在Series當(dāng)中

Series有索引也有值,其實(shí)和dict的存儲(chǔ)結(jié)構(gòu)是一樣的,所以Seires也支持通過(guò)一個(gè)dict來(lái)初始化:

通過(guò)這種方式創(chuàng)建出來(lái)的順序就是dict當(dāng)中key存儲(chǔ)的順序,我們可以在創(chuàng)建的時(shí)候指定index,這樣就可以控制它的順序了。

我們?cè)谥付╥ndex的時(shí)候額外傳入了一個(gè)沒(méi)有在dict當(dāng)中出現(xiàn)過(guò)的key,由于在dict當(dāng)中找不到對(duì)應(yīng)的值,Series會(huì)將它記成NAN(Not a number)??梢岳斫獬墒?strong>非法值或者是空值,在我們處理特征或者是訓(xùn)練數(shù)據(jù)的時(shí)候,經(jīng)常會(huì)遇到存在一些條目的數(shù)據(jù)的某個(gè)特征空缺的情況,我們可以通過(guò)pandas當(dāng)中isnull和notnull函數(shù)檢查空缺的情況。

當(dāng)然Series當(dāng)中也有isnull的函數(shù),我們也可以調(diào)用。

最后,Series當(dāng)中的index也是可以修改的, 我們可以直接給它賦上新值:

總結(jié)

從核心本質(zhì)上來(lái)說(shuō),pandas當(dāng)中的Series就是在Numpy一維數(shù)組上做的一層封裝,加上了索引等一些相關(guān)的功能。所以我們可以想見(jiàn)DataFrame其實(shí)就是一個(gè)Series的數(shù)組的封裝,加上了更多數(shù)據(jù)處理相關(guān)的功能。我們把核心結(jié)構(gòu)把握住了,再來(lái)理解整個(gè)pandas的功能要比我們一個(gè)一個(gè)死記這些api有用得多。

pandas是Python數(shù)據(jù)處理的一大利器,作為一個(gè)合格的算法工程師幾乎是必會(huì)的內(nèi)容,也是我們使用Python進(jìn)行機(jī)器學(xué)習(xí)以及深度學(xué)習(xí)的基礎(chǔ)。根據(jù)調(diào)查資料顯示,算法工程師日常的工作有70%的份額投入在了數(shù)據(jù)處理當(dāng)中,真正用來(lái)實(shí)現(xiàn)模型、訓(xùn)練模型的只有30%不到。因此可見(jiàn)數(shù)據(jù)處理的重要性,想要在行業(yè)當(dāng)中有所發(fā)展,絕不僅僅是學(xué)會(huì)模型就足夠的。


感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)如何使用pandas進(jìn)行數(shù)據(jù)處理大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI