JavaScript數據整理 ( 簡體 字) |
作者:[美]阿什利·戴維斯(Ashley Davis)著 楊小冬譯 | 類別:1. -> 程式設計 -> 網路編程 -> Javascript |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 52210 詢問書籍請說出此書號!【有庫存】 NT售價: 490 元 |
出版日:11/1/2019 |
頁數:450 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302537298 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:數據的世界很大,單憑自己就想暢游其中是一件非常困難的事。《JavaScript數據整理》可以作為你的指導,帶你了解如何使用JavaScript來處理數據。 《JavaScript數據整理》是一本非常實用的實際操作指南,內容非常寬泛,為你介紹如何使用JavaScript來處理數據。《JavaScript數據整理》詳細介紹了整個開發過程,在閱讀《JavaScript數據整理》的過程中,你會感覺就像是自己在親自執行相關工作。 書中涵蓋大量的工具、技術和設計模式,而這些是使用JavaScript高效處理數據所必不可少的。通過《JavaScript數據整理》的學習,你將了解到如何應用這些技能并構建一個切實可行的數據處理流程,其中包括數據整理的所有階段,從數據采集一直到數據可視化。 當然,《JavaScript數據整理》無法涵蓋關于數據整理的所有內容,因為這一主題的范圍極其廣泛,并且不斷發展演變,但是,《JavaScript數據整理》的一個主要目標就是幫助你構建并管理自己的數據整理工具包。閱讀并認真學習《JavaScript數據整理》以后,你不僅能夠構建數據處理流程,還可以掌握相關技能,從而自如地在這個復雜且不斷發展的生態系統中遨游,評估各種可幫助你獨立創建或擴展系統的工具和庫,并能快速推進你自己的開發過程。 《JavaScript數據整理》的目標讀者 《JavaScript數據整理》主要面向想要提升數據整理技能的中等水平的JavaScript開發人員。要想充分理解《JavaScript數據整理》的內容,你應該已經對某種流行的JavaScript開發平臺(如瀏覽器、Node.js、Electron或Ionic)有著豐富的使用經驗。 你需要對JavaScript有多大程度的了解呢?基本上來說,你應該對基本語法以及如何使用JavaScript匿名函數有一定的了解。《JavaScript數據整理》中會用到Node.js代碼中簡潔的箭頭函數語法以及基于瀏覽器的代碼中的傳統語法(為了向后兼容)。 如果對Node.js和異步編碼有基本的了解,那么會對學習《JavaScript數據整理》有非常大的幫助,不過,即使不了解這些內容也沒有關系,《JavaScript數據整理》第2章提供了關于使用JavaScript創建Node.js和基于瀏覽器的應用的基礎知識,并簡要介紹如何使用Promise進行異步編碼。 即使你不具備很好的JavaScript技能,也不必過分擔心,這是一種非常簡單的語言,可以輕松上手,并且在網上可以找到大量相關的學習資料。我相信,在閱讀《JavaScript數據整理》的過程中,你可以輕松地學會JavaScript。如果你想要學習數據整理,同時還需要學習JavaScript,也不用擔心,只需要付出一點點額外的努力就完全沒有問題。 此外,你還需要掌握一些基本的計算機技能,以便安裝Node.js以及《JavaScript數據整理》中涉及的其他工具。要想執行《JavaScript數據整理》中提供的示例代碼,你需要具備文本編輯器、Node.js、瀏覽器,并且能夠訪問Internet(用于下載示例代碼)。 《JavaScript數據整理》的組織結構:路線圖 《JavaScript數據整理》分為14章,涵蓋了數據整理的各個主要階段。首先,我會對每個階段進行較為詳細介紹,然后提供更詳盡的示例,最后著重解決在將數據處理流程置于生產環境中時要應對的各種問題。 ● 第1章對整個數據整理過程進行了簡單介紹,并解釋了為什么需要使用JavaScript來完成數據整理工作。 ● 第2章介紹構建Node.js應用和基于瀏覽器的應用以及使用Promise進行異步編碼的基本知識。如果你已經對這些基本知識有了很好的了解,就可以跳過該章,繼續學習后面的內容。 ● 第3章主要介紹數據的采集、存儲和檢索。可以為你解答以下問題:如何檢索數據?如何存儲數據以便進行高效檢索?該章講解如何從文本文件和REST API讀取數據,如何解碼CSV和JSON格式,并帶你了解MongoDB和MySQL數據庫的基本使用方法。 ● 第4章簡要介紹一些不常見的數據檢索方法:使用正則表達式解析非標準格式,通過網頁爬取技術從HTML頁面提取數據,以及必要時采用二進制格式。 ● 第5章介紹探索性編碼和數據分析,這是一種功能強大并且可以有效提升工作效率的技術,能夠幫助你快速構建數據處理流程。我們首先在Excel中構建原型,然后在Node.js中進行編碼,最后在瀏覽器中實現基本的可視化。 ● 第6章主要關注數據清洗和轉換,這些是必不可少的準備工作。我們將了解用于處理問題數據的各種方法。 ● 第7章回答一個較難的問題:如果數據文件太大,無法在內存中完整存儲,那么我們應該如何處理這種文件呢?我們的解決方案是使用Node.js流逐步地遞增式地處理這種數據文件。 ● 第8章介紹我們應該如何實際處理大型數據集,方法就是使用數據庫。我們將帶你了解各種MongoDB使用技術,幫你高效地檢索可以在內存中存儲的數據。我們將使用MongoDB API來對數據進行篩選、投影和排序。此外,還將使用遞增式處理方法,從而確保可以處理大型數據集,而不會耗盡內存。 ● 第9章介紹如何使用JavaScript進行數據分析。首先介紹基本的構建塊,然后帶你了解更多高級技術。在這里,你將學到滾動平均數、線性回歸的相關知識,掌握如何處理時間序列數據,并了解數據變量之間的關系以及更多其他內容。 ● 第10章主要介紹基于瀏覽器的可視化,這也是JavaScript為人稱道的一點。我們將采用一些真實的數據,并利用C3圖表庫創建一些交互式折線圖、條形圖和餅圖,以及一個散點圖。 ● 第11章介紹如何實現基于服務器端的可視化,并通過無頭瀏覽器使其可以在服務器端正常使用。當你在自己的開發工作站執行探索性數據分析時,這種技術非常有用。此外,它還可用于預呈現圖表以便在網頁中顯示,以及呈現PDF報告以便自動分發給用戶。 ● 第12章中,我們通過將前面各章中的多種技術整合成一個接近生產就緒狀態并可實際使用的系統,實際構建一個數據處理流程。我們將構建一個空氣質量監測系統。一個傳感器會將實時數據輸入到我們的處理流程中,在流程中經過處理后,會根據設定的條件發布SMS警報,并自動生成報告,然后在瀏覽器中實時更新可視化結果。 ● 第13章進一步擴展了我們的可視化技能。介紹了D3的基本知識,D3是JavaScript生態系統中最著名的可視化工具包。這個工具包非常復雜,不過,我們可以利用它實現很多令人難以置信的自定義可視化效果。 ● 第14章是《JavaScript數據整理》的最后一章,將帶我們進入生產環境。我們將了解進入生產環境時需要面對的各種難題,并學習一些基本的策略,以幫助我們將應用交付給對應的受眾。 你可從每個資源庫對應的網頁中下載每章代碼的ZIP壓縮文件。另外,也可在學習《JavaScript數據整理》的過程中使用Git復制每個資源庫。可以使用任何現成的代碼,并以此為基礎完成自己的實踐工作或項目,這可以節省大量時間。我已經對每個代碼示例進行了一些優化處理,使其盡可能簡單,并且盡量完整包含所需的各種內容。 《JavaScript數據整理》中的絕大多數代碼都是在Node.js上運行的,并且使用的是適用于最新版本JavaScript的語法。其余代碼則在瀏覽器中運行。這部分代碼原本設計用來在舊版瀏覽器中運行,因此,對應的語法與Node.js代碼有一點點不同。在撰寫《JavaScript數據整理》時,我使用的是Node.js版本8和9,然而,當你閱讀《JavaScript數據整理》時,很可能已經發布了新版本。如果你在代碼中發現任何問題,歡迎給我提供反饋信息,只需要在相關的資源庫網頁上提交問題即可。 《JavaScript數據整理》中包含很多源代碼示例,這些示例既有編號代碼清單形式,也有普通文本行形式。不管是哪種形式,源代碼都采用固定寬度字體格式,以便與普通文本區分。有時,代碼還會采用粗體格式,以便突出顯示與相應章節中之前的操作步驟相比哪些發生了更改,例如向現有代碼行中添加新功能時,會對其進行相應的更改。 在很多情況下,我們對原始的源代碼已經進行了格式上的調整,添加了一些換行符,并調整了縮進,以便適合《JavaScript數據整理》中可用的頁面空間。在少數情況下,這樣做仍然不夠,那么我們需要在代碼清單中包含續行符標記(?)。此外,當在文本中介紹代碼時,通常會將源代碼中的注釋刪掉。很多代碼清單都會附帶代碼注釋,用于重點介紹一些比較重要的概念。 圖書論壇 購買《JavaScript數據整理》后即可免費訪問Manning出版社運營和維護的專用Web論壇,在這里,你可以針對《JavaScript數據整理》發表自己的評論,詢問一些技術上的問題,并且可以從作者和其他用戶那里獲得相關的幫助。如果想要訪問此論壇。此外,你還可以訪問以下網址,了解有關Manning論壇以及行為規范的更多信息。 Manning會保證為讀者提供一個專門的場所,以供各個讀者以及讀者與作者之間進行一些有意義的對話和交流。這一承諾并不是對作者參與論壇討論和交流的強制規定,作者是否參與以及參與的頻繁程度完全由作者自己決定,并且是無償的。我們建議你試著向作者問一些具有挑戰性的問題,以引起作者的重視并使其足夠專注。對于已經出版發行的圖書,可以在出版商的網站上訪問對應的論壇以及之前相關討論的歸檔文件。 其他在線資源 讀者朋友可通過訪問Ashley Davis的博客,名為The Data Wrangler。Data-Forge Notebook是Ashley Davis專門為使用JavaScript進行數據分析和轉換而開發的產品。從概念上來說,它與古老的Jupyter Notebook有些類似,但主要用于JavaScript。 |
內容簡介:主要內容 ● 建立數據管道 ● 采集、存儲和檢索 ● 處理異常數據集 ● 清洗和準備原始數據 ● 使用D3實現交互式可視化 |
目錄:第1章快速入門:建立數據處理流程1 1.1為什么要進行數據整理1 1.2數據整理指的是什么2 1.3為什么要寫一本關于JavaScript數據整理的書3 1.4可以通過本書獲取哪些知識5 1.5為什么要使用JavaScript進行數據整理5 1.6JavaScript是否適用于數據分析6 1.7在JavaScript生態系統中暢游8 1.8組裝你的工具包8 1.9建立數據處理流程10 1.9.1設置階段10 1.9.2數據整理過程11 1.9.3計劃12 1.9.4采集、存儲和檢索15 1.9.5探索性編碼17 1.9.6清洗和準備21 1.9.7分析22 1.9.8可視化23 1.9.9轉入生產環境25 小結27 第2章Node.js快速入門29 2.1開啟工具包29 2.2構建一個簡單的報告系統30 2.3獲取代碼和數據31 2.3.1查看代碼32 2.3.2下載代碼32 2.3.3安裝Node.js33 2.3.4安裝依存項33 2.3.5運行Node.js代碼34 2.3.6運行Web應用程序34 2.3.7獲取數據35 2.3.8獲取第2章對應的代碼36 2.4安裝Node.js36 2.5使用Node.js38 2.5.1創建一個Node.js項目39 2.5.2創建一個命令行應用程序42 2.5.3創建一個代碼庫45 2.5.4創建一個簡單的Web服務器47 2.6異步編碼53 2.6.1加載單個文件54 2.6.2加載多個文件57 2.6.3錯誤處理59 2.6.4使用Promise進行異步編碼60 2.6.5在Promise中封裝異步操作64 2.6.6使用async和await進行異步編碼65 小結66 第3章采集、存儲和檢索69 3.1構建你的工具包70 3.2獲取代碼和數據71 3.3核心數據表示71 3.3.1地震網站72 3.3.2涉及的數據格式74 3.3.3強大功能和靈活性75 3.4導入數據76 3.4.1從文本文件加載數據76 3.4.2從RESTAPI加載數據79 3.4.3解析JSON文本數據81 3.4.4解析CSV文本數據84 3.4.5從數據庫導入數據89 3.4.6從MongoDB導入數據90 3.4.7從MySQL導入數據93 3.5導出數據96 3.5.1你需要有可供導出的數據96 3.5.2將數據導出到文本文件98 3.5.3將數據導出到JSON文本文件99 3.5.4將數據導出到CSV文本文件100 3.5.5將數據導出到數據庫102 3.5.6將數據導出到MongoDB102 3.5.7將數據導出到MySQL104 3.6構建完整的數據轉換107 3.7擴展流程108 小結110 第4章處理不常見的數據111 4.1獲取代碼和數據112 4.2從文本文件導入自定義數據112 4.3通過網頁爬取導入數據116 4.3.1識別要爬取的數據117 4.3.2使用cheerio進行網頁爬取118 4.4使用二進制數據120 4.4.1解包自定義二進制文件121 4.4.2填充自定義二進制文件124 4.4.3將JSON替換為BSON127 4.4.4將JSON轉換為BSON127 4.4.5反序列化BSON文件128 小結129 第5章探索性編碼131 5.1擴展工具包132 5.2分析交通事故132 5.3獲取代碼和數據133 5.4迭代和反饋環134 5.5了解數據的第一個步驟135 5.6使用縮減后的數據樣本136 5.7使用Excel進行原型設計137 5.8使用Node.js進行探索性編碼139 5.8.1使用Nodemon141 5.8.2對你的數據進行探索142 5.8.3使用Data-Forge145 5.8.4計算趨勢列149 5.8.5輸出新的CSV文件153 5.9在瀏覽器中進行探索性編碼155 5.10將所有內容整合到一起163 小結163 第6章清洗和準備165 6.1擴展我們的工具包166 6.2準備珊瑚礁數據167 6.3獲取代碼和數據167 6.4數據清洗和準備的需求167 6.5損壞的數據來自何處?168 6.6如何將數據清洗納入數據處理流程?169 6.7識別有問題的數據170 6.8問題的種類171 6.9如何處理有問題的數據171 6.10修復有問題的數據的技術172 6.11清洗數據集172 6.11.1重新寫入有問題的行173 6.11.2過濾數據行179 6.11.3過濾數據列182 6.12準備好數據以便有效使用184 6.12.1聚合數據行184 6.12.2使用globby組合來自不同文件的數據186 6.12.3將數據拆分為單獨文件189 6.13使用Data-Forge構建數據處理流程191 小結193 第7章處理大型數據文件195 7.1擴展工具包195 7.2修復溫度數據196 7.3獲取代碼和數據197 7.4什么情況下常規的數據處理方法會出現問題197 7.5Node.js的限制199 7.5.1增量數據處理200 7.5.2增量式核心數據表示201 7.5.3Node.js文件流基本知識簡介202 7.5.4轉換大型CSV文件206 7.5.5轉換大型JSON文件212 7.5.6混合和匹配218 小結219 第8章處理大量數據221 8.1擴展工具包222 8.2處理大量數據222 8.3獲取代碼和數據223 8.4用于處理大數據的技術223 8.4.1從小數據集開始223 8.4.2返回到小數據集223 8.4.3使用更高效的表示形式224 8.4.4脫機準備數據224 8.5更多Node.js限制226 8.6分治算法227 8.7使用大型數據庫227 8.7.1數據庫設置228 8.7.2打開到數據庫的連接229 8.7.3將大型文件移動到數據庫中230 8.7.4使用數據庫游標進行增量處理232 8.7.5使用數據窗口進行增量處理234 8.7.6創建索引237 8.7.7使用查詢過濾237 8.7.8使用投影丟棄數據239 8.7.9對大型數據集進行排序240 8.8提高數據吞吐量242 8.8.1優化代碼242 8.8.2優化算法243 8.8.3并行處理數據243 小結249 第9章實用數據分析251 9.1擴展工具包252 9.2分析天氣數據253 9.3獲取代碼和數據253 9.4基本數據匯總254 9.4.1求和254 9.4.2求平均值255 9.4.3標準差256 9.5分組和匯總257 9.6溫度的頻率分布262 9.7時間序列266 9.7.1年平均溫度267 9.7.2滾動平均值268 9.7.3滾動標準差272 9.7.4線性回歸272 9.7.5比較時間序列275 9.7.6堆疊時間序列運算279 9.8了解關系280 9.8.1使用散點圖檢測相關性280 9.8.2相關性的類型280 9.8.3確定相關性的強度282 9.8.4計算相關系數282 小結284 第10章基于瀏覽器的可視化285 10.1擴展工具包286 10.2獲取代碼和數據286 10.3選擇圖表類型287 10.4紐約地區溫度的折線圖289 10.4.1最基本的C3折線圖289 10.4.2添加實際數據292 10.4.3解析靜態CSV文件294 10.4.4添加年份作為X軸296 10.4.5創建自定義Node.jsWeb服務器297 10.4.6向圖表中添加另一個序列302 10.4.7向圖表中添加第二個Y軸303 10.4.8呈現時間序列圖表305 10.5使用C3創建的其他圖表類型307 10.5.1條形圖307 10.5.2水平條形圖308 10.5.3餅圖309 10.5.4堆疊條形圖311 10.5.5散點圖312 10.6改善圖表的外觀313 10.7處理自己的項目315 小結316 第11章服務器端可視化317 11.1擴展工具包318 11.2獲取代碼和數據319 11.3無頭瀏覽器319 11.4使用Nightmare進行服務器端可視化321 11.4.1為什么使用Nightmare?321 11.4.2Nightmare和Electron322 11.4.3操作過程:使用Nightmare捕捉可視化結果323 11.4.4為呈現可視化結果做好準備323 11.4.5啟動Web服務器326 11.4.6以程序方式啟動和停止Web服務器327 11.4.7將網頁呈現為圖像329 11.4.8繼續完成后續步驟之前330 11.4.9捕捉完整的可視化結果332 11.4.10為圖表提供數據334 11.4.11多頁報告338 11.4.12在無頭瀏覽器中調試代碼341 11.4.13設置為可以在Linux服務器上操作342 11.5使用無頭瀏覽器可執行更多操作344 11.5.1網頁爬取344 11.5.2其他用途345 小結345 第12章實時數據347 12.1我們需要預警系統348 12.2獲取代碼和數據348 12.3處理實時數據349 12.4構建用于監控空氣質量的系統349 12.5為開發而進行設置352 12.6實時流數據353 12.6.1使用HTTPPOST處理不太頻繁的數據提交354 12.6.2使用套接字處理高頻率的數據提交357 12.7配置重構360 12.8數據捕捉361 12.9基于事件的體系結構364 12.10事件處理的代碼重構366 12.10.1觸發SMS短信警報367 12.10.2自動生成每日報告368 12.11實時數據處理372 12.12實時可視化374 小結380 第13章使用D3實現高級可視化381 13.1高級可視化382 13.2獲取代碼和數據383 13.3可視化太空垃圾384 13.4D3是什么?385 13.5D3數據處理流程386 13.6基本設置387 13.7快速了解SVG388 13.7.1SVG圓形388 13.7.2樣式設定390 13.7.3SVG文本391 13.7.4SVG組392 13.8使用D3構建可視化結果393 13.8.1元素狀態393 13.8.2選擇元素394 13.8.3手動向可視化結果中添加元素396 13.8.4進行比例縮放以適合可用空間398 13.8.5以D3的方式程序化生成400 13.8.6加載數據文件403 13.8.7使用不同的顏色標記太空垃圾406 13.8.8添加交互性407 13.8.9添加不同發射年份的動畫409 小結412 第14章轉入生產環境413 14.1生產注意事項414 14.2將預警系統轉入生產環境415 14.3部署417 14.4監控419 14.5可靠性421 14.5.1系統耐用性421 14.5.2進行防御式編程421 14.5.3數據保護422 14.5.4測試和自動化423 14.5.5處理意外錯誤428 14.5.6設計處理流程重新啟動430 14.5.7處理不斷增大的數據庫431 14.6安全性431 14.6.1身份驗證和授權431 14.6.2隱私性和機密性432 14.6.3密鑰配置434 14.7擴展434 14.7.1在優化之前進行測量434 14.7.2縱向擴展435 14.7.3橫向擴展435 小結436 附錄AJavaScript備忘錄439 附錄BData-Forge備忘錄445 附錄CVagrant快速入門447
|
序: |