《数据驱动安全:数据安全分析、可视化和仪表盘》一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(http://www.rfc-editor.org/rfc/rfc4180.txt)中,具有以下高級屬性:
每行應只有一個記錄。
數據文件可以包含一個可選的標題行。
報頭和數據行有用逗號(或制表符)分隔的字段。
每行應該有相同的字段數。
字段中的空格被視為顯著標識。
雖然RFC 4180明確規定逗號是一種分隔符,制表符也可以作為分隔符(沒有相關的RFC專門說明制表符分隔值)。
安全領域的很多工具都能夠導入和導出CSV格式文件。如果打算在類似Hadoop的環境中完成任何工作,你需要熟悉CSV/TSV。
另一種構建格式是JSON(JavaScript Object Notation),該格式廣泛應用在服務器和瀏覽器之間傳輸數據。正如你將在第8章看到的,JSON格式也是很多NoSQL數據庫環境/工具的基礎數據格式。JSON格式定義在http://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
程序清單3-5
程序清單3-6
在Canopy內,IPython有一系列函數將數據輸出到一個HTML視圖格式(見程序清單3-6),該格式可以使程序清單3-5中的head()輸出更易閱讀(見圖3-1)。
總結
以上是生活随笔為你收集整理的《数据驱动安全:数据安全分析、可视化和仪表盘》一3.3 读入数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中执行js代码
- 下一篇: Idea快速生成War包