在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

數據科學家需要掌握哪些幾大命令行?

lviY_AI_shequ ? 來源:lp ? 2019-03-26 09:16 ? 次閱讀

對于許多數據科學家來說,數據操作起始于Pandas或Tidyverse。從理論上看,這個概念沒有錯。畢竟,這是為什么這些工具首先存在的原因。然而,對于分隔符轉換等簡單任務來說,這些選項通常可能是過于重量級了。有意掌握命令行應該在每個開發人員的技能鏈上,特別是數據科學家。學習shell中的來龍去脈無可否認地會讓你更高效。除此之外,命令行還在計算方面有一次偉大的歷史記錄。例如,awk - 一種數據驅動的腳本語言。Awk首次出現于1977年,它是在傳奇的K&R一書中的K,Brian Kernighan的幫助下出現的。在今天,大約50年之后,awk仍然與每年出現的新書保持相關聯! 因此,可以肯定的是,對命令行技術的投入不會很快貶值的。

我們會談及的內容

ICONV

HEAD

TR

WC

SPLIT

SORT & UNIQ

CUT

PASTE

JOIN

GREP

SED

AWK

ICONV

文件編碼總是棘手的問題。目前大部分文件都是采用的 UTF-8編碼。要想了解 UTF-8的魔力,可以看看這個優秀的視頻。盡管如此,有時候我們還是會收到非 UTF-8編碼的文件。這種情況下就需要嘗試轉碼。iconv就是這種狀況下的救世主。

iconv是一個簡單的程序,可以輸入某種編碼的文本,然后以另一種編碼輸出。

#Converting-f(from)latin1(ISO-8859-1)#-t(to)standardUTF_8iconv-fISO-8859-1-tUTF-8output.txt

有用的選項:

head -n 輸出指定行

head -c 輸出指定的字節

HEAD

如果你是重度Pandas的用戶,那么你會對head很熟悉。通常在處理新數據時,我們想要做的第一件事就是了解究竟存在那些東西。這會引起Panda啟動,讀取數據,然后調用df.head() - 很費勁,至少可以說。head,不需要任何標志,將輸出文件的前10行。head真正的能力在于徹查清除操作。 例如,如果我們想將文件的分隔符從逗號改變為pipe通配符。一個快速測試將是:head mydata.csv | sed 's/,/|/g'

#Printsoutfirst10linesheadfilename.csv#Printfirst3lineshead-n3filename.csv

有用的選項:

head -n 輸出指定行

head -c 輸出指定的字節

TR命令

Tr類似于翻譯,它是基于文件清理的一個強大使用的工具。一個理想的用法是替換文件中的分隔符。

#將文件中的制表符分割轉換成逗號cattab_delimited.txt|tr" "","comma_delimited.csv

Tr的另一個特性是在你的處理中設置上所有的[:class:]變量。包括:

[:alnum:]所有字母和數字[:alpha:]所有字母[:blank:]所有水平空白[:cntrl:]所有控制字符[:digit:]所有數字[:graph:]所有可打印的字符,不包括空格[:lower:]全部小寫字母[:print:]所有可打印的字符,包括空格[:punct:]所有標點符號[:space:]所有的水平或垂直空格[:upper:]全部大寫字母[:xdigit:]所有十六進制數字

可以將這些多樣化的變量鏈接在一起,組成一個強大的程序。下面是一個基于字數統計的程序,用來檢查你的README文件是否使用過度。

catREADME.md|tr"[:punct:][:space:]

另外一個例子用于正則表達式

#將所有的大寫字母轉換成小寫catfilename.csv|tr'[A-Z]''[a-z]'

有用的選項:

tr -d刪除字符

tr -s壓縮字符

退格

換頁

垂直選項卡

NNN八進制值為NNN的字符

WC

字數統計。它的價值主要體現在使用 -l參數可以進行行數統計。

#WillreturnnumberoflinesinCSVwc-lgigantic_comma.csv

個用這個工具來驗證各個命令的輸出實在方便。因此,如果我們要在文件中轉換分隔符,然后運行 wc -l,驗證總行數是相同的。如果不同,我們就知道一定是哪里出錯了。

常用選項:

wc -c打印字節數

wc -m打印字符數

wc -L打印最長一行的長度

wc -w打印字數

SPLIT命令

文件大小可以有顯著變化。根據工作的不同,拆分文件是有益的,就像split。基本用法如下:

#我們拆分這個CSV文件,每500行分割為一個新的文件new_filenamesplit-l500filename.csvnew_filename_#filename.csv#lsoutput#new_filename_aaa#new_filename_aab#new_filename_aac

兩個地方很奇怪:一個是命名方式,一個是缺少擴展名。后綴約定可以通過-d標識來數字化。添加文件擴展名,你需要執行下面這個find命令。他會給當前文件夾下的所有文件追加.csv后綴,所以需要小心使用。

find.-typef-execmv'{}''{}'.csv;#lsoutput#filename.csv.csv#new_filename_aaa.csv#new_filename_aab.csv#new_filename_aac.csv

有效的選項:

split -b按特定字節大小拆分

split -a生成長度為N的后綴

split -x使用十六進制后綴分割

SORT & UNIQ

前面的命令是顯而易見的:他們按照自己說的做。這兩者提供了最重要的一擊(即去重單詞計數)。這是由于有uniq,它只處理重復的相鄰行。因此在管道輸出之前進行排序。一個有趣的事情是,sort -u將獲得與sort file.txt | uniq相同的結果。

Sort確實對數據科學家來說是一種很有用的小技巧:能夠根據特定的列對整個CSV進行排序。

#SortingaCSVfilebythesecondcolumnalphabeticallysort-t","-k2,2filename.csv#Numericallysort-t","-k2n,2filename.csv#Reverseordersort-t","-k2nr,2filename.csv

這里的-t選項是指定逗號作為分隔符。通常假設是空格或制表符。此外,-k標志是用來指定我們的鍵的。它的語法是-km,n,m是起始字段,n是最后一個字段。

有用的選項:

sort -f忽略大小寫

sort -r逆序

sort -R 亂序

uniq -c計算出現次數

uniq -d只打印重復行

CUT命令

cut用于刪除列。舉個栗子,如果我們只想要第一列和第三列。

cut-d,-f1,3filename.csv

選擇除了第一列以外的所有列

cut-d,-f2-filename.csv

與其他的命令組合使用,cut命令作為過濾器

#打印存在“some_string_value”的第1列和第3列的前10行headfilename.csv|grep"some_string_value"|cut-d,-f1,3

找出第二列中唯一值的數量。

catfilename.csv|cut-d,-f2|sort|uniq|wc-l#計算唯一值出現的次數,限制輸出前10個結果catfilename.csv|cut-d,-f2|sort|uniq-c|head

PASTE

paste是個有趣的小命令。如果你想合并兩個文件,而這兩個文件的內容又正好是有序的,那 paste 就可以這樣做。

#names.txtadamjohnzach#jobs.txtlawyeryoutuberdeveloper#JointhetwointoaCSVpaste-d','names.txtjobs.txt>person_data.txt#Outputadam,lawyerjohn,youtuberzach,developer

關于更多 SQL_-esque變體,請看下面。

JOIN

Join是一種簡單的、準切向的SQL。最大的區別在于Join將返回所有列,匹配可能只發生在一個字段上。默認情況下,join將嘗試使用第一列作為匹配鍵。對于不同的結果,需要以下語法:

#Jointhefirstfile(-1)bythesecondcolumn#andthesecondfile(-2)bythefirstjoin-t","-12-21first_file.txtsecond_file.txt

標準連接是一個內部連接。然而,外部連接也可以通過-af滯后來實現。另一個值得注意的是-e標志,如果發現有字段丟失,它可以用來替換成其他值。

#Outerjoin,replaceblankswithNULLincolumns1and2#-owhichfieldstosubstitute-0iskey,1.1isfirstcolumn,etc...join-t","-12-a1-a2-e'NULL'-o'0,1.1,2.2'first_file.txtsecond_file.txt

雖然它不是最容易使用的命令,但是在絕望的時刻,它就是唯一可用的措施。

常用的選項:

join -a 打印未成對的行

join -e替換缺失字段

join -j等同于 -1 FIELD -2 FIELD

GREP

全局搜索正則表達式并輸出,或使用grep;可能是最知名的命令,并且有很好的理由。 Grep具有很強的能力,特別是在大型代碼庫中查找方法。在數據科學領域,它充當了其他命令的改進機制。但其標準用法也很有用。

#遞歸搜索并列出當前目錄下包含'word'的所有文件grep-lr'word'.#列出包含word的文件數目grep-lr'word'.|wc-l

對包含word/pattern的行數進行計數

grep-c'some_value'filename.csv#同樣的功能,但是按照文件名列出當前目錄下所有包含該關鍵詞的文件grep-c'some_value'*

Grep使用or運算符-|來檢索多個值.

grep"first_value|second_value"filename.csv

有用的選項

alias grep="grep --color=auto" 使grep支持彩色輸出

grep -E 使用擴展正則表達式

grep -w 僅匹配完整單詞

grep -l 打印匹配文件的名稱

grep -v 倒序匹配

大殺器

Sed和Awk是本文兩個最有用的命令。為了簡潔,我不會討論那些令人費解的細節。相反,我會討論各種各樣的命令來證明他們令人印象深刻的實力。如果你想了解的更多,這本書就可以。

SED

在內核中sed是一個流編輯器。它擅長替換,但是也可以用來重構。

最基本的sed命令包含了s/old/new/g。也就是全局搜索舊值,替換新值。沒有/g 我們的命令可能在第一次出現舊值就會終止。

為了盡快了解它的能力,我們來看一個例子。在這個情況你會拿到下面的文件:

balance,name$1,000,john$2,000,jack

我們要做的第一件事就是移除美元符。-i 標識表示就地修改。''就是代表一個零長度文件擴展,因此重寫我們的初始文件。理想情況下,你會單獨測試這些并輸出到一個新文件。

sed-i'''s/$//g'data.txt#balance,name#1,000,john#2,000,jack

下一步,我們的balance列的逗號。

sed-i'''s/([0-9]),([0-9])//g'data.txt#balance,name#1000,john#2000,jack

最終,Jack有一天起來并準備辭職了。所以,再見吧,我的朋友。

sed-i'''/jack/d'data.txt#balance,name#1000,john

就像你所看到的,sed功能強大,但是樂趣不止于此。

AWK

最好的放最后。Awk不僅是一個簡單的命令:它是一個成熟的語言。在本文中包含的每一個命令中,awk目前是最酷的。如果你發現它令你印象深刻,這有大量的資源- 看這,這,和這。

awk包含的常用案例:

文本處理

格式化文本報告

執行計算操作

執行字符串操作

Awk在其最初雛形可以與grep平行。

awk'/word/'filename.csv

或者多使用一點魔法,讓grep和cut結合。在這,awk對所有行通過word打印了以tab分隔的第三和第四列。-F,只是將分隔符變為逗號。

awk-F,'/word/{print$3" "$4}'filename.csv

Awk具有大量有用的內置變量。例如, NF -字段數 - 和NR - 記錄數。為了獲取文件中這53個記錄:

awk-F,'NR==53'filename.csv

添加一個小竅門可以基于一個值或者多個值過濾。下面的第一個例子,會打印這些記錄中第一列為string的行數和列。

awk-F,'$1=="string"{printNR,$0}'filename.csv#Filterbasedoffofnumericalvalueinsecondcolumnawk-F,'$2==1000{printNR,$0}'filename.csv

多數值表達式:

#Printlinenumberandcolumnswherecolumnthreegreater#than2005andcolumnfivelessthanonethousandawk-F,'$3>=2005&&$5<=?1000?{?print?NR,?$0?}?'?filename.csv

計算第三列之和:

awk-F,'{x+=$3}END{printx}'filename.csv

計算那些第一列值為“something”的第三列之和。

awk-F,'$1=="something"{x+=$3}END{printx}'filename.csv

獲取文件的行數列數:

awk-F,'END{printNF,NR}'filename.csv#Prettierversionawk-F,'BEGIN{print"COLUMNS","ROWS"};END{printNF,NR}'filename.csv

打印出現過兩次的行:

awk-F,'++seen[$0]==2'filename.csv

移除多行:

#Consecutivelinesawk'a!~$0;{a=$0}']#Nonconsecutivelinesawk'!a[$0]++'filename.csv#Moreefficientawk'!($0ina){a[$0];print}

使用內置函數gsub()替換多個值。

awk'{gsub(/scarlet|ruby|puce/,"red");print}'

這個awk命令合并了多個CSV文件,忽略頭并在結尾追加。

awk'FNR==1&&NR!=1{next;}{print}'*.csv>final_file.csv

需要精簡一個大文件?好的,awk可以在sed的幫助下完成這件事。具體來說,基于一個行數,這個命令將一個大文件分為多個小文件。這個一行文件也會添加一個擴展名。

sed'1d;$d'filename.csv|awk'NR%NUMBER_OF_LINES==1{x="filename-"++i".csv";}{print>x}'#Example:splittingbig_data.csvintodata_(n).csvevery100,000linessed'1d;$d'big_data.csv|awk'NR%100000==1{x="data_"++i".csv";}{print>x}'

結束前

命令行擁有無窮的力量。本文所涵蓋的命令行知識足以讓你從零基礎到入門。除了這些已涉及的內容外,針對日常數據操作還有需要可考慮的實用程序。Csvkit,xsv和q是其中三個值得關注的。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編碼
    +關注

    關注

    6

    文章

    967

    瀏覽量

    55595
  • 命令行
    +關注

    關注

    0

    文章

    80

    瀏覽量

    10542
  • 數據科學
    +關注

    關注

    0

    文章

    168

    瀏覽量

    10429

原文標題:數據科學家需要掌握的幾大命令行騷操作

文章出處:【微信號:AI_shequ,微信公眾號:人工智能愛好者社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    在STM32實現命令行

    工作中的開發環境都是基于linux命令行交互,作為命令行的重度使用者,玩單片機也要使用命令行工具,百度了一些命令行工具,有幾個不錯的開源 cmd 交互工具,主要看了 finsh
    發表于 12-09 11:32 ?3009次閱讀

    Linux命令行工具

    Linux 新手往往對命令行心存畏懼。部分原因是因為需要記憶大量的命令,畢竟掌握命令是高效使用命令行
    發表于 07-25 08:10

    cmd網絡經典命令行

    cmd網絡經典命令行:
    發表于 06-11 15:17 ?36次下載
    cmd網絡經典<b class='flag-5'>命令行</b>

    caxa命令行中的應用

    caxa命令行中的應用 命令行對于大多用戶來說往往只是輸入數據的作用,但是其中的奧妙還有很多,下面就給大家
    發表于 10-18 18:18 ?2407次閱讀

    博達環網配置命令行

    博達工業交換要環網配置命令行
    發表于 12-27 16:24 ?0次下載

    CMD的命令行高級教程

    CMD的命令行高級教程
    發表于 10-24 08:31 ?30次下載
    CMD的<b class='flag-5'>命令行</b>高級教程

    Xilinx軟件命令行工具:XSCT開發和調試

    了解如何使用XSCT,Xilinx軟件命令行工具進行開發和調試。 該視頻演示了XSCT如何充當Xilinx SDK的命令行控制臺。
    的頭像 發表于 11-21 06:02 ?1.5w次閱讀

    Linux 命令行教程好書推薦

    LinuxCommand.org 創始人:William Shotts 之手。 在很早以前,該書便基于 CC 3.0 許可免費對外界開放閱讀,發展到今天,已幫助無數開發者習得并掌握 Linux 命令行
    的頭像 發表于 02-14 09:25 ?1688次閱讀

    Shell命令行解釋器簡介

    Shell 是一個命令行解釋器,Shell 為用戶提供了與設備進行命令行交互的方式,用戶通過串口、以太網、無線等方式將命令傳輸給具有 Shell 功能的設備,設備會解析命令并查找對應的
    的頭像 發表于 08-19 17:20 ?3521次閱讀

    Linux命令行與shell腳本編寫

    Linux命令行與shell腳本編寫
    發表于 01-11 16:50 ?4次下載

    linux命令行與shell編程實戰

    Linux命令行與Shell編程實戰主要涉及以下內容: Linux命令行基礎:學習Linux命令行的基本操作,如文件管理、進程管理、網絡配置等。熟悉使用命令行能夠提高工作效率,提升自己
    的頭像 發表于 11-08 10:57 ?1052次閱讀

    linux虛擬機怎么調出命令行

    在Linux虛擬機中調出命令行界面,可以通過以下步驟實現: 打開虛擬機,進入到Linux系統。 在桌面或應用菜單中找到終端或命令行圖標,點擊打開。 輸入命令行指令,執行相應的操作。 另外,也可以通過
    的頭像 發表于 11-08 11:28 ?3646次閱讀

    linux切換到命令行模式

    密碼后,按回車鍵確認。 如果密碼正確,您將被成功切換到命令行模式。 請注意,以上步驟僅適用于切換到純命令行模式。如果您需要使用圖形界面和命令行模式之間的切換,請使用init
    的頭像 發表于 11-13 16:47 ?2184次閱讀

    eclipse怎么使用命令行

    命令行中使用Eclipse來完成一些特定的任務。本文將詳細介紹如何在命令行中使用Eclipse。 首先,我們需要確保已經正確安裝了JDK(Java Development Kit)和Eclipse
    的頭像 發表于 12-06 11:26 ?3619次閱讀

    idea如何輸入命令行參數

    在許多軟件開發和系統管理的任務中,我們經常需要向應用程序傳遞命令行參數。命令行參數是在運行時傳遞給程序的值,用于指定程序的行為和配置選項。本文將詳細介紹如何在不同的編程語言和操作系統中輸入命令
    的頭像 發表于 12-06 15:01 ?1620次閱讀
    主站蜘蛛池模板: 永久免费人成网ww555kkk手机 | 最近2018中文字幕免费看在线 | 久久久久久青草大香综合精品 | 午夜影吧| 一级毛片免费不卡直观看 | 欧美性妇| 免费在线播放视频 | 777kkk亚洲综合欧美色老头 | 口述他拿舌头进去我下面好爽 | 色校园| 91精品国产91久久久久久青草 | 看全色黄大色大片免费久久怂 | 夜夜澡人人爽人人喊_欧美 夜夜综合网 | 欲色啪 | 欧美日韩亚洲一区 | 国产成人精品高清免费 | 成人精品在线观看 | 黄色的视频免费看 | 天天影视网天天影网 | 四虎影院在线免费播放 | 天天操狠狠 | 男人资源站 | 日本美女搞黄 | 亚州视频一区 | 男人j进人女人j 的视频 | 一区二区三区中文 | 美女黄页免费 | 性天堂网 | 亚洲成人毛片 | 日本视频www色 | 欧色美| 国产在线视频欧美亚综合 | 老色批午夜免费视频网站 | 久久精品看片 | 免费a网址 | 丁香花在线视频观看免费 | 亚欧毛片基地国产毛片基地 | 激情97| 国产精品欧美激情在线播放 | 色婷婷5月 | 伊人网综合在线视频 |