更新於 2024/02/05閱讀時間約 4 分鐘

Leetcode 30 天 Pandas 挑戰分享

raw-image

前言

前陣子我參加 Leetcode 的活動 - 30 Days of Pandas。這個挑戰對我來說不僅僅是學習的機會,更是一個把常用的 pandas 功能熟悉的練習。之前,在 coding 遇到應用 Pandas 處理資料的的問題時,因為不夠熟悉而需要 Google 搜尋或問 ChatGPT,我意識到儘管我知道 Pandas 有哪些功能,但當我真正需要使用時,我無法下意識去寫,這影響到 coding 的速度和分析處理資料的效率。於是,覺得是時候可以花一些時間,來練習這一塊,所以參加 30 Days of Pandas

30 Days of Pandas

30 Days of Pandas 簡介

這個計畫共有 32 題,其中 4 題需要 subscribe Leetcode Premium 才能解鎖,主要包含 Pandas 的各種基本在資料處理上一定會使用到的技巧,而這些題目也都是來自 Leetcode 本身的題庫,題目的難易度多為 Easy 和少量的 Medium,類型則是 Database。

題目描述

1. Data Filtering:從大型數據集中選擇特定的數據

.loc[].iloc[]: 用於基於標籤或位置的數據選擇

2. String Methods:對字符串類型的數據進行操作和處理

  • .str accessor: 提供一系列字符串處理方法,如 .lower(), .upper(), .contains(), .replace()
  • 正則表達式: 在字符串過濾和提取中使用

3. Data Manipulation:修改、轉換或重構現有數據

  • .apply(): 用於對列或行應用函數
  • .merge(), .join(): 數據合併
  • 資料類型轉換:例如將字符串轉為數字,時間序列處理

4. Statistics:處理和分析數據以獲取統計信息

  • 描述性統計函數:如 .mean(), .median(), .std(), .sum()
  • 分組統計:使用 .groupby() 進行數據分組並計算統計值
  • 覺得這是在特徵工程最常會用到的功能

5. Data Aggregation:多個項目合併為單一的統計表示

  • .groupby(): 用於分組數據
  • 聚合函數:如 .count(), .sum(), .agg() 用於匯總統計,有時候會和 statistics 的計算一起用

6. Data Integration: 結合來自不同來源的數據

    • 數據合併:使用 .merge().concat()
    • 數據連接:使用 .join()
    • 數據轉換:整合不同格式或結構的數據

關鍵技術

以下條列經過這三十天最常用的語法:

.drop_duplicates()

.sort_values()

.str.contains()

.iloc[]

.groupby(),

.transform()

.apply()

.merge()

這些語法是我覺得在處理資料表很常用到的技巧,可以著重熟悉他們,甚至認識語法還可以帶入哪些參數,例如: drop_duplicates ,可以設定 subset哪些列的重複值,並根據 keep選擇保留的方式。這些雖然都很基本,卻也是最常使用到的。

小心得

  • 30 天挑戰適合新手與想把 pandas 練熟的人:我覺得都沒有學習過 pandas 拿這個來當敲門磚是一個很不錯的起點,那對於每天都在用 padas 的人來說,有時候自己是寫 可行的方法,但可能不是最有效率、或是最簡潔的,就在這刷題的同時,解題後都可以直接參考別人的做法,覺得這樣的學習會更高效。
  • 30 天挑戰中間也是有中斷的日子:在寫這挑戰時,Leetcode 提供一個很方便的功能,可以設定自己的讀書計畫,例如只讀 1-5 、6 日休假,那這樣那天有完成就會獲得一個目標達成的貼紙,看到會更激勵自己。我在這過程中,中間有其他緊急的事情插件,就有中斷一些時間,但我覺得不要緊,最終還是挑戰完,而且是在適合的學習節奏下進行,整體就挺開心的。
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.