3dwoo大學簡體電腦書店
JavaScript數據整理
( 簡體 字)
作者:[美]阿什利·戴維斯(Ashley Davis)著 楊小冬譯類別:1. -> 程式設計 -> 網路編程 -> Javascript
出版社:清華大學出版社JavaScript數據整理 3dWoo書號: 52210
詢問書籍請說出此書號!
有庫存
NT售價: 490
出版日:11/1/2019
頁數:450
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787302537298 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第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
主要內容
● 建立數據管道
● 采集、存儲和檢索
● 處理異常數據集
● 清洗和準備原始數據
● 使用D3實現交互式可視化
數據的世界很大,單憑自己就想暢游其中是一件非常困難的事。《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。
pagetop