數據專家最常使用的 10 大類 Pandas 函數 ⛵

語言: CN / TW / HK

highlight: a11y-dark

攜手創作,共同成長!這是我參與「掘金日新計劃 · 8 月更文挑戰」的第17天,點擊查看活動詳情

Python具有極其活躍的社區和覆蓋全領域的第三方庫工具庫,近年來一直位居編程語言熱度頭部位置,而數據科學領域最受歡迎的python工具庫之一是 Pandas。隨着這麼多年來的社區高速發展和海量的開源貢獻者,使得 pandas 幾乎可以勝任任何數據處理工作。

Pandas的功能與函數極其豐富,要完全記住和掌握是不現實的(也沒有必要),資深數據分析師和數據科學家最常使用的大概有二三十個函數。在本篇內容中,ShowMeAI 把這些功能函數總結為10類。熟練掌握它們,你就可以輕鬆解決80% 以上的數據處理問題。

也推薦大家閲讀ShowMeAI針對數據分析編寫的教程和速查表,快速成為數據洞察高手! - 圖解數據分析:從入門到精通系列教程 - 數據科學工具庫速查表 | Pandas 速查表

💡 1.讀取數據

我們經常要從外部源讀取數據,基於不同的源數據格式,我們可以使用對應的 read_*功能:

  • read_csv:我們讀取CSV格式數據時使用它。這個函數的使用注意點包括 header(是否有表頭以及哪一行是表頭), sep(分隔符),和 usecols(要使用的列/字段的子集)。
  • read_excel:讀取Excel格式文件時使用它。這個函數的使用注意點包括 sheet_name(哪個表)和標題。
  • read_pickle:讀取pickle格式存儲的文件時使用,這個格式的優勢是比 CSV 和 Excel快很多。
  • read_sas: 我經常使用這個功能,因為我曾經使用 SAS 來處理數據。

💡 2.寫入數據

處理完數據後,我們可能會把處理後的DataFrame保存下來,最常用的文件寫入函數如下:

  • to_csv: 寫入 CSV 文件。 注意:它不保留某些數據類型(例如日期)。 很多情況下我們會將參數索引設置為False,這樣就不用額外的列來顯示數據文件中的索引。
  • to_excel: 寫入 Excel 文件。
  • to_pickle:寫入pickle文件。這是建議的寫入格式,讀寫的速度都非常快。

💡 3.數據概覽

將數據成 DataFrame 格式後,我們最好對數據有一個初步的瞭解,以下是最常用到的幾個數據概覽函數,能提供數據的基本信息。

  • head:返回前幾行,通常用於檢查數據是否正確讀取,以及瞭解數據字段和形態等基本信息。
  • tail:檢查最後幾行。在處理大文件時,讀取可能不完整,可以通過它檢查是否完整讀取數據。
  • info:數據集的總體摘要:包括列的數據類型和內存使用情況等信息。
  • describe:提供數據集的描述性摘要(比如連續值的統計信息、類別型字段的頻次信息等)。
  • shape: 行數和列數(注意,這是Dataframe的屬性,而非函數)。

💡 4.數據排序

我們經常需要對數據進行排序,Dataframe有一個重要的排序函數。

  • sort_values:通過指定列名對數據進行排序,可以調整升序或者降序規則。

💡 5.處理重複

我們手上的數據集很可能存在重複記錄,某些數據意外兩次輸入到數據源中,清洗數據時刪除重複項很重要。 以下函數很常用:

  • duplicated: 識別DataFrame中是否有重複,可以指定使用哪些列來標識重複項。
  • drop_duplicates:從 DataFrame 中刪除重複項。一般建議大家先使用 duplicated檢查重複項,確定業務上需要刪除重複項,再使用這個函數。

💡 6.處理缺失值

現實數據集中基本都會存在缺失值的情況,下面這些函數常被用作檢查和處理缺失值。

  • isnull:檢查您的 DataFrame 是否缺失。
  • dropna: 對數據做刪除處理。注意它有很重要的參數how(如何確定觀察是否被丟棄)和 thred(int類型,保留缺失值的數量)。
  • fillna: 用指定的方法填充缺失值,例如向前填充 ( ffill)。

💡 7.數據處理

一個字段可能包含很多信息,我們可以使用以下函數對字段進行數據處理和信息抽取:

  • map:通常使用map對字段進行映射操作(基於一些操作函數),如 df[“sub_id”] = df[“temp_id”].map(lambda x: int(x[-4:])).
  • apply:通過多列的數據創建新的字段,在創建新列時經常需要指定 axis=1

💡 8.數據透視

Dataframe有 2 種常見數據:

  • 『寬』格式,指的是每一行代表一條記錄(樣本),每一列是一個觀測維度(特徵)。
  • 『長』格式,在這種格式中,一個主題有多行,每一行可以代表某個時間點的度量。

我們會在這兩種格式之間轉換。

  • melt:將寬錶轉換為長表。 注意:重要參數id_vars(對於標識符)和 value_vars(其值對值列有貢獻的列的列表)。
  • pivot:將長錶轉換為寬表。注意:重要參數index(唯一標識符), columns(列成為值列),和 values(具有值的列)。

💡 9.合併數據集

我們對多個數據集Dataframe合併的時候,可能用到下列的函數(包括表關聯和拼接)。

  • merge:基於某些字段進行表關聯。重要的參數包括 on(連接字段),how(例如內連接或左連接,或外連接),以及 suffixes(相同字段合併後的後綴)。
  • concat:沿行或列拼接DataFrame對象。當我們有多個相同形狀/存儲相同信息的 DataFrame 對象時,它很有用。

💡 10.分組統計

我們經常會需要對數據集進行分組統計操作,常用的函數包括:

  • groupby:創建一個 GroupBy 分組對象,可以基於一列或多列進行分組。
  • mean:您可以在 GroupBy 分組對象上調用 mean 來計算均值。其他的常用統計信息包括標準差std
  • size: 分組的頻率
  • agg:聚合函數。包括常用的統計方法,也可以自己定義。

參考資料

「其他文章」