1. 程式人生 > >七個用於資料科學(data science)的命令列工具

七個用於資料科學(data science)的命令列工具

資料科學是OSEMN(和 awesome 相同發音),它包括獲取(Obtaining)、整理(Scrubbing)、探索(Exploring)、建模(Modeling)和翻譯(iNterpreting)資料。作為一名資料科學家,我用命令列的時間非常長,尤其是要獲取、整理和探索資料的時候。而且我也不是唯一一個這樣做的人。最近,Greg Reda介紹了可用於資料科學的經典命令列工具。在這之前,Seth Brown介紹瞭如何在Unix下進行探索性的資料分析

下面我將介紹在我的日常工作中發現很有用的七個命令列工具。包括:jqjson2csvcsvkit、scrape、 xml2json、 sample 和 Rio。(我自己做的scrape、sample和Rio可以在

這裡拿到)。任何建議意見、問題甚至git上的拉取請求都非常歡迎(其他人建議的工具可以在最後找到)。好的,下面我們首先介紹jq。

1. jq – sed for JSON

JSON現在越來越流行,尤其當API盛行了以後。我還記得處理JSON時,用grep和sed寫著醜陋的程式碼。謝謝jq,終於可以不用寫的這麼醜了。

假設我們對2008總統大選的所有候選人感興趣。紐約時報有一個關於競選財務的API。讓我們用curl取一些JSON:

1 curl-s'http://api.nytimes.com/svc/elections/us/v3/finances/2008/president/totals.json?api-key=super-secret' > nyt.json

-s表示靜默模式。然後我們用jq最簡單的格式jq ‘.’,可以把得到的醜陋的程式碼

1 {"status":"OK","base_uri":"http://api.nytimes.com/svc/elections/us/v3/finances/2008/","cycle":2008,"copyright":"Copyright (c) 2013 The New York Times Company. All Rights Reserved.","results":[{"candidate_name":"Obama, Barack","name":"Barack Obama","party":"D",

轉換成漂亮的格式:

1 <nyt.json jq'.' | head { "results": [ { "candidate_id": "P80003338", "date_coverage_from": "2007-01-01", "date_coverage_to": "2008-11-24", "candidate_name": "Obama, Barack", "name": "Barack Obama", "party": "D",

同時,jq還可以選取和過濾JSON資料:

1234 <nyt.json jq-c'.results[] | {name, party, cash: .cash_on_hand} | select(.cash | tonumber > 1000000)' {"cash":"29911984.0","party":"D","name":"Barack Obama"}{"cash":"32812513.75","party":"R","name":"John McCain"}{"cash":"4428347.5","party":"D","name":"John Edwards"}

更多使用方法參見手冊,但是不要指望jq能做所有事。Unix的哲學是寫能做一件事並且做得好的程式,但是jq功能強大!下面就來介紹json2csv。

2. json2csv – 把JSON轉換成CSV

雖然JSON適合交換資料,但是它不適合很多命令列工具。但是不用擔心,用json2csv我們可以輕鬆把JSON轉換成CSV。現在假設我們把資料存在million.json裡,僅僅呼叫

1 <million.json json2csv-kname,party,cash

就可以把資料轉換成:

123 Barack Obama,D,29911984.0John McCain,R,32812513.75John Edwards,D,4428347.5

有了CSV格式我們就可以用傳統的如 cut -d 和 awk -F 一類的工具了。grep和sed沒有這樣的功能。因為CSV是以表格形式儲存的,所以csvkit的作者開發了csvkit。

3. csvkit – 轉換和使用CSV的套裝

csvkit不只是一個程式,而是一套程式。因為大多數這類工具“期望”CSV資料有一個表頭,所以我們在這裡加一個。

1 echo name,party,cash|cat-million.csv>million-header.csv

我們可以用csvsort給候選人按競選資金排序並展示:

123456789 <million-header.csv csvsort-rc cash|csvlook|---------------+-------+--------------||name|party|cash||---------------+-------+--------------||John McCain|R|32812513.75||Barack Obama|D|29911984.0||John Edwards|D|4428347.5||---------------+-------+--------------|

看起來好像MySQL哈?說到資料庫,我們可以把CSV寫到sqlite資料庫(很多其他的資料庫也支援)裡,用下列命令:

12345678 csvsql--db sqlite:///myfirst.db --insert million-header.csvsqlite3 myfirst.dbsqlite>.schema million-headerCREATE TABLE"million-header"(name VARCHAR(12)NOTNULL,party VARCHAR(1)NOTNULL,cash FLOATNOTNULL);

插入後資料都會正確因為CSV裡也有格式。此外,這個套裝裡還有其他有趣工具,如 in2csv、 csvgrep 和csvjoin。通過csvjson,資料甚至可以從csv轉換會json。總之,你值得一看。

4. scrape – 用XPath和CSS選擇器進行HTML資訊提取的工具

JSON雖然很好,但是同時也有很多資源依然需要從HTML中獲取。scrape就是一個Python指令碼,包含了lxml和cssselect包,從而能選取特定HTML元素。維基百科上有個網頁列出了所有國家的邊界線語國土面積的比率,下面我們來把比率資訊提取出來吧

1234567891011 curl-s'http://en.wikipedia.org/wiki/List_of_countries_and_territories_by_border/area_ratio' | scrape -b -e 'table.wikitable > tr:not(:first-child)' | head<!DOCTYPE html><html><body><tr><td>1</td><td>Vatican City</td><td>3.2</td><td>0.44</td><td>7.2727273</td></tr>

-b命令讓scrape包含和標籤,因為有時xml2json會需要它把HTML轉換成JSON。

5. xml2json – 把XML轉換成JSON

如名字所說,這工具就是把XML(HTML也是一種XML)轉換成JSON的輸出格式。因此,xml2json是連線scrape和jq之間的很好的橋樑。

1234567891011 curl-s'http://en.wikipedia.org/wiki/List_of_countries_and_territories_by_border/area_ratio' | scrape -be 'table.wikitable > tr:not(:first-child)' | xml2json | jq -c '.html.body.tr[] | {country: .td[1][], border: .td[2][], surface: .td[3][], ratio: .td[4][]}' | head{"ratio":"7.2727273","surface":"0.44","border":"3.2","country":"Vatican City"}{"ratio":"2.2000000","surface":"2","border":"4.4","country":"Monaco"}{"ratio":"0.6393443","surface":"61","border":"39","country":"San Marino"}{"ratio":"0.4750000","surface":"160","border":"76","country":"Liechtenstein"}{"ratio":"0.3000000","surface":"34","border":"10.2","country":"Sint Maarten(Netherlands)"}{"ratio":"0.2570513","surface":"468","border":"120.3","country":"Andorra"}{"ratio":"0.2000000","surface":"6","border":"1.2","country":"Gibraltar(United Kingdom)"}

相關推薦

用於資料科學(data science)的命令工具

資料科學是OSEMN(和 awesome 相同發音),它包括獲取(Obtaining)、整理(Scrubbing)、探索(Exploring)、建模(Modeling)和翻譯(iNterpreting)資料。作為一名資料科學家,我用命令列的時間非常長,尤其是要獲取、

GitHub Python資料科學聚焦:推薦5開源資料科學專案!

這篇文章重點介紹了5個數據科學專案,這些專案都是開源的,並且存在於GitHub儲存庫中,側重於高階機器學習庫和低階支援工具。 本文將通過GitHub repos重點介紹一組精選的開源Python資料科學專案。 之前的文章包括一些涵蓋AutoML、自然語言處理、資料視覺化、機器學習工作流程的庫。這一次,我們

從零開始學習Python用於資料科學,Python比你想象的要強大!

為什麼是Python? Python是一種多用途的程式語言,廣泛應用於資料科學,被稱為本世紀最性感的工作。資料科學家通過大資料集挖掘,以獲得洞察力並做出有意義的資料驅動決策。Python是一種通用的程式語言,用於Web開發、網路建設、科學計算等領域。我們將進一步討論python中的一系列令人敬畏

Linux下用於瀏覽網頁和下載檔案的幾命令工具

1. links Links是用C語言寫的一個開源web瀏覽器,支援包括Linux、Windows、OS X和OS/2在內的所有主流平臺。它提供了基於文字和圖形介面兩種版本。大多數標準的Linux發行版都預設包含了基於文字的版本。如果您的發行版中預設沒有安裝links,

MySQL 自帶工具使用介紹 使用命令工具mysqlimport匯入資料

MySQL 資料庫不僅提供了資料庫的伺服器端應用程式,同時還提供了大量的客戶端工具程式,如mysql,mysqladmin,mysqldump 等等,都是大家所熟悉的。雖然有些人對這些工具的功能都已經比較瞭解了,但是真正能將這些工具程式物盡其用的人可能並不是太多,或者知道的不全,也可能並不完全瞭解其中的某種特

iOS音視訊—FFmepg基礎知識:命令工具使用&封裝格式&視訊編碼音訊編碼資料瞭解&視訊畫素音訊取樣資料格式

iOS音視訊相關目錄 FFmepg基礎知識 封裝格式 1、封裝格式:mp4、mov、flv、wmv等等… 2、作用:視訊流+音訊流按照格式進行儲存在一個檔案中 3、MPEG2-TS格式:傳輸流,又稱TS、TP、MPEG-TS或M2T,用於音效、影象與資料的通訊協議。屬於

curl 7.63.0 釋出,用 URL 傳輸資料命令工具和庫

   curl 7.63.0 釋出了,此版本主要更新如下: curl: --write-out 新增 %{stderr} 和 %{stdout} curl: win32 新增選項 --dump-module-paths setopt: 新增 

監控Linux效能的18命令工具

對於系統和網路管理員來說每天監控和除錯Linux系統的效能問題是一項繁重的工作。在IT領域作為一名Linux系統的管理員工作5年後,我逐漸認識到監控和保持系統啟動並執行是多麼的不容易。基於此原因,我們已編寫了最常使用的18個命令列工具列表,這些工具將有助於每個Linux/Unix 系統管理員的工作。

假裝很忙的三命令工具

有時候你很忙。而有時候你只是需要看起來很忙,就像電影中的黑客一樣。有一些開源工具就是幹這個的。 如果你在消磨時光時看過諜戰片、動作片或犯罪片,那麼你就會清晰地在腦海中勾勒出黑客的電腦螢幕的樣子。就像是在《黑客帝國》電影中,程式碼雨 一樣的十六進位制數字流,又或

監控 Linux 效能的 18 命令工具

5.Netstat-網路狀態統計 Netstat是一個用於監控進出網路的包和網路介面統計的命令列工具。它是一個非常有用的工具,系統管理員可以用來監控網路效能,定位並解決網路相關問題。 # netstat -a | moreActive Internet connections (servers and es

帶你瞭解3Python命令工具

用 Click、Docopt 和 Fire 庫寫你自己的命令列應用。有時對於某項工作來說一個命令列工具就足以勝任。命令列工具是一種從你的 shell 或者終端之類的地方互動或執行的程式。Git 和 Curl 就是兩個你也許已經很熟悉的命令列工具。當你有一小段程式碼需要在一行中

cTop:用於容器監控的命令工具 | Linux 中國

ctop 為多個容器提供了一個簡潔凝練的實時指標概覽。它是一個類 top 的針對容器指標的介面。

ZooKeeper系列之:ZooKeeper命令工具

當啟動 ZooKeeper 服務成功之後,輸入下述命令,連線到 ZooKeeper 服務: zkCli.sh –server 10.77.20.23:2181 連線成功後,系統會輸出 ZooKeeper 的相關環境以及配置資訊,並在螢幕輸出“ Welcome to

TFS常見的幾命令工具

最近用到一些對TFS相關的幾個命令列工具,感覺還是比較有用,在此介紹給大家,希望對大家有用. 1 TfsConfig    TfsConfig.exe的預設位置是%Program files%\Microsoft Team Foundation Server 2010\Tools\下面,而且它是在TFS伺服

28 必備的 Linux 命令工具

dstat & sardstat 是一個用來替換 vmstat, iostat, netstat, nfsstat 和 ifstat 這些命令的工具,是一個全能系統資訊統計工具。slurm 網路流量圖形化工具vim & emacsVim是從 vi 發展出來的一個文字編輯器。程式碼補完、編譯

ionic4+angular6 混合移動開發 capacitor cordova Xcode 命令工具 Command Line Tools

首先要更新或者安裝 ionic cli npm install -g ionic 建立專案 ionic start ionic-angular tabs --type=angular   –type=angular 是需要多加的引數,現在官方只整合好了angua

Capacitor 新一代混合應用“神器” 會代替Cordova嗎?? Xcode 命令工具 Command Line Tools

      1.介紹or暢想   Capacitor是由ionic團隊最新開發維護的一個跨平臺的應用程式容器,可以輕鬆構建在iOS,Android,Electron 和 Web 上本機執行的Web應用程式。我們稱這些應用為“Native

Cygwin(類UNIX模擬環境)&CURL(強大的http命令工具

前言: 需要我用curl試下能否傳送post請求調起公司的模擬系統(目前) 跟著大佬的腳步,親測一把~ 感謝大佬的提供的部落格和指導 @咩神  個人部落格園及來源地址 Cygwin(類UNIX模擬環境) 一個可以讓你在windows下玩轉linux命令的工具 Cygwin官網下載安裝包:http

svn使用規範、在Windows下使用svn命令工具、svn命令的解釋

以前在公司一直使用git,現在公司有用svn,一時間還真的不知道如何下手,在網上搜尋了很多大神和官網文件的指導,總結了下面一份教程,希望能夠幫助大家快速上手,如果想更細緻的瞭解相關內容,可以點選每個小節裡提供的的連結。 1、Windows下命令列工具: 發現原來安裝的tortoisesvn已經整合到she

macOS 升級後重裝命令工具的問題

問題背景 最近升級個人macbook 從 10.13 到 10.14 在終端輸入 git 不能用了,發現是重灌作業系統後原來的 Command Line Tools 被自動解除安裝了, 採用 xcode-select --install 命令發現 currently unavailable. 解決方法