數據分析工具Pandas的數據結構學習

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處理學習記錄》中學習的內容進行格式、字體的設置。

Python使用Pandas入門數據分析螞蟻學Python購買專欄

總結:

Pandas作為一款數據分析工具,還有很多其他的內容需要學習,我會在后面有時間慢慢學習,大家有興趣的可以看看這本書,主要講解Pandas數據分析的基礎知識和應用。

想了解更多精彩內容,快來關注程序猿小董
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,538評論 3 417
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,761評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,207評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,419評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,959評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,678評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,978評論 2 374

推薦閱讀更多精彩內容