。以下語句檢查並確認安裝成功。
Pandas有三種基本的數據結構:序列、數據幀和索引。
Pandas的Series對象是壹個帶有索引數據的壹維數組。Series對象將壹組數據和壹組索引綁定在壹起,我們可以通過values屬性和index屬性獲取數據。values屬性返回類似於NumPy數組的結果;index屬性返回的結果是pd類型的類數組對象。索引
可以像Numpy壹樣訪問Series(序列號也是從0開始計數的)。
潘多拉的系列對象比Numpy更加靈活和通用。
它們之間的主要區別是NumPy數組通過隱式定義的整數索引來獲取數值,而熊貓系列對象是通過顯式定義的索引與數值相關聯的。換句話說,Numpy的索引是由系統自行分配的,不能更改,但Series對象可以手動指定。
叢書是壹種特殊的字典。Series對象實際上是壹種將類型鍵映射到壹組類型值的數據結構。熊貓系列的類型信息使得它在某些操作上比Python的字典更高效。使用字典創建Series對象時,默認情況下,其索引按順序排列。
數據幀類似於RDBMS中的表。DataFrame可以看作是壹個二維數組,具有靈活的行索引和靈活的列名。
DataFrame有兩個常用屬性,即index屬性和columns屬性。前者可以得到索引標簽(線標簽);後者是保存列標簽的索引對象。DataFrame是壹個特殊的字典,壹個列映射壹個系列的數據。
DataFrame可以通過以下方式創建:(1)由單個Series對象創建。(2)通過字典列表創建。(3)通過系列對象字典創建。(4)用NumPy創建二維數組。(5)通過NumPy結構化數組創建。
您可以將Index視為壹個不可變的數組或有序的集合。當用作不可變數組時,壹般的數組訪問方法(如切片等。)都適用於索引,和數組最大的區別就是索引對象不能改變。作為集合使用時,Index還可以進行交集和並集等常見操作。
對序列的訪問可以用作字典或壹維數組。數據訪問的方法請參考Numpy的訪問方法,這裏就不贅述了。
如果Series的顯式索引是整數,那麽訪問時很容易混淆。例如,下面的例子:
從上面的例子總結,python默認的規則是單次訪問使用顯式索引,切片使用隱式索引,很容易混淆!Python提供了三個索引器:loc、iloc和ix。
Loc意味著:它意味著值和切片是顯式的。iloc屬性表明提取和切片都是隱式索引。Ix是loc和iloc的混合形式,應用於dataFrame(使用示例在3.3節)。
Dataframe可以通過獲取列名的字典樣式的值來獲取數據。您可以將DataFrame視為增強的二維數組,並使用values屬性逐行查看數組數據。ix索引器對整數索引的處理和之前在Series對象中引入的壹樣混亂。
對於壹元運算(比如函數和三角函數),這些通用函數會在輸出結果中保留索引和列標簽(很簡單,所有元素都會進行相應的運算並返回);對於二元運算(如加法和乘法),熊貓在傳遞通用函數時會自動對齊索引進行計算。
當對兩個序列或數據幀對象執行二進制計算時,Pandas將在計算過程中對齊這兩個對象的索引。如果要為缺失值指定默認值,需要使用add而不是+並指定fill_value:
兩個對象的行索引和列索引可以有不同的順序,得到的索引會自動按順序排列。
DataFrame和Series的操作規則與NumPy中的二維數組和壹維數組相同。如果需要使用廣播原理,那麽默認情況下,會按行計算。如果要按列操作,需要使用參數axis = 0。
註意:DataFrame可以使用loc來訪問行,但是它只能以df['col']的形式訪問列。
缺失值有三種形式:null、NaN或NA。
處理缺失值壹般有兩種方法:壹種是通過壹個覆蓋全球的掩碼來表示缺失值,另壹種是用壹個哨兵值來表示缺失值。
Mask就是用壹個和原圖壹樣大小的矩陣,用0或者1表示缺少壹個元素。使用特殊字符(如NaN)會導致標簽值丟失。
Pandas選擇使用tag方法來表示缺失值,包括Python中兩個原始缺失值:浮點數據類型的NaN值(包括integer)和Python中的None對象。
當使用None時,意味著壹個空的python對象,所以numpy的dtype=object,因為是壹個對象,所以在質量計算時效率會比標量低。用np.nan表示標量,效率會高很多。
Pandas為缺失值提供了幾個有用的API方法,即:isnull()、notnull()、dropna()和fillna()。其中,對於dataframe,dropna()方法會默認丟棄包含NaN的整行。如果要刪除整列,請添加axis=1參數。
Pandas的MultiIndex提供了基於元組表示的多級索引功能。
以下示例使用元組索引來生成序列。過濾2019的索引非常繁瑣。
Pandas的MultiIndex類型提供了各種實現方法,下面的例子使用元組來表示實現。
Unstack()方法可以快速地將多級索引的序列轉換成普通索引的數據幀。stack()方法達到了相反的效果。
總而言之,創建多級索引的方法包括:
(1)multi index:PD . multi index . from _ arrays由幾個不同級別的簡單數組列表構成。
(2)由多個索引值的元組組成的列表創建multi index:PD . multi index . from _ tuples..
(3)使用兩個索引的笛卡爾積創建multi index:PD . multi index . from _ product。
(4)直接提供級別和標簽來創建multi index(labeles指的是每個級別指定每個位置的整數):
在上面的示例中,Series和DataFrame都是按行進行索引的。其實也可以按列索引,非常簡單。下面舉個例子(2018和2019兩次考試中有幾個同學不同科目的成績):
當需要顯示和切片多級索引時,pd。IndexSlice對象可以用來對不同級別的維度進行切片,用逗號分隔,例如DF _ SD _ 003。在下面的例子中,Loc [IDX _ SD [2018,:],IDX _ SD ['愛麗絲',:]。其他切片和獲取操作與Numpy非常相似。
如果MultiIndex不是有序索引,大多數切片操作都會失敗。
如果Series或DataFrame的索引是無序的,可以簡單地通過sort_index方法快速排序。
層次數據維度轉換的另壹種方法是行列標簽轉換,可以通過reset_index方法實現。
熊貓對象合並是通過pd.concat()和pd.cancat的所有參數實現的(下面列出了這些參數的默認值):
Pd.concat()可以簡單地合並壹維序列或DataFrame對象,並且
Np.concatenate()合並數組。
默認情況下,數據幀的合並是逐行完成的(axis = 0);Pd.concat在合並時會保留索引,即使索引是重復的!如果設置了verify_integrity=True,則在生成重復索引時會觸發異常!有時候索引並不重要,合並時可以忽略,這可以通過設置ignore_index參數來實現。默認的合並方法是合並所有輸入列(join='outer '),但是也可以使用join='inner '來實現輸入列的交集合並。下面是壹個實現合並的例子:
Pandas的壹個基本特征是高性能的內存中數據連接和合並操作。
pd.merge()實現的功能是基於關系代數的壹部分。pd.merge()函數實現了三種類型的數據連接:壹對壹、多對壹和多對多。Pd.merge()會自動識別兩個dataframe*** * *的列,並將它們與該列相關聯。
在上面的例子中,相關的兩個dataframe具有相同的名稱列,pandas將根據相同的名稱列直接合並。由於要合並的兩個輸入列通常不是同壹個名稱,pd.merge()提供了壹些參數來處理這個問題。
1.最簡單的方法是直接將參數設置為列名字符串或包含多個列名的列表。只有當兩個數據幀具有* * *相同的列名時,才能使用此參數。