pandas教程, 1. Introduction to Panda:
Pandas是python數(shù)據(jù)分析的組合縮寫,是python中基于numpy和matplotlib的第三方數(shù)據(jù)分析庫,與后兩者共同構(gòu)成了python數(shù)據(jù)分析的基礎(chǔ)工具包。
享三劍客之名。
2.熊貓數(shù)據(jù)結(jié)構(gòu):
熊貓的核心數(shù)據(jù)結(jié)構(gòu)有兩種,一維數(shù)列和二維dataframe,可以看作是分別在numpy一維數(shù)組和二維數(shù)組的基礎(chǔ)上增加了相應(yīng)的標簽信息。正因為如此,
Series和dataframe可以從兩個角度來理解:
Series和dataframe分別是一維和二維數(shù)組。因為是數(shù)組,所以numpy中數(shù)組的用法基本上可以直接應(yīng)用到這兩種數(shù)據(jù)結(jié)構(gòu)上,包括數(shù)據(jù)創(chuàng)建、切片訪問、通用函數(shù)、廣播機制等等。
Series是帶標簽的一維數(shù)組,所以也可以看作是類字典結(jié)構(gòu):標簽是鍵,值是值;Dataframe可以看作是一個嵌套的字典結(jié)構(gòu),其中列名是鍵,每列的系列是值。
所以從這個角度來說,創(chuàng)建pandas數(shù)據(jù)的一個靈活的方式就是通過字典或者嵌套字典,同時自然衍生出適合series和dataframe的類字典接口,也就是通過loc索引訪問。
3、數(shù)據(jù)讀寫:
Pandas支持讀寫大多數(shù)主流文件格式的數(shù)據(jù)。常見的格式和接口有:
文本文件主要有csv和txt,對應(yīng)的接口有read_csv()和to_csv(),分別用來讀寫數(shù)據(jù)。
支持Excel文件,包括xls和xlsx格式。底層調(diào)用xlwt和xlrd操作Excel文件,對應(yīng)的接口是read_excel()和to_excel()。
SQL文件,支持大多數(shù)主流的關(guān)系數(shù)據(jù)庫,比如MySQL,需要相應(yīng)的數(shù)據(jù)庫模塊的支持,相應(yīng)的接口有read_sql()和to_sql()。
此外,熊貓還支持html、json等文件格式的讀寫。
4.數(shù)據(jù)訪問:
Series和dataframe具有numpy數(shù)組和字典的結(jié)構(gòu)特征,所以數(shù)據(jù)訪問是從這兩個方面入手的。同時,還支持bool索引進行數(shù)據(jù)訪問和過濾。
[],這是一種非常方便的訪問方式,但有必要區(qū)分series和dataframe:
Series:可以使用標簽或數(shù)字索引訪問單個元素,也可以使用相應(yīng)的切片訪問多個值。因為只有一維信息,所以沒有懸念。
Dataframe:不能訪問單個元素,只能返回一列、多列或多行:單值或多值(多個列名的列表)訪問時可以按列查詢,單值訪問時列名沒有歧義時可以用屬性符號直接訪問。以切片形式訪問時,按行查詢,
還區(qū)分了數(shù)字切片和標簽切片:輸入數(shù)字索引切片時,類似于普通列表切片;當輸入標簽切片時,執(zhí)行范圍查詢(即切片的第一個和最后一個值不需要存在于標簽列中),并且包括兩端標簽的結(jié)果。如果沒有匹配的行,則返回空白。
但是,標簽切片類型需要與索引類型一致。例如,當標簽列類型(可通過df.index.dtype查看)為時間類型時,如果將不能隱式轉(zhuǎn)換為時間的字符串用作索引片,則會引發(fā)錯誤。
5、數(shù)據(jù)處理:
熊貓最強大的功能當然是數(shù)據(jù)處理和分析,可以獨立完成數(shù)據(jù)分析前的大部分數(shù)據(jù)預(yù)處理需求。簡單概括起來,可以分為以下幾個方面:
數(shù)據(jù)清理
數(shù)據(jù)處理中的清理主要包括空值、重復值和異常值的處理:
空值
空字符串、空列表等。不是空值;同樣,notna和notnull用于確定它是否為非空。
填充空值。按照一定的策略填充空值,如常量填充、向前/向后填充等。也可以通過inplace參數(shù)確定是否在本地更改它。
刪除空值,dropna,刪除整行或整列的空值,可以通過axis設(shè)置,包括inplace參數(shù)。
重復值
檢測重復值,duplicate,檢測每行是否重復,返回一行索引的bool結(jié)果??梢酝ㄟ^keep參數(shù)設(shè)置首行/末行/無預(yù)留。例如,keep=first意味著當有多個重復行時,
第一行被認為是合法的,可以保留。
刪除重復值,drop_duplicates,逐行檢測并刪除重復記錄,或者通過keep參數(shù)設(shè)置保留項。默認情況下,該方法按行檢測,因此如果需要按列刪除,可以在執(zhí)行該方法之前對其進行轉(zhuǎn)置。
離群值,判斷離群值的標準取決于具體的分析數(shù)據(jù),這里只提供兩種備選的處理離群值的方法。
Delete、drop和accept參數(shù)用于刪除特定軸上的一條或多條記錄。可以通過軸參數(shù)設(shè)置是按行刪除還是按列刪除。
Replace,replace,非常強大的功能,對序列或數(shù)據(jù)幀中的每個元素進行條件替換操作,還開啟了正則表達式功能。
數(shù)值計算
因為pandas是在numpy的基礎(chǔ)上實現(xiàn)的,所以numpy的常見數(shù)值計算操作也適用于pandas:
通用函數(shù)ufunc可以像操作標量一樣對所有串行或數(shù)據(jù)幀的元素執(zhí)行相同的操作,這與numpy的特性是一致的。比如上面提到的replace函數(shù),本質(zhì)上可以看作是一個通用函數(shù)。
按如下方式逐個元素對數(shù)據(jù)表求平方。
廣播機制,即當尺寸或形狀不匹配時,會根據(jù)一定條件廣播后計算。因為熊貓是帶標簽的數(shù)組,所以在播放過程中會根據(jù)標簽匹配自動播放,而不是像numpy那樣純順序播放。舉個例子,
在下面的示例中,dataframe和series相乘。雖然兩者的維度和大小不同,標簽順序不一致,但是通過標簽匹配仍然可以得到預(yù)期的結(jié)果。
字符串矢量化,即對數(shù)據(jù)類型為字符串格式的列執(zhí)行矢量化的字符串操作。本質(zhì)上就是調(diào)用series.str屬性的series接口來完成相應(yīng)的字符串操作。特別強大的是,除了常用的字符串操作方法,
str屬性接口還集成了正則表達式的大部分功能,這使得pandas在處理字符串列時高效而強大。例如,下面的代碼可以用來計算每個句子的字數(shù)。
與字符串一樣,時間類型向量化操作是在pandas中得到優(yōu)先處理的另一種數(shù)據(jù)類型。就像字符串列可以用str屬性調(diào)用字符串接口一樣,時間類型列可以用dt屬性調(diào)用相應(yīng)的接口,在處理時間類型的時候會非常有效。
數(shù)據(jù)變換
Pandas還提供了更強大的數(shù)據(jù)轉(zhuǎn)換方法。
map,適用于series對象,功能與python中的普通map函數(shù)類似,即對給定序列中的每個值執(zhí)行相同的映射操作,
不同的是series中的map接口的映射方式既可以是一個函數(shù),也可以是一個字典
apply,既適用于series對象也適用于dataframe對象,
但對二者處理的粒度是不一樣的:apply應(yīng)用于series時是逐元素執(zhí)行函數(shù)操作;apply應(yīng)用于dataframe時是逐行或者逐列執(zhí)行函數(shù)操作(通過axis參數(shù)設(shè)置對行還是對列,默認是行),
僅接收函數(shù)作為參數(shù)
applymap,僅適用于dataframe對象,且是對dataframe中的每個元素執(zhí)行函數(shù)操作,從這個角度講,與replace類似,applymap可看作是dataframe對象的通函數(shù)。
合并與拼接
pandas中又一個重量級數(shù)據(jù)處理功能是對多個dataframe進行合并與拼接,對應(yīng)SQL中兩個非常重要的操作:union和join。pandas完成這兩個功能主要依賴以下函數(shù):
concat,與numpy中的concatenate類似,但功能更為強大,可通過一個axis參數(shù)設(shè)置是橫向或者拼接,要求非拼接軸向標簽唯一(例如沿著行進行拼接時,要求每個df內(nèi)部列名是唯一的,
但兩個df間可以重復,畢竟有相同列才有拼接的實際意義)
merge,完全類似于SQL中的join語法,僅支持橫向拼接,通過設(shè)置連接字段,實現(xiàn)對同一記錄的不同列信息連接,支持inner、left、right和outer4種連接方式,
但只能實現(xiàn)SQL中的等值連接
join,語法和功能與merge一致,不同的是merge既可以用pandas接口調(diào)用,也可以用dataframe對象接口調(diào)用,而join則只適用于dataframe對象接口
append,concat執(zhí)行axis=0時的一個簡化接口,類似列表的append函數(shù)一樣
實際上,concat通過設(shè)置axis=1也可實現(xiàn)與merge類似的效果,二者的區(qū)別在于:merge允許連接字段重復,類似一對多或者多對一連接,此時將產(chǎn)生笛卡爾積結(jié)果;而concat則不允許重復,
僅能一對一拼接。
pandas教程,以上就是本文為您收集整理的pandas教程最新內(nèi)容,希望能幫到您!更多相關(guān)內(nèi)容歡迎關(guān)注。