1. 程式人生 > >Python資料分析之pandas學習(二)

Python資料分析之pandas學習(二)

有關pandas模組的學習與應用主要介紹以下8個部分: 1、資料結構簡介:DataFrame和Series 2、資料索引index 3、利用pandas查詢資料 4、利用pandas的DataFrames進行統計分析 5、利用pandas實現SQL操作 6、利用pandas進行缺失值的處理 7、利用pandas實現Excel的資料透視表功能 8、多層索引的使用

我們在 Python資料分析之pandas學習(一) Python資料分析之pandas學習(一)中已經介紹到了第四部分的描述性統計分析,我們接著往下講pandas模組中的其他的知識點。

五、類似於SQL的操作

在SQL中常見的操作主要是增、刪、改、查幾個動作,那麼pandas能否實現對資料的這幾項操作呢?答案是Of Course!

增:新增新行或增加新列

``` In [99]: dic = {'Name':['LiuShunxiang','Zhangshan'], ...: 'Sex':['M','F'],'Age':[27,23], ...: 'Height':[165.7,167.2],'Weight':[61,63]}

In [100]: student2 = pd.DataFrame(dic)

In [101]: student2 Out[101]: Age Height Name Sex Weight 0 27 165.7 LiuShunxiang M 61 1 23 167.2 Zhangshan F 63 ``` 現在將student2中的資料新增到student中,可以通過 concat函式

 實現:注意到了嗎?在資料庫中union必須要求兩張表的列順序一致,而這裡concat函式可以自動對齊兩個資料框的變數!

新增列的話,其實在pandas中就更簡單了,例如在student2中新增一列學生成績:對於新增的列沒有賦值,就會出現空NaN的形式。

刪:刪除表、觀測行或變數列

刪除資料框student2,通過del命令實現,該命令可以刪除Python的所有物件。刪除指定的行原資料中的第1,2,4,7行的資料已經被刪除了。 根據布林索引刪除行資料,其實這個刪除就是保留刪除條件的反面資料,例如刪除所有14歲以下的學生:

刪除指定的列我們發現,不論是刪除行還是刪除列,都可以通過drop方法實現,只需要設定好刪除的軸即可,即調整drop方法中的axis引數。預設該引數為0,表示刪除行觀測,如果需要刪除列變數,則需設定為1。

改:修改原始記錄的值

如果發現表中的某些資料錯誤了,如何更改原來的值呢?我們試試結合布林索引和賦值的方法: 例如發現student3中姓名為Liushunxiang的學生身高錯了,應該是173,如何改呢?這樣就可以把原來的身高修改為現在的170了。 看,關於索引的操作非常靈活、方便吧,就這樣輕鬆搞定資料的更改。

查:有關資料查詢部分,上面已經介紹過,下面重點講講聚合、排序和多表連線操作。

聚合:pandas模組中可以通過groupby()函式實現資料的聚合操作

根據性別分組,計算各組別中學生身高和體重的平均值:

如果不對原始資料作限制的話,聚合函式會自動選擇數值型資料進行聚合計算。如果不想對年齡計算平均值的話,就需要剔除改變數:

groupby還可以使用多個分組變數,例如根本年齡和性別分組,計算身高與體重的平均值:當然,還可以對每個分組計算多個統計量:是不是很簡單,只需一句就能完成SQL中的SELECT...FROM...GROUP BY...功能,何樂而不為呢?

排序:

排序在日常的統計分析中還是比較常見的操作,我們可以使用order、sort index和sort values實現序列和資料框的排序工作:

我們再試試降序排序的設定:上面兩個結果其實都是按值排序,並且結果中都給出了警告資訊,即建議使用sort_values()函式進行按值排序。

在資料框中一般都是按值排序,例如:

多表連線:

多表之間的連線也是非常常見的資料庫操作,連線分內連線和外連線,在資料庫語言中通過join關鍵字實現,pandas我比較建議使用merger函式實現資料的各種連線操作。 如下是構造一張學生的成績表:現在想把學生表student與學生成績表score做一個關聯,該如何操作呢?注意,預設情況下,merge函式實現的是兩個表之間的內連線,即返回兩張表中共同部分的資料。可以通過how引數設定連線的方式,left為左連線;right為右連線;outer為外連線。

左連線實現的是保留student表中的所有資訊,同時將score表的資訊與之配對,能配多少配多少,對於沒有配對上的Name,將會顯示成績為NaN。

感謝作者分享

資料人網是資料人學習、交流和分享的平臺http://shujuren.org 。專注於從資料中學習。 平臺的理念: 人人投稿,知識共享;人人分析,洞見驅動;智慧聚合,普惠人人。 您在資料人網平臺,可以1)學習資料知識;2)建立資料部落格;3)認識資料朋友;4)尋找資料工作;5)找到其它與資料相關的乾貨。 我們努力堅持做原創,分享和傳播資料知識乾貨! 我們都是資料人,資料是有價值的,堅定不移地利用資料價值創造價值!