轉(zhuǎn)帖|使用教程|編輯:龔雪|2017-05-08 10:45:02.000|閱讀 277 次
概述:在SQL中常見的操作主要是增、刪、改、查幾個(gè)動(dòng)作,那么pandas能否實(shí)現(xiàn)對(duì)數(shù)據(jù)的這幾項(xiàng)操作呢?答案是Of Course!
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
我們接著上次分享給大家的,來繼續(xù)下面的操作。
有關(guān)pandas模塊的學(xué)習(xí)與應(yīng)用主要介紹以下8個(gè)部分:
1、數(shù)據(jù)結(jié)構(gòu)簡介:DataFrame和Series
2、數(shù)據(jù)索引index
3、利用pandas查詢數(shù)據(jù)
4、利用pandas的DataFrames進(jìn)行統(tǒng)計(jì)分析
5、利用pandas實(shí)現(xiàn)SQL操作
6、利用pandas進(jìn)行缺失值的處理
7、利用pandas實(shí)現(xiàn)Excel的數(shù)據(jù)透視表功能
8、多層索引的使用
我們?cè)谥幸呀?jīng)介紹到了第四部分的描述性統(tǒng)計(jì)分析,我們接著往下講pandas模塊中的其他的知識(shí)點(diǎn)。
在SQL中常見的操作主要是增、刪、改、查幾個(gè)動(dòng)作,那么pandas能否實(shí)現(xiàn)對(duì)數(shù)據(jù)的這幾項(xiàng)操作呢?答案是Of Course!
1.In [99]: dic = {'Name':['LiuShunxiang','Zhangshan'], 2....: 'Sex':['M','F'],'Age':[27,23], 3....: 'Height':[165.7,167.2],'Weight':[61,63]} 4. 5.In [100]: student2 = pd.DataFrame(dic) 6. 7.In [101]: student2 8.Out[101]: 9.Age Height Name Sex Weight 10.0 27 165.7 LiuShunxiang M 61 11.1 23 167.2 Zhangshan F 63
現(xiàn)在將student2中的數(shù)據(jù)新增到student中,可以通過concat函數(shù)實(shí)現(xiàn):
注意到了嗎?在數(shù)據(jù)庫中union必須要求兩張表的列順序一致,而這里concat函數(shù)可以自動(dòng)對(duì)齊兩個(gè)數(shù)據(jù)框的變量!
新增列的話,其實(shí)在pandas中就更簡單了,例如在student2中新增一列學(xué)生成績:
對(duì)于新增的列沒有賦值,就會(huì)出現(xiàn)空NaN的形式。
刪除數(shù)據(jù)框student2,通過del命令實(shí)現(xiàn),該命令可以刪除Python的所有對(duì)象。
刪除指定的行
原數(shù)據(jù)中的第1,2,4,7行的數(shù)據(jù)已經(jīng)被刪除了。
根據(jù)布爾索引刪除行數(shù)據(jù),其實(shí)這個(gè)刪除就是保留刪除條件的反面數(shù)據(jù),例如刪除所有14歲以下的學(xué)生:
刪除指定的列
我們發(fā)現(xiàn),不論是刪除行還是刪除列,都可以通過drop方法實(shí)現(xiàn),只需要設(shè)定好刪除的軸即可,即調(diào)整drop方法中的axis參數(shù)。默認(rèn)該參數(shù)為0,表示刪除行觀測(cè),如果需要?jiǎng)h除列變量,則需設(shè)置為1。
如果發(fā)現(xiàn)表中的某些數(shù)據(jù)錯(cuò)誤了,如何更改原來的值呢?我們?cè)囋嚱Y(jié)合布爾索引和賦值的方法:
例如發(fā)現(xiàn)student3中姓名為Liushunxiang的學(xué)生身高錯(cuò)了,應(yīng)該是173,如何改呢?
這樣就可以把原來的身高修改為現(xiàn)在的170了。
看,關(guān)于索引的操作非常靈活、方便吧,就這樣輕松搞定數(shù)據(jù)的更改。
根據(jù)性別分組,計(jì)算各組別中學(xué)生身高和體重的平均值:
如果不對(duì)原始數(shù)據(jù)作限制的話,聚合函數(shù)會(huì)自動(dòng)選擇數(shù)值型數(shù)據(jù)進(jìn)行聚合計(jì)算。如果不想對(duì)年齡計(jì)算平均值的話,就需要剔除改變量:
groupby還可以使用多個(gè)分組變量,例如根本年齡和性別分組,計(jì)算身高與體重的平均值:
當(dāng)然,還可以對(duì)每個(gè)分組計(jì)算多個(gè)統(tǒng)計(jì)量:
是不是很簡單,只需一句就能完成SQL中的SELECT…FROM…GROUP BY…功能,何樂而不為呢?
排序在日常的統(tǒng)計(jì)分析中還是比較常見的操作,我們可以使用order、sort_index和sort_values實(shí)現(xiàn)序列和數(shù)據(jù)框的排序工作:
我們?cè)僭囋嚱敌蚺判虻脑O(shè)置:
上面兩個(gè)結(jié)果其實(shí)都是按值排序,并且結(jié)果中都給出了警告信息,即建議使用sort_values()函數(shù)進(jìn)行按值排序。
在數(shù)據(jù)框中一般都是按值排序,例如:
多表之間的連接也是非常常見的數(shù)據(jù)庫操作,連接分內(nèi)連接和外連接,在數(shù)據(jù)庫語言中通過join關(guān)鍵字實(shí)現(xiàn),pandas我比較建議使用merger函數(shù)實(shí)現(xiàn)數(shù)據(jù)的各種連接操作。 如下是構(gòu)造一張學(xué)生的成績表:
現(xiàn)在想把學(xué)生表student與學(xué)生成績表score做一個(gè)關(guān)聯(lián),該如何操作呢?
注意,默認(rèn)情況下,merge函數(shù)實(shí)現(xiàn)的是兩個(gè)表之間的內(nèi)連接,即返回兩張表中共同部分的數(shù)據(jù)。可以通過how參數(shù)設(shè)置連接的方式,left為左連接;right為右連接;outer為外連接。
左連接實(shí)現(xiàn)的是保留student表中的所有信息,同時(shí)將score表的信息與之配對(duì),能配多少配多少,對(duì)于沒有配對(duì)上的Name,將會(huì)顯示成績?yōu)镹aN。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn