命令行工具:csvkit命令行操作csv

csvkit

csvkit是一個處理CSV文件的一個小工具,基于python,可以直接通過pip install csvkit安裝。集成了csvlookcsvcutcsvsql等好用的小工具,非常好用。可以以表格形式顯示CSV文件,可以輕松選取CSV指定列,可以在其上執行SQL操作

以如下的student.csv為例,做簡單演示:

name gender score grade
David male 85 B
Michael female 90 A
Cammy male 88 A
Tom female 59 C

csvlook

csvlook和其他命令行一樣,可以直接指定文件作為輸入,也可以接受stdin作為輸入。對比下效果,直接cat student.csv的輸出:

<pre>
name,gender,score,grade
David,male,85,B
Michael,female,90,A
Cammy,male,88,A
Tom,female,59,C
</pre>

用csvlook后cat student.csv | csvlook的輸出:

name gender score grade
David male 85 B
Michael female 90 A
Cammy male 88 A
Tom female 59 C

<pre>

name gender score grade
David male 85 B
Michael female 90 A
Cammy male 88 A
Tom female 59 C

</pre>

熟悉Markdown語法的會發現這個就是Markdown里面的表格啊!

csvcut

cut作用相似,但對CSV支持更好。比如查看列名,選取列,剔除列等。

  • csvcut -n student.csv:輸出列名,當列比較多的時候特別有用,結果如下;
  • head -1 student.csv | tr ',' '\n' | cat -n:可以達到類似的效果;

<pre>
1: name
2: gender
3: score
4: grade
</pre>

  • csvcut -c 1 student.csv:提取第一列;
  • csvcut -c name student.csv:按名字提取列;
  • csvcut -C 2 student.csv:提取除去第二列的其他列,如下:
name score grade
David 85 B
Michael 90 A
Cammy 88 A
Tom 59 C

csvstat

可以對指定列做簡單地統計分析,比如想簡單看一下score的統計數據,可以直接提取該列,用pipeline傳遞給該命令即可:

  • csvcut -c score student.csv| csvstat:產生如下結果

<pre>
Type of data: Number
Contains null values: False
Unique values: 4
Smallest value: 59
Largest value: 90
Sum: 322
Mean: 80.5
Median: 86.5
StDev: 14.47987108598231501073829222
Most common values: 85 (1x)
90 (1x)
88 (1x)
59 (1x)

Row count: 4
</pre>

csvsql

這是一個比較狠的工具,直接在CSV文件上執行SQL查詢,直接傳入SQL語句即可:

  • csvsql --query "select avg(score) from student;" student.csv:計算score的均值
  • csvsql --query "select * from student where score > 85;" student.csv:選出score大于85行,如下:
name gender score grade
Michael female 90 A
Cammy male 88 A
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,001評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,786評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,986評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,204評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,964評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,354評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,410評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,554評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,106評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,918評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,093評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,648評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,342評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,755評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,009評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,839評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,107評論 2 375

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,726評論 18 399
  • 50個常用的sql語句Student(S#,Sname,Sage,Ssex) 學生表Course(C#,Cname...
    哈哈海閱讀 1,247評論 0 7
  • 一. Java基礎部分.................................................
    wy_sure閱讀 3,829評論 0 11
  • 一起死去吧
    自然清醒愛自己閱讀 196評論 0 0
  • 昨夜電閃雷鳴一夜,今早起來時候感覺冷了好多。感冒好像更嚴重了一些,迷迷糊糊給彩云打了電話讓他來接我。后來師父...
    磕長頭的瘋子閱讀 234評論 0 1