Python 是當(dāng)今世界熱門的編程語(yǔ)言,而它的應(yīng)用領(lǐng)域就是使用 Pandas 數(shù)據(jù)分析,使用 Pandas 我們可以 Excel/CSV/TXT/MySQL 等數(shù)據(jù)讀取,然后進(jìn)行各種清洗、過(guò)濾、透視、聚合分析,也可以直接繪制折線圖、餅圖等數(shù)據(jù)分析圖表,在功能上它能夠?qū)崿F(xiàn)自動(dòng)化的對(duì)大文件處理,能夠?qū)崿F(xiàn) Excel 的幾乎所有功能并且更加強(qiáng)大。

對(duì)數(shù)學(xué)專業(yè)的人來(lái)說(shuō),Pandas可以作為一個(gè)數(shù)據(jù)分析切入點(diǎn)。下面融躍小編為大家介紹12種用于數(shù)據(jù)分析的Pandas技巧。

1. Boolean Indexing

在表格中,如果你想根據(jù)另一列的條件篩選當(dāng)前列的值,你會(huì)怎么做?舉個(gè)例子,假設(shè)我們想要一份所有未畢業(yè)但已經(jīng)辦理了貸款的女性清單,具體的操作是什么?在這種情況下,Boolean Indexing,也就是布爾索引能提供相應(yīng)的功能。

2. Apply Function

Apply函數(shù)是使用數(shù)據(jù)和創(chuàng)建新變量的常用函數(shù)之一。在對(duì)DataFrame的特定行/列應(yīng)用一些函數(shù)后,它會(huì)返回相應(yīng)的值。這些函數(shù)既可以是默認(rèn)的,也可以是用戶自定義的。

3. 替換缺失值

對(duì)于替換缺失值,fillna()可以一步到位,它會(huì)用目標(biāo)列的平均值/眾數(shù)/中位數(shù)更新缺失值。

4. Pivot Table

Pandas可以用來(lái)創(chuàng)建MS Excel樣式數(shù)據(jù)透視表(Pivot Table)。

5. Multi-Indexing

如果你仔細(xì)觀察了“替換缺失值”那一節(jié)的輸出,你可能會(huì)發(fā)現(xiàn)一個(gè)奇怪的現(xiàn)象,就是每個(gè)索引都由3個(gè)值組合而成。這被稱為多重索引(Multi-Indexing),它有助于操作的快速執(zhí)行。

注:

多索引需要元組來(lái)定義loc語(yǔ)句中的索引組。這是一個(gè)在函數(shù)中要用到的元組。

values [0]的后綴是必需的,因?yàn)槟J(rèn)情況下返回的值與DataFrame的值不匹配。在這種情況下,直接分配會(huì)出現(xiàn)錯(cuò)誤。

6. Crosstab

這個(gè)函數(shù)可以被用來(lái)塑造對(duì)數(shù)據(jù)的初始“感覺(jué)(概覽)”,通俗地講,就是我們可以驗(yàn)證一些基本假設(shè)。如在貸款案例中,“Credit_History”是否會(huì)影響個(gè)人貸款成功?這可以用交叉表(Crosstab)測(cè)試,

7. 合并DataFrame

當(dāng)我們需要將來(lái)自不同來(lái)源的信息進(jìn)行整合時(shí),合并DataFrame(或者你們愛(ài)說(shuō)數(shù)據(jù)框)就變得很重要了。

8. DataFrame排序

Pandas可以輕松基于多列進(jìn)行排序。

9. 繪圖(Boxplot和直方圖)

很多人可能不知道自己能直接在Pandas里繪制盒形圖和直方圖,無(wú)需單獨(dú)調(diào)用matplotlib,一行命令就能搞定。

10. Cut function for binning
有時(shí)候聚類后的數(shù)據(jù)會(huì)更有意義。以今天*近車禍頻發(fā)的自動(dòng)駕駛汽車為例,如果我們要用它捕獲的數(shù)據(jù)重現(xiàn)某條路上的交通情況,比起一整天的流暢數(shù)據(jù),或是把一天均勻分割為24個(gè)小時(shí),“早上”“下午”“晚上”“夜晚”“深夜”這幾個(gè)關(guān)鍵時(shí)段的數(shù)據(jù)包含的信息量更多,也更有效。

11. 為nominal數(shù)據(jù)編碼
有時(shí)候我們需要對(duì)稱名數(shù)據(jù)(nominal數(shù)據(jù))重新分類,這可能是由于各種原因造成的:一些算法(如Logistic回歸)要求所有輸入都是數(shù)字,所以我們要把稱名變量重新編碼為0,1 ...(n-1)。
有時(shí)一個(gè)類別可能包含多種表達(dá),如“溫度”可以被記錄為“High”“Medium”“Low”“H”“l(fā)ow”,其中“High”和“H”是一碼事,“Low”和“l(fā)ow”也是一碼事,但Python會(huì)認(rèn)為它們是不同的。有些類別的頻數(shù)*低,所以我們應(yīng)該把它們合并起來(lái)。
為了解決這個(gè)問(wèn)題,這里我們定義了一個(gè)簡(jiǎn)單的函數(shù),它把輸入作為“字典”,然后調(diào)用Pandas的replace函數(shù)重新編碼。

12. 迭代dataframe的行

這不是一個(gè)常用的技巧,但如果遇到這種問(wèn)題,相信沒(méi)人想到時(shí)候再絞盡腦汁想辦法,或者直接自暴自棄用for循環(huán)遍歷所有行。這里我們舉兩個(gè)要用到這種方法的場(chǎng)景:當(dāng)帶有數(shù)字的nominal variable被當(dāng)成數(shù)字。當(dāng)某一行帶有字符(因?yàn)閿?shù)據(jù)錯(cuò)誤)的Numeric variable被當(dāng)成分類。這時(shí)我們就要手動(dòng)定義列的類別。雖然很麻煩,但這之后如果我們?cè)贆z查數(shù)據(jù)類別。

數(shù)據(jù)分析是一個(gè)很熱門有價(jià)值的職場(chǎng)技能,學(xué)會(huì)了 Pandas 會(huì)大的助力你的職業(yè)生涯。