
前言
前陣子我參加 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 日休假,那這樣那天有完成就會獲得一個目標達成的貼紙,看到會更激勵自己。我在這過程中,中間有其他緊急的事情插件,就有中斷一些時間,但我覺得不要緊,最終還是挑戰完,而且是在適合的學習節奏下進行,整體就挺開心的。