閱讀847 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《數據驅動安全:數據安全分析、可視化和儀表盤》一3.3 讀入數據

本節書摘來異步社區《數據驅動安全:數據安全分析、可視化和儀表盤》一書中的第3章 ,第3.1節,[美]傑·雅克布(Jay Jacobs)鮑布·魯迪斯(Bob Rudis) 著 薛傑 王占一 張卓 胡開勇 蔣夢颺 趙爽 譯, 更多章節內容可以訪問雲棲社區“異步社區”公眾號查看。

3.3 讀入數據

R語言和Python(特別是pandas)在讀取和解析數據結構進行處理時能夠處理複雜的數據。R的read.table()、read.csv()、read.delim()函數以及pandas的read_csv()函數幾乎覆蓋了所有的分隔文件讀取的需求,並且為各類劣質的輸入文件提供了強大的配置選項。在後續章節將會看到,兩種工具都提供了從SQL和NoSQL數據庫中提取數據、初始化HDFS大數據和處理非結構數據的良好方法。

合理的分隔是革命性技術
Base R和Python的pandas能閱讀包含分隔符的文件,雖然它們不知道分隔符會在什麼時候出現,以及分隔符具體是什麼,但是,數據科學社區的共識是分隔符應該是逗號分隔值(CSV)或者製表符(tab)分隔值(TSV),絕大多數樣本數據集都可以使用其中一種分隔符。CSV格式的完整定義在RFC 4180(https://www.rfc-editor.org/rfc/rfc4180.txt)中,具有以下高級屬性:
每行應隻有一個記錄。
數據文件可以包含一個可選的標題行。
報頭和數據行有用逗號(或製表符)分隔的字段。
每行應該有相同的字段數。
字段中的空格被視為顯著標識。
雖然RFC 4180明確規定逗號是一種分隔符,製表符也可以作為分隔符(沒有相關的RFC專門說明製表符分隔值)。
安全領域的很多工具都能夠導入和導出CSV格式文件。如果打算在類似Hadoop的環境中完成任何工作,你需要熟悉CSV/TSV。
另一種構建格式是JSON(JavaScript Object Notation),該格式廣泛應用在服務器和瀏覽器之間傳輸數據。正如你將在第8章看到的,JSON格式也是很多NoSQL數據庫環境/工具的基礎數據格式。JSON格式定義在https://www.rfc-editor.org/rfc/rfc4627.txt,有兩個主要結構:
成對的名稱/數值集合(一個“字典”)。
一個有順序的數值列表(一個“數組”)。
相較於CSV和TSV格式,JSON格式保證了更豐富、更複雜的數據表示,而且,JSON正在迅速取代另一種流行的、結構化的數據格式—可擴展標記語言(the Extensible Markup Language,XML)。這是因為JSON更簡潔的語法,更易於解析,以及(通常)更強的可讀性。雖然XML已經並將繼續作為文檔表示格式,但你現在應該考慮使用JSON作為你的結構化數據處理格式。

從下載文件的粗略檢查中你能看到AlienVault數據有一個相當簡單的記錄格式,該格式包含使用#作為分隔符的八個字段:

注意,信譽數據文件缺少可選報頭,所以上述示例代碼手動指定了更有意義的列名稱。這是一個可選的步驟,但是它可以在擴展分析時避免混淆,同時,你在後續章節會看到,它可以在你添加額外數據集時建立整個數據幀的一致性。
記錄格式的一致性使每種語言的數據有相同的消耗。在每種語言/環境中,我們遵循下麵的模式:
讀取數據。
分配有意義的列名(如果需要的話)。
使用內置函數來獲取數據的結構概述。
閱讀前幾行數據,通常使用head()函數。
我們會在第4章介紹更多細節。
後續的代碼(程序清單3-4和程序清單3-5)是基於前一節的代碼,不能保證它們在其他地方正常工作。我們將在本書中延續這種模式,所以你應該按順序裝載和運行每一章的代碼。
程序清單3-4
image
image

程序清單3-5
image
image

程序清單3-6
image


image

在Canopy內,IPython有一係列函數將數據輸出到一個HTML視圖格式(見程序清單3-6),該格式可以使程序清單3-5中的head()輸出更易閱讀(見圖3-1)。

最後更新:2017-06-21 18:02:22

  上一篇:go  新老DataHub遷移手冊
  下一篇:go  《數據驅動安全:數據安全分析、可視化和儀表盤》一3.2 獲取數據