《Python 数据分析》笔记——pandas
Pandas
pandas是一個(gè)流行的開源Python項(xiàng)目,其名稱取panel data(面板數(shù)據(jù))與Python data analysis(Python 數(shù)據(jù)分析)之意。
pandas有兩個(gè)重要的數(shù)據(jù)結(jié)構(gòu):DataFrame和Series
pandas數(shù)據(jù)結(jié)構(gòu)之DataFrame
pandas的DataFrame數(shù)據(jù)結(jié)構(gòu)是一種帶標(biāo)簽的二維對象,與Excel的電子表格或者關(guān)系型數(shù)據(jù)表非常相似。
可以用下列方式來創(chuàng)建DataFrame:
1.從另一個(gè)DataFrame創(chuàng)建DataFrame
2.從具有二維形狀的Numpy數(shù)組或者數(shù)組的復(fù)合結(jié)構(gòu)來生成DataFrame
3.類似地,可以用pandas的另一種數(shù)據(jù)結(jié)構(gòu)Series來創(chuàng)建DataFrame.關(guān)于Series,后文介紹
4.DataFrame也可以從類似CSV之類的文件來生成
考察pandas的DataFrame及其各種屬性
(1)首先,將數(shù)據(jù)文件載入DataFrame,并顯示其內(nèi)容:
(2)DataFrame有一個(gè)屬性,以元組的形式來存放DataFrame的形狀數(shù)據(jù),這與ndarray非常相似,我們可以查詢一個(gè)DataFrame的行數(shù)
(3)下面通過其他屬性來考察各列的標(biāo)題與數(shù)據(jù)類型
(4)pandas的DataFrame帶有一個(gè)索引,類似于關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)表的主鍵(primary key)。對于這個(gè)索引,我們既可以手動規(guī)定,也可以讓pandas自動創(chuàng)建。訪問索引時(shí),使用相應(yīng)的屬性即可
(5)有時(shí)我們希望遍歷DataFrame的基礎(chǔ)數(shù)據(jù),如果使用pandas的迭代器,遍歷列值的效率可能會很低。更好的解決方案是從基礎(chǔ)的Numpy數(shù)組中提取這些數(shù)值,然后進(jìn)行相應(yīng)的處理。不過,pandas的DataFrame的某一個(gè)屬性可以在這方面為我們提供幫助
Pandas數(shù)據(jù)結(jié)構(gòu)之Series
pandas的Series數(shù)據(jù)結(jié)構(gòu)是由不同類型的元素組成的一維數(shù)組,該數(shù)據(jù)結(jié)構(gòu)也具有標(biāo)簽。可以通過下列方式來創(chuàng)建pandas的Series數(shù)據(jù)結(jié)構(gòu)。
1.由Python的字典來創(chuàng)建Series
2.由Numpy數(shù)組來創(chuàng)建Series
3.由單個(gè)標(biāo)量來創(chuàng)建
創(chuàng)建Series數(shù)據(jù)結(jié)構(gòu)時(shí),可以向構(gòu)造函數(shù)遞交一組軸標(biāo)簽,這些標(biāo)簽通常稱為索引,是一個(gè)可選參數(shù)。默認(rèn)情況下,如果使用Numpy數(shù)組作為輸入數(shù)據(jù),那么pandas會將索引值從0開始遞增。如果傳遞給構(gòu)造函數(shù)的數(shù)據(jù)是一個(gè)Python字典,那么這個(gè)字典的鍵會經(jīng)排序后變成相應(yīng)的索引;如果輸入數(shù)據(jù)是一個(gè)標(biāo)量值,那么就需要由我們來提供相應(yīng)的索引。索引中的每一個(gè)新值都要輸入一個(gè)標(biāo)量值。pandas的Series和DataFrame數(shù)據(jù)類型接口的特征和行為是從Numpy數(shù)組和Python字典那里借用來的
(1)首先,選中輸入文件中的第一列,即Country列;然后顯示這個(gè)對象在局部作用域中的類型
(2)pandas的Series數(shù)據(jù)結(jié)構(gòu)不僅共享了DataFrame的一些屬性,還另外提供了與名稱有關(guān)的一個(gè)屬性。
(3)為了演示Series的切片功能,這里以截取Series變量Country中的最后兩個(gè)國家為例進(jìn)行說明
(4)Numpy的函數(shù)同樣適用于pandas的DataFrame和Series數(shù)據(jù)結(jié)構(gòu)
可以在DataFrame、Series和Numpy數(shù)組之間進(jìn)行各種類型的數(shù)值運(yùn)算。
利用pandas查詢數(shù)據(jù):
(1)head()和tail()這兩個(gè)函數(shù)的作用類似于UNIX系統(tǒng)中同名的兩個(gè)命令,即選取DataFrame的前n和后n個(gè)數(shù)據(jù)記錄,其中n是一個(gè)整型參數(shù):
(3)下面用最近的日期來查詢最近一年太陽黑子的相關(guān)數(shù)據(jù):
(4)下面介紹如何通過YYYYMMDD格式的日期字符串來查詢?nèi)掌?#xff0c;具體如下所示:
(5)索引列表也可用于查詢
(6)要想選擇標(biāo)量值,有兩種方法,這里給出的是速度明顯占優(yōu)勢的第二種方法。它們需要兩個(gè)整數(shù)作為參數(shù),其中第一個(gè)整數(shù)表示行,第二個(gè)整數(shù)表示列:
(7)查詢布爾型變量的方法與SQL的Where子句非常接近
利用pandas的DataFrame進(jìn)行統(tǒng)計(jì)計(jì)算
pandas的DataFrame數(shù)據(jù)結(jié)構(gòu)為我們提供了若干統(tǒng)計(jì)函數(shù)。
describe:這個(gè)方法將返回描述性統(tǒng)計(jì)信息
count:這個(gè)方法將返回非NaN數(shù)據(jù)項(xiàng)的數(shù)量
mad:這個(gè)方法用于計(jì)算平均絕對偏差,即類似于標(biāo)準(zhǔn)差的一個(gè)有力統(tǒng)計(jì)工具
median:這個(gè)方法用于返回中位數(shù)
min:這個(gè)方法將返回最小值
max:這個(gè)方法將返回最大值
mode:這個(gè)方法將返回眾數(shù)
std:這個(gè)方法將返回標(biāo)準(zhǔn)差
var:這個(gè)方法將返回方差
skew:這個(gè)方法用來返回偏態(tài)系數(shù),該系數(shù)表示的是數(shù)據(jù)分布的對稱程度
kurt:這個(gè)方法將返回峰態(tài)系數(shù),該系數(shù)用來反映數(shù)據(jù)分布曲線頂端尖峭或扁平程度
利用pandas的DataFrame實(shí)現(xiàn)數(shù)據(jù)聚合
(1)為Numpy的隨機(jī)數(shù)生成器指定種子,以確保重復(fù)運(yùn)行程序時(shí)生成的數(shù)據(jù)不會走樣
(2)通過Weather 列為數(shù)據(jù)分組,然后遍歷各組數(shù)據(jù)
(3)變量Weather_group是一種特殊的pandas對象,可由groupby()生成。這個(gè)對象為我們提供了聚合函數(shù),下面展示它的使用方法:
(4)恰如利用數(shù)據(jù)庫的查詢操作那樣,也可以針對多列進(jìn)行分組
(5)通過agg()方法,可以對數(shù)據(jù)組施加一系列的Numpy函數(shù)
DataFrame的串聯(lián)與附加操作
數(shù)據(jù)庫的數(shù)據(jù)表有內(nèi)部連接和外部連接兩種連接操作類型。實(shí)際上,pandas的DataFrame也有類似的操作,因此我們也可以對數(shù)據(jù)行進(jìn)行串聯(lián)和附加。我們將使用前面章節(jié)中的DataFrame來練習(xí)數(shù)據(jù)行的串聯(lián)和附加操作
函數(shù)concat()的作用是串聯(lián)DataFrame,如可以把一個(gè)由3行數(shù)據(jù)組成的DataFrame與其他數(shù)據(jù)行串接,以便重建原DataFrame:
為了追加數(shù)據(jù)行,可以使用append()函數(shù):
連接DataFrames
pandas提供的merge()函數(shù)或DataFrame的join()實(shí)例方法都能實(shí)現(xiàn)類似數(shù)據(jù)庫的連接操作功能。默認(rèn)情況下,join()實(shí)例方法會按照索引進(jìn)行連接,不過,有時(shí)不符合我們的要求
雖然,pandas支持所有的這些連接類型(內(nèi)部連接、左外連接、右外連接與完全外部連接等操作)
(1)用merge()函數(shù)按照員工編號進(jìn)行連接處理
(2)用join()方法執(zhí)行連接操作時(shí),需要使用后綴來指示左操作對象和右操作對象:
這個(gè)方法會連接索引值,因此得到的結(jié)果與SQL內(nèi)部連接會有所不同
(3)用merge()執(zhí)行內(nèi)部連接時(shí),更顯式的方法如下所示:
只要稍作修改,就可以變成完全外部連接:
處理缺失數(shù)據(jù)問題
對于pandas來說,它會把缺失的數(shù)值標(biāo)為NaN,表示None;還有一個(gè)類似的符號是NaT,不過它代表的是datetime64型對象。對NaN這個(gè)數(shù)值進(jìn)行算數(shù)運(yùn)算時(shí),得到的結(jié)果還是NaN。
pandas的isnull()函數(shù)可以幫我們檢查缺失的數(shù)據(jù),使用方法如下。
類似地,可以用DataFrame的notnull()方法來考察非缺失數(shù)據(jù):
通過fillna()方法,可以用一個(gè)標(biāo)量(如0)來替換缺失數(shù)據(jù),盡管有時(shí)可以用0替換缺失數(shù)據(jù),但是事情并不總是如此
數(shù)據(jù)透視表
數(shù)據(jù)透視表可以從一個(gè)平面文件中指定的行和列中聚合數(shù)據(jù),這種聚合操作可以是求和、求平均值、求標(biāo)準(zhǔn)差等運(yùn)算
由于pandas API已經(jīng)為我們提供了頂級pivot_table()函數(shù)以及相應(yīng)的DataFrame方法,所以,只要設(shè)置好aggfunc參數(shù),就可以讓這個(gè)聚合函數(shù)來執(zhí)行Numpy中諸如sum()之類的函數(shù)。參數(shù)cols用來告訴pandas要對哪些列進(jìn)行聚合運(yùn)算。
轉(zhuǎn)載于:https://www.cnblogs.com/yifdu25/p/8411673.html
總結(jié)
以上是生活随笔為你收集整理的《Python 数据分析》笔记——pandas的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 戴尔笔记本电脑怎么进去u启动不了 戴尔笔
- 下一篇: u盘有病毒 exe文件怎么恢复 恢复U盘