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