用 csvkit 篩選資料

在 Shell 中進行資料處理

Susan Sun

Data Person

什麼是篩選資料?

我們可以從原始資料檔建立子集:

  1. 依欄位篩選資料
  2. 依列值篩選資料

csvcut:用欄位名稱或位置篩選資料

csvgrep:用列的值篩選,支援完全比對、樣式比對,甚至 regex

在 Shell 中進行資料處理

csvcut:依欄位篩選資料

csvcut:依「欄位名稱」或「欄位位置」篩選與截取 CSV 檔

說明文件:

csvcut -h
usage: csvcut [-h] [-d DELIMITER] [-t] [-q QUOTECHAR] [-u {0,1,2,3}] [-b]
              [-p ESCAPECHAR] [-z FIELD_SIZE_LIMIT] [-e ENCODING] [-S] [-H]
              [-K SKIP_LINES] [-v] [-l] [--zero] [-V] [-n] [-c COLUMNS]
在 Shell 中進行資料處理

csvcut:依欄位篩選資料

使用 --names-n 列出 Spotify_MusicAttributes.csv 的所有欄位名稱。

csvcut -n Spotify_MusicAttributes.csv
  1: track_id
  2: danceability
  3: duration_ms
在 Shell 中進行資料處理

csvcut:依欄位篩選資料

  1: track_id
  2: danceability
  3: duration_ms

依「位置」回傳資料中的第 1 欄:

csvcut -c 1 Spotify_MusicAttributes.csv
track_id
118GQ70Sp6pMqn6w1oKuki
6S7cr72a7a8RVAXzDCRj6m
在 Shell 中進行資料處理

csvcut:依欄位篩選資料

  1: track_id
  2: danceability
  3: duration_ms

依「名稱」只回傳資料中的第 1 欄:

csvcut -c "track_id" Spotify_MusicAttributes.csv
track_id
118GQ70Sp6pMqn6w1oKuki
6S7cr72a7a8RVAXzDCRj6m
在 Shell 中進行資料處理

csvcut:依欄位篩選資料

  1: track_id
  2: danceability
  3: duration_ms

依「位置」回傳資料中的第 2 與第 3 欄:

csvcut -c 2,3 Spotify_MusicAttributes.csv
danceability,duration_ms
0.787,124016.0
0.777,128016.0
0.795999999999999,132742.0
在 Shell 中進行資料處理

csvcut:依欄位篩選資料

  1: track_id
  2: danceability
  3: duration_ms

依「名稱」回傳資料中的第 2 與第 3 欄:

csvcut -c "danceability","duration_ms" Spotify_MusicAttributes.csv
danceability,duration_ms
0.787,124016.0
0.777,128016.0
0.795999999999999,132742.0
在 Shell 中進行資料處理

csvgrep:依列值篩選資料

csvgrep

  • 以「列」為單位篩選,支援完全比對或 regex 模糊比對
  • 必須搭配下列其一選項:

-m:後接要篩選的完整列值

-r:後接 regex 樣式

-f:後接檔案路徑

說明文件:

csvgrep -h
在 Shell 中進行資料處理

csvgrep:依列值篩選資料

Spotify_Popularity.csv 中找出 track_id = 5RCPsfzmEpTXMCTNk7wEfQ 的列。

csvgrep -c "track_id" -m 5RCPsfzmEpTXMCTNk7wEfQ Spotify_Popularity.csv
track_id,popularity
5RCPsfzmEpTXMCTNk7wEfQ,7.0
csvgrep -c 1 -m 5RCPsfzmEpTXMCTNk7wEfQ Spotify_Popularity.csv
track_id,popularity
5RCPsfzmEpTXMCTNk7wEfQ,7.0
在 Shell 中進行資料處理

一起用 csvkit 做資料篩選吧!

在 Shell 中進行資料處理

Preparing Video For Download...