天天看點

Pandas之:Pandas進階教程以鐵達尼号真實資料為例

簡介

今天我們會講解一下pandas的進階教程,包括讀寫檔案、選取子集和圖形表示等。

讀寫檔案

資料處理的一個關鍵步驟就是讀取檔案進行分析,然後将分析處理結果再次寫入檔案。

pandas支援多種檔案格式的讀取和寫入:

Pandas之:Pandas進階教程以鐵達尼号真實資料為例

接下來我們會以pandas官網提供的titanic.csv為例來講解pandas的使用。

titanic.csv提供了800多個泰坦利特号上乘客的資訊,是一個891 rows x 12 columns的矩陣。

我們使用pandas來讀取這個csv:

read_csv方法會将csv檔案轉換成為pandas 的<code>dataframe</code>。

預設情況下我們直接使用df變量,會預設展示前5行和後5行資料:

可以使用head(n)和tail(n)來指定特定的行數:

使用dtypes可以檢視每一列的資料類型:

使用to_excel可以将df轉換為excel檔案,使用read_excel可以再次讀取excel檔案:

使用info()可以來對df進行一個初步的統計:

df的選擇

df的head或者tail方法隻能顯示所有的列資料,下面的方法可以選擇特定的列資料。

Pandas之:Pandas進階教程以鐵達尼号真實資料為例

每一列都是一個series:

還可以多選:

如果選擇多列的話,傳回的結果就是一個df類型:

上面我們講到了怎麼選擇列資料,下面我們來看看怎麼選擇行資料:

Pandas之:Pandas進階教程以鐵達尼号真實資料為例

選擇客戶年齡大于35歲的:

使用isin選擇pclass在2和3的所有客戶:

上面的isin等于:

篩選age不是空的:

Pandas之:Pandas進階教程以鐵達尼号真實資料為例

我們可以同時選擇行和列。

使用loc和iloc可以進行行和列的選擇,他們兩者的差別是loc是使用名字進行選擇,iloc是使用數字進行選擇。

選擇age&gt;35的乘客名:

loc中第一個值表示行選擇,第二個值表示列選擇。

使用iloc進行選擇:

使用plots作圖

怎麼将df轉換成為多樣化的圖形展示呢?

Pandas之:Pandas進階教程以鐵達尼号真實資料為例

要想在指令行中使用matplotlib作圖,那麼需要啟動ipython的qt環境:

直接使用plot來展示一下上面我們讀取的乘客資訊:

Pandas之:Pandas進階教程以鐵達尼号真實資料為例

橫坐标就是df中的index,列坐标是各個列的名字。注意上面的列隻展示的是數值類型的。

我們隻展示age資訊:

Pandas之:Pandas進階教程以鐵達尼号真實資料為例

預設的是柱狀圖,我們可以轉換圖形的形式,比如點圖:

選擇資料中的passengerid作為x軸,age作為y軸:

Pandas之:Pandas進階教程以鐵達尼号真實資料為例

除了散點圖,還支援很多其他的圖像:

再看一個box圖:

Pandas之:Pandas進階教程以鐵達尼号真實資料為例

可以看到,乘客的年齡大多集中在20-40歲之間。

還可以将選擇的多列分别作圖展示:

Pandas之:Pandas進階教程以鐵達尼号真實資料為例

指定特定的列:

Pandas之:Pandas進階教程以鐵達尼号真實資料為例

還可以先畫圖,然後填充:

先畫一個空的圖,然後對其進行填充:

Pandas之:Pandas進階教程以鐵達尼号真實資料為例

使用現有的列建立新的列

Pandas之:Pandas進階教程以鐵達尼号真實資料為例

有時候,我們需要對現有的列進行變換,以得到新的列,比如我們想添加一個age2列,它的值是age列+10,則可以這樣:

還可以對列進行重命名:

列名轉換為小寫:

進行統計

我們來統計下乘客的平均年齡:

選擇中位數:

更多資訊:

使用agg指定特定的聚合方法:

可以使用groupby:

groupby所有的列:

groupby之後還可以選擇特定的列:

Pandas之:Pandas進階教程以鐵達尼号真實資料為例

可以分類進行count:

上面等同于:

df重組

可以根據某列進行排序:

根據多列排序:

選擇特定的行和列資料,下面的例子我們将會選擇性别為女性的部分資料:

使用pivot可以進行軸的轉換:

Pandas之:Pandas進階教程以鐵達尼号真實資料為例
本文已收錄于 http://www.flydean.com/02-python-pandas-advanced/ 最通俗的解讀,最深刻的幹貨,最簡潔的教程,衆多你不知道的小技巧等你來發現! 歡迎關注我的公衆号:「程式那些事」,懂技術,更懂你!