數據科學家必不可少的 5 個 Pandas 函數 [2022]
已發表: 2021-01-02在使用 Python 進行數據科學和數據分析時, Pandas顯然是最常用和最受歡迎的庫之一。 是什麼讓它特別? 在本教程中,我們將介紹 5 個這樣的功能,這些功能使 Pandas 成為數據科學家工具包中非常有用的工具。
在本教程結束時,您將了解 Pandas 中的以下函數以及如何將它們用於您的應用程序:
- 價值計數
- 通過...分組
- loc 和 iloc
- 獨特而獨特
- 剪切和 qcut
目錄
數據科學家的頂級 Pandas 函數
1. value_counts()
Pandas 的 value_counts() 函數用於顯示數據框列中所有唯一元素的計數。
專業提示:為了演示,我將使用 Titanic 數據集。
現在,要查找 Embarked 功能中的類計數,我們可以調用 value_counts 函數:
火車[ '登船' ].value_counts() |
#輸出: S 644 C 168 問77 |
此外,如果這些數字沒有多大意義,您可以查看它們的百分比:
train[ 'Embarked' ].value_counts(normalize= True ) |
#輸出: S 0.724409 C 0.188976 Q 0.086614 |
此外,默認情況下 value_counts 不考慮 NaN 或缺失值,這對於檢查非常重要。 為此,您可以將參數 dropna 設置為 false。
train[ 'Embarked' ].value_counts(dropna= False ) |
#輸出: S 644 C 168 問77 南2 |
2. group_by()
使用 Pandas group_by,我們可以按某些列拆分和分組我們的數據框,以便能夠查看數據中的模式和細節。 Group_by 涉及 3 個主要步驟:拆分、應用和組合。
train.groupby( '性別' ).mean() |
輸出:
如您所見,我們按特徵“性別”對數據框進行分組,並使用方法進行聚合。
您還可以使用 Pandas 的內置可視化來繪製它:
df.groupby( 'Sex' ).sum().plot(kind= 'bar' ) |
我們還可以通過使用多個特徵進行分層拆分來進行分組。
df.groupby([ 'Sex' , 'Survived' ] )[ 'Survived' ].count() |
必讀:熊貓面試問題
3.loc和iloc
Pandas 中的索引是最基本的操作之一,最好的方法是使用 loc 或 iloc。 “Loc”代表位置,“i”代表索引位置。 換句話說,當您想使用列/行的名稱或標籤來索引數據框時,您將使用 loc。 當你想使用位置索引列或行時,你會使用 iloc 函數。 我們先來看看loc 。
train.loc[ 2 , '性' ] |
上面的操作給了我們行索引 2 和列 'sex' 的元素。 同樣,如果您需要 sex 列的所有值,您可以:
train.loc[:, 'sex' ] |
此外,您可以過濾掉多個列,例如:
train.loc[:, 'sex' , '登船' ] |
您還可以使用 loc 中的布爾條件過濾掉,例如:
train.loc[train.age >= 25 ] |
要僅查看某些行,您可以使用 loc 對數據框進行切片:
火車.loc[ 100 : 200 ] |
此外,您可以將列軸上的數據框切片為:
train.loc[:, 'sex' : 'fare' ] |
上述操作會將所有行的數據幀從“sex”列切片到“fare”。
現在,讓我們繼續討論 iloc。 iloc 僅使用索引號或位置進行索引。 您可以切片數據幀,如:
火車.iloc [ 100 : 200,2 : 9 ] |
上述操作將從 100 到 199 的行和從 2 到 8 的列進行切片。同樣,如果您想水平拆分數據,您可以執行以下操作:
train.iloc[: 300 , :] |
4. unique() 和 nunique()
Pandas unique 用於從任何特徵中獲取所有唯一值。 這主要用於獲取數據中分類特徵中的類別。 Unique 顯示所有唯一值,包括 NaN。 它將其視為不同的唯一值。 讓我們來看看:
火車[ 'sex' ].unique() |
#輸出: [ '女' , '男' ] |
正如我們所見,它為我們提供了“性”特徵的獨特價值。

同樣,您還可以檢查唯一值的數量,因為某些功能中可能存在很多唯一值。
火車[ 'sex' ].nunique() |
#輸出: 2 |
但是,您應該記住 nunique() 不會將 NaN 視為唯一值。 如果您的數據中有任何 NaN,那麼您需要將 dropna 參數作為 False 傳遞,以確保 Pandas 也為您提供包括 NaN 在內的計數。
train[ 'sex' ].nunique(dropna= False ) |
#輸出: 3 |
5.cut() 和 qcut()
Pandas cut 用於對范圍內的值進行分箱,以離散化特徵。 讓我們深入了解它。 分箱是指根據連續值的範圍將數值或連續特徵轉換為一組離散值。 當您想根據數據點所在的範圍查看趨勢時,這會派上用場。
讓我們通過一個小例子來理解這一點。
假設,我們有 7 個孩子的分數,範圍從 0 到 100。 現在,我們可以將每個孩子的分數分配到特定的“bin”。
df = pd.Dataframe(數據= { '姓名' :[ 'Ck' , 'Ron' , 'Mat' , 'Josh' , 'Tim' , 'SypherPK' , 'Dew' , 'Vin' ], '標記' :[ 37 , 91 , 66 , 42 , 99 , 81 , 45, 71 ] }) df[ 'marks_bin' ] = pd.cut(df[ 'Marks' ], bins=[ 0 , 50 , 70 , 100 ], 標籤=[ 1 , 2 , 3 ]) |
然後我們可以將輸出附加為新特徵,並且可以刪除 Marks 特徵。 新的數據框看起來像:
#輸出: 名稱 Marks_bin 0 CK 37 1 1羅恩91 3 2墊66 2 3喬什42 1 4蒂姆99 3 5賽弗PK 81 3 6露水45 1 7 VIN 71 3 |
所以,當我說bins = [ 0 , 50 , 70 , 100 ]時,這意味著有 3 個範圍:
對於 bin 1,0 到 50,
箱 2 為 51 至 70,以及
71 到 100 屬於 bin 3。
因此,現在我們的特徵不包含分數,而是包含該學生分數所在的範圍或 bin。
與 cut() 類似,Pandas 還提供了名為qcut()的兄弟函數。 Pandas qcut接受分位數的數量,並根據數據分佈將數據點劃分到每個 bin。 所以,我們可以把上面的cut函數改成qcut:
df[ 'marks_bin' ] = pd.qcut(df[ 'Marks' ], q= 3 , 標籤=[ 1 , 2 , 3 ]) |
在上述操作中,我們告訴 Pandas 將特徵分成 3 等份並分配標籤。 輸出如下:
名稱 Marks_bin 0 CK 37 1 1羅恩91 3 2墊66 2 3喬什42 1 4蒂姆99 3 5賽弗PK 81 3 6露水45 1 7 VIN 71 2 |
注意最後一個值是如何從 3 變為 2 的。
另請閱讀:Pandas Dataframe Astype
在你走之前
我們看到了一些最常用的 Pandas 函數。 但這些並不是唯一重要的,我們鼓勵您了解更多 Pandas 最常用的功能。 這是一種很好且有效的方法,因為您可能不會使用 Pandas 的所有功能,而只使用其中的一部分。
學習世界頂尖大學的數據科學課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
為什麼 Pandas 庫如此受歡迎?
這個庫在數據科學家和數據分析師中確實很受歡迎。 這樣做的原因是它對大量文件格式的強大支持和豐富的功能集合來處理提取的數據。 它可以輕鬆地與 NumPy 等其他庫和包集成。
這個強大的庫提供了各種有用的功能,可以靈活地操作龐大的數據集。 一旦你掌握了它,你就可以用幾行代碼輕鬆完成偉大的任務。
什麼是合併功能,為什麼要使用它?
合併功能是 Pandas 數據框的一個特殊功能,用於合併 2 個數據框的多行或多列。 它是一種高內存連接操作,類似於關係數據庫。 您可以使用 on = Column Name 來合併公共列上的數據框。
您可以更新 left_on = Column Name 或 right_on = Column Name 以使用左側或右側數據框中的列作為鍵來對齊表。
除了 Pandas 庫,還有哪些 Python 數據科學庫?
除了 Pandas 庫之外,還有很多 Python 庫被認為是數據科學的一些最佳庫。 其中包括 PySpark、TensorFlow、Matplotlib、Scikit Learn、SciPy 等等。 它們中的每一個都因其獨特而令人驚嘆的特性和功能而被廣泛使用。
每個庫都有其自身的意義,例如當您必須處理統計數據時,更經常使用 SciKit Learn。 除了分析數據,您還可以使用這些神奇庫提供的功能創建儀表板和可視化報告。