[資料分析&機器學習] 第2.3講:Pandas 基本function介紹(Series, DataFrame, Selection, Grouping)

Yeh James
JamesLearningNote
Published in
6 min readSep 29, 2017
Python 關於pandas知名書籍,英文版可以到O’reilly的Safari線上電子書城試看http://shop.oreilly.com/product/0636920023784.do 中文版:https://www.tenlong.com.tw/products/9787111436737

今天要介紹的是Pandas的基本教學,在2.1講之中我們利用sklearn匯入iris的資料並利用一些簡單的處理,將dictionary的格式轉成pandas,並利用head(3)的方式顯示出資料前3幾筆,以避免顯示資料量過大畫面顯得凌亂。

先介紹一下Pandas是什麼,簡單來說就是把Excel的表格觀念丟到Python,你在Excel所有的操作都可以透過Pandas的函式做簡單的處理,想是欄位的加總、分群、樞紐分析表、小計、畫折線圖、圓餅圖等等…

在你學會Pandas這些處理的技巧之後,加上一點程式的概念,以後就可以利用Python取代Excel做到許多自動化script的處理(比如說你可以用pandas做完資料處理,畫完圖之後,利用python撰寫Email小程式,再搭配一些定時的排程工具(像是linux的cron job)將圖表以及csv檔每天固定時間寄給你想要的人,無形之中你每天就可以省下許多時間,提升工作效率),另外就我自己的經驗,當你學會使用Python+Pandas之後方式比起去寫Excel的巨集方便多了。

在介紹Pandas之前有許多書籍會提到Numpy,主要原因是因為Pandas背後的數值型態都是Numpy,Numpy的資料結構可以幫助Pandas在執行運算上更有效率以及更省記憶體。

舉例來說Python的內建資料結構list可以塞好幾種不同type的資料進去,如下圖所示,這個list裡面的資料有string, int, float,但對於機器來說,要提升效能或是提升記憶體省用效率最好有一致的型別會比較好。

當使用numpy的array資料結構會強迫把裡面的資料都轉成同一型態

所以要使用pandas的時候,基本上除了載入pandas之外也會同時載入numpy,因為很常會使用到numpy

所以開頭起手式會輸入以下兩行,as 後面是表示前面套件的縮寫,你也可以叫別的名字,但是pd跟np已經是整個圈子慣用的寫法,如果你寫其他的縮寫他人會看不懂

Pandas主要有兩大資料結構:

  1. Series 欄位(一維度)
  2. DataFrame 表格(二維度)
  3. Panel 三維表格(除了特殊需求之外少使用… 略過)

Series 欄位

利用pd.Series函式參數放入list即可創建一個簡單的series,使用type就可以看到s1是屬於pandas的series,如果不指定index預設會是0,1,2,3,4…,要指定index的方式也很簡單,就在參數那邊多輸入一個list給index參數

DataFrame 表格

利用pd.DataFrame函式創立dataframe,裡面的資料是用np.random.randn產生出一個6*4大小數值為標準常態分佈,並命名欄位名稱依序為a, b, c, d

DataFrame基本資訊

後續會使用iris資料集,我們可以透過info以及describe來觀看表格的資訊,info主要可以看有幾筆資料、每個欄位的資料型別是什麼(int, float..)、有無空值(null)的存在、佔據多少記憶體,describe主要是看資料的平均值、分佈情況、是否有資料傾斜Skew的問題

可利用columns函式取得欄位名稱,以及用sort_values來做資料排序

資料選取

要選取某個欄位使用中括號格可[]

多個欄位則用list裡面放欄位名稱

如果要選第幾筆資料的某些欄位,可以使用以下兩種方法。第一種用兩次的中括號篩選,先篩選出第五筆到第十筆的資料,再篩選出欄位。第二種是用loc(location的意思)中括號裡面第一個放index的範圍,第二個放column的名稱,我個人偏好第二種寫法。

資料篩選

在中括號裡面方入篩選條件即可

資料分群

使用groupby的方式,後面加入要運算的函式,例如sum 或是 mean

這今天介紹了一些常用的Pandnas套件處理,基本上如果英文還可以的話建議花個大概兩三天的時間直接去官網照著Tutorial做個兩遍,上面的英文字彙程度也都很簡單。第一遍先稍微為掃過一遍,做自己有興趣的部分,第二遍認真照做做一遍不要偷懶,熟悉之後你會發現pandas非常簡單,若想更深入的話。

程式碼

感謝你閱讀完這篇文章,如果你覺得這些文章對你有幫助請在底下幫我拍個手(長按最多可以拍50下手)。

[Python資料分析&機器學習]這系列文章是我在Hahow上面所開設課程的講義,如果你是新手想著看影片一步一步學習,可以參考這門課:https://hahow.in/cr/pydataml

如果你對什麼主題的文章有興趣的話,歡迎透過這個連結告訴我:https://yehjames.typeform.com/to/XIIVQC
有任何問題也歡迎在底下留言或是來信告訴我: yehjames23@gmail.com

參考閱讀

  1. 10 Minutes to pandas
  2. Pandas tutorial

--

--