Pandas是一個開源的第三方Python庫,從 Numpy 和 Matplotlib 的基礎上構建而來,Python 數據分析的必備高級工具。
Pandas數據結構
Pandas內置了兩種數據結構,分別是一維數據結構(Series)和二維數據結構(DataFrame)。
一維數據結構(Series)
一維數據結構(Series)是帶標簽的一維數組,標簽可以理解為索引,標簽不局限性與整數,也可以是字符類型,使用name和index屬性描述數據值。
創建Series對象
Pandas 使用 Series(data, index, dtype, copy) 函數來創建 Series 對象,從而調用Series 對象的屬性和方法達到數據分析的目的。data是輸入的數據,可以是列表、數組、字典、常量等,index是索引值,必須唯一,如果沒有索引,默認從0開始遞增,dtype是數據類型,如果沒有這個參數,程序會自動判定,copy表示是否對data拷貝,默認是false。
代碼實例如下圖所示:
運行代碼,輸出結果如下圖所示:
從運行結果看出以下幾點
空對象警告:創建空對象報了一個警告,空對象打印的數據類型是float64,警告空對象將用object類型替代float64類型,要消除這個警告,傳一個dtype參數就可以了。
數組創建對象: 如果有索引參數,傳遞的索引長度必須與data長度相同。
字典創建對象:如果沒有傳遞索引,將以字典的鍵構造索引,如果傳遞了索引,索引需要和字典的值一一對應。
常量創建對象:常量創建對象必須傳遞索引參數。
數據訪問
位置索引訪問:和列表數組類似可以通過元素的下標進行訪問,可以通過位置下標進行訪問。也可以通過切片的方式訪問,
索引標簽訪問:使用索引標簽可以訪問單個的值,也可以訪問多個值,訪問不存在的標簽會報錯。
常用屬性和方法:
axes:以列表的形式返回所有行索引標簽
dtype:返回對象的數據類型
empty:返回一個空的Series對象
size:返回輸入數據的維度
vlaues:以列表形式返回Series對象
index:返回Index類型的索引
head(n):返回前n行數據,默認顯示前5行數據。
tail(n):返回后n行數據,默認顯示后5行數據。
isnull():如果為值不存在或者缺失,則返回 True
notnull():如果值不存在或者缺失,則返回 False
二維數據結構(DataFrame)
二維數據結構(DataFrame)是一種表格型數據結構,有行標簽和列標簽,行標簽是index,列標簽是columns。創建該結構時也可以指定相應的索引值。DataFrame每列是數據類型可以不同,也叫異構數據表。
創建DataFrame對象
使用DataFrame(data, index, columns, dtype, copy)方法創建對象,data傳入數據,可以是列表、數組、字典、Series、標量以及DataFrame對象;index是行標簽,默認從0開始遞增;columns是列標簽,默認從0開始遞增;dtype表示每一列的數據類型;copy表示復制data,默認是false。
代碼實例如下圖所示:
運行代碼,輸出如下圖所示:
列索引操作數據列
DataFrame 可以使用列索(columns index)引來完成數據的選取、添加和刪除操作。
代碼實例如下圖所示:
運行輸出結構如圖所示:
行索引操作數據行
常用屬性和方法
T:行和列轉置,也就是行和列對換
axes:返回一個僅以行軸標簽和列軸標簽為成員的列表
dtypes:返回每列數據的數據類型
empty:DataFrame中沒有數據或者任意坐標軸的長度為0,則返回True
shape:返回一個元組(a,b),表示了 DataFrame 維度,a表示行,b表示列
size:DataFrame中的元素數量
vlaues:以嵌套列表形式返回DataFrame 中的元素值
head(n):返回DataFrame 中前n列數據,默認是前5列
tail(n):返回DataFrame 中后n列數據,默認是后5列
shift(periods=1, freq=None, axis=0) :peroids為int類型,表示移動的幅度,可以是正數,也可以是負數,默認值為1;freq是日期偏移量,默認是None,適用時間序,取值為符合時間規則的字符串;axis如果是 0 或者 "index" 表示上下移動,如果是 1 或者 "columns" 則會左右移動;fill_value值用來填充缺失值。
代碼實例和運行結果如下圖所示:
數據排序
sort_index(axis=0,ascending=True) 在指定軸上根據索引進行排序,默認升序,axis為0是在0軸(也就是垂直方向)排序,為1是在1軸(水平方向)排序,ascending為True表示升序,為False表示降序。
sort_values(索引,axis=0/1,ascending=True/False) 在指定軸上根據數值進行排序,默認升序 索引必須有,默認0軸。
數據基本統計分析
sum():計算數據的總和,默認按0軸計算,axis為1按1軸算
count():非NaN值的數量
mean()和median():計算數據的算術平均值和算術中位數
var()和std():計算數據的方差和標準差
min()和max():計算數據的最小值和最大值
describe():針對0軸各列的匯總統計
代碼示例如下圖所示:
運行代碼輸出結果如下所示:
導入外部數據
Pandas庫還有導入外部數據,可以導入Execl文件、JSON文件等多種格式的數據文件。
read_execl(io,sheet_name,header),io是文件類對象,一般傳入文件路徑;sheet_name可以傳入工作的名稱,也可以是數字,0表示第一個工作表;header指定列表中從第幾行作為列索引/列名,默認是0。to_excel()導出數據生成新的Excel文件。
此外還有read_csv()和to_csv()導入導出CSV文件,read_html()和to_html()導入導出HTML文件,read_json()和to_josn()導入導出JSON文件等等。
代碼示例如下圖所示:
生成的文檔內容如下所示:
可以看到表格里已經增加了新的一條數據,文檔格式有些不一樣,我們可以根據之前《python Execl處理學習記錄》中學習的內容進行格式、字體的設置。
總結:
Pandas作為一款數據分析工具,還有很多其他的內容需要學習,我會在后面有時間慢慢學習,大家有興趣的可以看看這本書,主要講解Pandas數據分析的基礎知識和應用。
想了解更多精彩內容,快來關注程序猿小董