Data Scientist 不可不知的 csvkit
Posted on May 14, 2016 in Python 模組/套件推薦 by Amo Chen ‐ 3 min read
CSV 大概是目前最直覺方便的資料格式,除了可以用 Excel, OpenOffice , LibreOffice 等文書處理軟體編輯之外,也可以用程式語言進行處理與分析。不過有時候還是會需要在終端機(Terminal)上進行 CSV 的簡單操作,這時候就需要方便的工具來幫我們節省時間,在此推薦 csvkit 給大家!
以下節錄幾個 csvkit 支援的好用功能:
- csv, dbf, fixed, geojson, json, ndjson, xls, xlsx 等資料格式的轉換(轉成 CSV)
- CSV 檔案的 grep, sort, join 等
- CSV 欄位的簡單統計
安裝 csvkit
$ pip install csvkit
p.s. 如果使用 MAC OS X 10 可能會遇到因為 six
的套件相依性無法安裝的現象,可以使用以下指令安裝:
$ pip install csvkit --ignore-installed six
Documentation
安裝完之後就可以開始 GitHub 上的文件之旅了,本篇就不詳細介紹各個功能。
Tips
以下節錄幾個常用的指令。
將 json 轉為 csv
以 每月盛產農產品產地 為例:
$ in2csv -f json opendata.json > opendata.csv
查看 CSV 檔案的欄位名稱
$ csvcut -n opendata.csv
1: type
2: month
3: crop
4: variety
5: county
6: town
摘錄特定欄位的前 20 行
$ head -n 21 opendata.csv | csvcut -c month,crop | csvlook
|--------+-------|
| month | crop |
|--------+-------|
| 1 | 椪柑 |
| 1 | 椪柑 |
| 1 | 椪柑 |
| 1 | 椪柑 |
| 1 | 椪柑 |
| 1 | 椪柑 |
| 1 | 椪柑 |
| 1 | 番荔枝|
| 1 | 番荔枝|
| 1 | 番荔枝|
| 1 | 番荔枝|
| 1 | 番荔枝|
| 1 | 番荔枝|
| 1 | 番荔枝|
| 1 | 番荔枝|
| 1 | 番荔枝|
| 1 | 楊桃 |
| 1 | 楊桃 |
| 1 | 楊桃 |
| 1 | 番石榴|
|--------+-------|
尋找 11 月農產
csvgrep
有支援正規表示式喔!
$ csvgrep -c month -m 11 opendata.csv
type,month,crop,variety,county,town
水果,11,椪柑,,苗栗縣,卓蘭鎮
水果,11,椪柑,,台中市,東勢區
水果,11,椪柑,,雲林縣,古坑鄉
水果,11,椪柑,,嘉義縣,番路鄉
水果,11,椪柑,,嘉義縣,梅山鄉
水果,11,椪柑,,嘉義縣,竹崎鄉
水果,11,椪柑,,台南市,東山區
水果,11,楊桃,馬來種、二林種、秤錘種、青乾種、紅龍、台農2號,苗栗縣,卓蘭鎮
水果,11,楊桃,馬來種、二林種、秤錘種、青乾種、紅龍、台農2號,台南市,楠西區
水果,11,楊桃,馬來種、二林種、秤錘種、青乾種、紅龍、台農2號,屏東縣,里港鄉
水果,11,番石榴,珍珠種、世紀種,彰化縣,社頭鄉
水果,11,番石榴,珍珠種、世紀種,彰化縣,溪州鄉
水果,11,番石榴,珍珠種、世紀種,台南市,玉井區
水果,11,番石榴,珍珠種、世紀種,台南市,楠西區
水果,11,番石榴,珍珠種、世紀種,高雄市,阿蓮區
水果,11,番石榴,珍珠種、世紀種,高雄市,燕巢區
水果,11,番石榴,珍珠種、世紀種,高雄市,大社區
水果,11,柳橙,,南投縣,中寮鄉
...
其他
除了上述節錄的用法之外,還有直接從資料庫撈出 CSV 的功能 - csvsql
以及直接利用 Python interpreter 載入資料的功能 - csvpy
此外,也可以利用 csvkit 提供的 CSVKitReader
, CSVKitWriter
等等直接取代 Python 內建的 csv module (因為內建 csv 的 unicode 直接寫入還要先轉成 str …)。
以上就是 csvkit 的簡要介紹了!