如何七周成為數據分析師21:Python分析之numpy和pandas入門

2 評論 33035 瀏覽 71 收藏 16 分鐘

本文是《如何七周成為數據分析師》的第二十一篇教程,如果想要了解寫作初衷,可以先行閱讀七周指南。溫馨提示:如果您已經熟悉Python,大可不必再看這篇文章,或只挑選部分。

今天開始進入Python數據分析工具的教程。

數據分析絕對繞不過的三個包是numpy、scipy和pandas。numpy是Python的數值計算擴展,專門用來處理矩陣,它的運算效率比列表更高效。scipy是基于numpy的科學計算包,包括統計、線性代數等工具。pandas是基于numpy的數據分析工具,能更方便的操作大型數據集。后續的章節主要圍繞pandas講解。

numpy和pandas

numpy的數據結構是n維的數組對象,叫做ndarray。Python的list雖然也能表示,但是不高效,隨著列表數據的增加,效率會降低。

我們首先載入numpy包,因為它是第三方工具,所以每次使用前必須在代碼中載入。as是命名為別名,方便調用,np是numpy約定俗成的簡寫。

image.png
創建數組使用numpy中的array函數,新手要記住加np。我們將系統自帶的列表list轉換成了numpy中的數組。

image.png

嵌套列表會被轉換為一個多維數組,它也可以被稱為矩陣。

array數組需要注意的是,它內部的元素必須為相同類型,比如數值或者字符串??梢杂胐type查詢其類型,不用加括號。

image.png

numpy的數據類型比較豐富,包括int8,int16,int32等,不過這塊更接近計算機底層,數據分析用不太到。當我們想轉換數據格式時,可以用astype函數。

image.png

數組的計算非常方便,不要大量的循環即可批量運算。

image.png

數組索引和列表相同,通過方括號和數字即可選擇,也可直接賦值。

image.png

可以通過遞歸對多維數組進行篩選,如果省略了后面的索引,則返回次一級的維度,這一點和list一樣。

image.png

numpy除了上述的基礎操作之外,還有reshape、T轉置、ufunc、sort等函數,功能強大,大家可以自行查閱文檔學習,這里我不再花費時間講解。對于數據分析師,pandas是一個更常用的包,在抽象概念上它更接近我們熟悉的excel和sql,也是最主要的分析工具。

pandas有兩個主要的數據結構,Series和DataFrame,記住大小寫區分,后續使用中不多提醒。Series類似于一維數組,和numpy的array接近,由一組數據和數據標簽組成。數據標簽有索引的作用。

image.png

加載pandas包,通過Series函數生成一個對象。我們很明顯地看到,在jupyter上它的樣式不同于array,它是豎著的。右邊是我們輸入的一組數據,左邊是數據的索引,即標簽。數據標簽是pandas區分于numpy的重要特征。

索引不一定是從0開始的數字,它可以被定義。

image.png

索引的概念有點像SQL的主鍵,不過它的功能更強大,分析師能夠很輕松的通過索引選取一個數據或者一組數據。

image.png

index函數可以顯示Series的索引。Series和array一樣,通過方括號選取數據,當要選取多個數據時,應該用列表表示多個索引,所以第三個案例嵌套了兩層方括號。

如果數據是一個字典,也能直接通過這個字典創建Series。

image.png

此時,字典的key就是Series的索引。

image.png

Series有自動對齊索引的功能,當自定義的索引qinqin和字典隊員不上時,會自動選擇NaN,即結果為空,表示缺失。缺失值的處理會在后續講解。

DataFrame

Series是一維的數據結構,DataFrame是一個表格型的數據結構,它含有不同的列,每列都是不同的數據類型。我們可以把DataFrame看作Series組成的字典,它既有行索引也有列索引。想象得更明白一點,它類似一張excel表格或者SQL,只是功能更強大。

構建DataFrame的方法有很多,最常用的是傳入一個字典。

image.png

DataFrame會自動補充索引,并且將字典的key作為列標簽,即column。在這里,dict的key順序是DataFame的順序,不再是無序的。

DataFrame中可以通過info函數直接查看數據類型和統計。

image.png

image.png

DataFrame的數據類型變更和numpy一樣,用astype就行,記住要賦值。df.age = df.age.astype,圖上只是舉例,沒有真的更改數據類型。

DataFrame的索引方式和Series一直,它選取的是列。

image.png

返回的是一組Series,索引和原DataFrame一致。除了方括號選取,DataFrame還有更簡單的選取方法。

image.png

行也可以通過通過位置獲取,用索引字段ix的方式。

image.png

第二個方法不需要調用ix,直接以切片的形式獲取行,切片的用啊和數組一樣。記住,切片無法用單獨的數字選取,只能用冒號切選范圍。

列可以通過賦值的方式修改和添加,當列的名稱是全新,則會在DataFrame的最右邊自動加上新的一列。

image.png
image.png

列表和數組都可以賦值到列,長度必須匹配,列表是按照順序,數組的話,可以按index參數設置的索引對應,若為空,則填上缺失值。

DataFrame的index不可更改,這是為了數據的安全性,但我們能通過index函數獲取詳情。

image.png

DataFrame在數據選取上面非常強大。

image.png

它支持常用的邏輯判斷,例子中,后兩種數據選取是通過布爾數組過濾出我們想要的結果。

image.png

df.sex == ‘男’返回了一個布爾數組(記住,是兩個等號,一個等號是賦值),然后通過布爾數組找出df中符合條件為true的結果。

現在我們希望找出年齡在20以下,且性別為男的人。

image.png

這里用到布爾類型數據的計算公式,true and true 為true,false and true 為false。pandas中的邏輯符號,并且是&,或者是|。接下來過濾出性別為女,或者年齡為18的人。

image.png

當邏輯條件復雜時,這種寫法并不優雅,比如性別為男,且年齡在18歲,以及性別為女,且年齡在18歲以上的兩類人群,這種過濾條件就比較復雜了。pandas中可以用query函數以類SQL語言執行查詢。

image.png

query中可以直接使用列名,它的功能遠不至于此,大家有興趣可以深入學習。

image.png

DataFrame可以直接在列上進行運算,當DataFrame和DataFrame之間運算時,按索引進行加減乘除。

image.png

如果直接用加法,若列名匹配不上,會產生NaN 的缺失值,我們可以在后續后續fillna函數填充。另外一種方法是add函數,它可以直接通過參數選擇填充值。減乘除對應sub、mul、div。

DataFrame還有兩個常用函數,又特別容易搞混的是,iloc和loc。

image.png

它們都是通過索引選取行,iloc是通過所在行的數字為索引,loc是所在行的標簽為索引,簡單講,iloc是第幾行,loc是標簽。當索引沒有標簽時,loc和iloc等價。兩者支持冒號的范圍選擇。

上文提到的過的ix,則是兩者的混合,即可以行號,也可以行索引。

當行和列需要同時選擇的時候,用逗號分割,逗號前是想要選擇的行,逗號后是想要選擇的列。

image.png

完整形式是ix[ 行1:行2, ?列1:列2 ],iloc和loc也支持行列同時選擇,方法一樣。新人接觸這幾塊比較容易混淆。后續聯系即可掌握。

大家如果想加深掌握這塊,除了敲一遍代碼,可以閱讀「利用Python進行數據分析」,很經典的入門書(部分內容有點老)。也可以多拿工作中的報表做練習。

到這里,numpy和pandas的基礎就講解的差不多了,更深入的應用,還是用實戰解決吧!下一章,將會用大家已經很熟悉的練習數據,以實際操作的方式完成一次數據分析。

相關閱讀

互聯網數據分析能力的養成,需一份七周的提綱

如何七周成為數據分析師01:常見的Excel函數全部涵蓋在這里了

如何七周成為數據分析師02:Excel技巧大揭秘

如何七周成為數據分析師03:手把手教你Excel實戰

如何七周成為數據分析師:Excel技巧之甘特圖繪制(項目管理)

如何七周成為數據分析師:Excel技巧之打造多級菜單

如何七周成為數據分析師04:數據可視化之經典圖表合集

如何七周成為數據分析師05:數據可視化之打造升職加薪的報表

如何七周成為數據分析師06:數據可視化之手把手打造BI

如何七周成為數據分析師07:快速掌握麥肯錫的分析思維

如何七周成為數據分析師08:如何建立數據分析的思維框架?

如何七周成為數據分析師09:寫給新人的數據庫指南

如何七周成為數據分析師10:SQL,從入門到熟練

如何七周成為數據分析師11:SQL,從熟練到掌握

如何七周成為數據分析師12:解鎖數據分析的正確姿勢(上)

如何七周成為數據分析師13:解鎖數據分析的正確姿勢(下)

如何七周成為數據分析師14:概率論的入門指南

如何七周成為數據分析師15:讀了本文,你就懂了概率分布

如何七周成為數據分析師16:數據分析必須懂的假設檢驗

如何七周成為數據分析師17:最全的運營數據指標解讀

如何七周成為數據分析師18:Python的新手教程

如何七周成為數據分析師19:Python的數據結構

如何七周成為數據分析師20:了解和掌握Python的函數

#專欄作家#

秦路,微信公眾號ID:tracykanc,人人都是產品經理專欄作家。

本文由 @秦路?原創發布于人人都是產品經理。未經許可,禁止轉載。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 看不到圖,心塞

    來自北京 回復
  2. giant boy:fighting,fighting,fighting!

    回復