使用 csvkit 过滤数据

Shell 中的数据处理

Susan Sun

Data Person

过滤数据意味着什么?

我们可以通过以下方式从原始数据文件创建子集:

  1. 按列过滤数据
  2. 按行过滤数据

csvcut:按名或位置过滤

csvgrep:按值过滤,支持精确匹配、模式匹配或正则

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

  • 使用精确匹配或正则模糊匹配按过滤
  • 必须搭配以下选项之一:

-m:后接要过滤的精确行值

-r:后接正则表达式

-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...