
用于大數(shù)據(jù)的嵌入式分析和統(tǒng)計
用于大數(shù)據(jù)[注]的嵌入式分析和統(tǒng)計已經(jīng)成為了業(yè)內(nèi)一個重要的主題。隨著數(shù)據(jù)量的不斷增長,我們需要軟件工程師對數(shù)據(jù)分析提供支持,并對數(shù)據(jù)進行一些統(tǒng)計計算。本文概要地介紹了嵌入式數(shù)據(jù)分析和統(tǒng)計的相關(guān)工具及類庫,其中包括獨立的軟件包和帶有統(tǒng)計能力的編程語言。我期待著收到本專欄讀者和潛在的專欄作者的反饋,告訴我你們對這個專欄的想法,以及你們想要了解哪些相關(guān)技術(shù)?!狢hristof Ebert
不管在信息技術(shù)界還是嵌入式技術(shù)界,大數(shù)據(jù)都已經(jīng)變成了非常關(guān)鍵的概念。1 這樣的軟件系統(tǒng)通常都有眾多的異構(gòu)連接,包括軟件應(yīng)用程序、中間件和傳感器之類的組件。隨著云設(shè)施的使用不斷增長,可用的數(shù)據(jù)資源變得更加豐富了;智能電網(wǎng)、智能車輛技術(shù)、醫(yī)藥最近都出現(xiàn)了這種相互連接的數(shù)據(jù)源。我們每年生產(chǎn)的數(shù)據(jù)將近1,200艾字節(jié),并且這一數(shù)字有增無減。2,3 這樣海量的非結(jié)構(gòu)化數(shù)據(jù)是業(yè)務(wù)和IT主管[注]無法回避的巨大挑戰(zhàn)。
大數(shù)據(jù)的定義由四個維度組成:數(shù)據(jù)量、數(shù)據(jù)源的復(fù)雜度、生產(chǎn)速度,以及潛在用戶數(shù)。這些數(shù)據(jù)需要被組織起來,將無數(shù)的位和字節(jié)轉(zhuǎn)換成可操作的信息—除非我們能提煉出其中的含義,否則數(shù)據(jù)再豐富都沒用。在以前,程序員是寫代碼的,而統(tǒng)計學(xué)家是做統(tǒng)計的。程序員一般用通用的編程語言,而統(tǒng)計學(xué)家一般用專門的程序完成自己的日常工作,比如IBM的SPSS (用于社會科學(xué)的統(tǒng)計軟件包)。統(tǒng)計學(xué)家擺弄的國家統(tǒng)計數(shù)據(jù)或市場調(diào)研通常只有選定人群能用,而程序員處理的大量數(shù)據(jù)都是放在數(shù)據(jù)庫或日志文件中的。從云到幾乎所有人都可用的大數(shù)據(jù)改變了這一切。
隨著數(shù)據(jù)量和數(shù)據(jù)類型的不斷增加,越來越需要軟件工程師參與進來對它們做不同的統(tǒng)計分析。軟件工程師積極地以前所未有的規(guī)模收集和分析數(shù)據(jù),讓它們變得有價值,拓展新的業(yè)務(wù)模型。1 比如說,考慮一下主動性維護。我們可以持續(xù)地對機器、網(wǎng)絡(luò)進行監(jiān)測,一旦發(fā)現(xiàn)違規(guī)和失效,則立即處理,從而讓我們可以在破壞發(fā)生或系統(tǒng)癱瘓之前糾正它們。這可以從材料成本以及人工介入兩方面降低維護成本。處理數(shù)據(jù)并找出其中的含義通常只是一個大項目中的一部分工作,或者只是嵌在某些軟件中,配置中,或硬件優(yōu)化問題中。幸運的是,大數(shù)據(jù)社區(qū)已經(jīng)對這種需求作出了響應(yīng),他們創(chuàng)建了一系列的工具,可以將統(tǒng)計學(xué)家的一些魔力交給程序員—實際上,這些工具通常要比傳統(tǒng)的統(tǒng)計工具更強大,因為它們能處理的數(shù)據(jù)量在規(guī)模上要比老的統(tǒng)計樣本幅度更大。
用于嵌入式分析和統(tǒng)計的技術(shù)
可以執(zhí)行統(tǒng)計分析的軟件有很多;表一給出了一些最流行的軟件。它們的區(qū)別在于用戶對它們統(tǒng)計復(fù)雜度的要求,易用性,以及它們是獨立的軟件包,還是帶有統(tǒng)計能力的編程語言。
表一中有三項很值得我們注意:R、Python、D3 (數(shù)據(jù)驅(qū)動文檔Data- Drives-Documents)。R是一門面向統(tǒng)計的語言。Python是一門通用的編程語言,并且已經(jīng)證實在科學(xué)家和研究人員中間很流行,他們會用它作科學(xué)及統(tǒng)計計算。D3是一個JavaScript庫,用戶可以用它創(chuàng)建可視化圖形,并使用Web瀏覽器與之交互(比如放大、縮小、收起和展開) 。R、Python和D3都非常適用于嵌入式統(tǒng)計,有幾個原因:
因為它們是獨立的編程語言,可以輕松地通過標準語言機制跟其它系統(tǒng)交互,或者也可以通過導(dǎo)入及導(dǎo)出各種格式的數(shù)據(jù)。
Python和R中的腳本可以直接嵌入到更大的分析工作流中。
Python和R程序可以直接用來構(gòu)建應(yīng)用程序,這些應(yīng)用程序可以從各種數(shù)據(jù)源讀取數(shù)據(jù),用戶可以直接通過Web跟這些應(yīng)用程序做數(shù)據(jù)分析及可視化的交互。
借助D3,用戶可以通過Web瀏覽器交互式地操作統(tǒng)計圖形,將分析提升到更高水平。
它們比專業(yè)的統(tǒng)計包更靠近程序員的思維框架。
除了D3,這個表中的所有東西都提供了進行高級統(tǒng)計(比如多元和時間序列分析)的設(shè)施,或者自身具備,或者通過類庫實現(xiàn)。盡管其中的每一個都有側(cè)重點,更適合解決特定的目標問題。比如Python的Pandas包,善于支持時間序列分析,因為它就是為了對財務(wù)數(shù)據(jù)做這樣的分析而寫的。
Python的統(tǒng)計生態(tài)系統(tǒng)
現(xiàn)如今用來做統(tǒng)計的最流行的通用編程語言就是Python。在科學(xué)計算方面它總是受到青睞,還有幾個優(yōu)秀的Python工具可以用來完成更復(fù)雜的統(tǒng)計任務(wù)。Python中的基本科學(xué)庫是NumPy。它對Python的主要貢獻是一個同構(gòu)的多維數(shù)組,可以用來放操作數(shù)據(jù)的方法。它可以集成C/C++和Fortran,還有幾個函數(shù)可以用來執(zhí)行高級的數(shù)學(xué)及統(tǒng)計計算。它內(nèi)部主要用的是自己的數(shù)據(jù)結(jié)構(gòu),用本地代碼實現(xiàn),所以在NumPy中執(zhí)行的矩陣計算比在Python中執(zhí)行相同的計算快得多。構(gòu)建在NumPy 之上的SciPy,提供了一些高層的數(shù)學(xué)和統(tǒng)計函數(shù)。SciPy再次處理了NumPy的數(shù)組;這些數(shù)組雖然很適合做數(shù)學(xué)計算,但處理可能會有缺失值的異構(gòu)數(shù)據(jù)時有一點繁瑣。為了解決這個問題,Pandas提供了靈活的異構(gòu)數(shù)據(jù)結(jié)構(gòu),很容易索引、切片,甚至合并和連接(類似于SQL表之間的連接)。 引入iPython是個很吸引人的設(shè)置,它是一個交互式的Python shell,有命令行補足、很好的歷史記錄,以及很多其它特性,在操作數(shù)據(jù)時特別有用。然后還可以用Matplotlib對結(jié)果可視化。
舉例說明
世界銀行是一個信息寶庫,并且它的很多數(shù)據(jù)都可以通過Web訪問。對于更復(fù)雜的分析,公眾可以從世界銀行的數(shù)據(jù)目錄下載數(shù)據(jù),或通過API訪問它。最受歡迎的數(shù)據(jù)集是世界發(fā)展指標(WDI)。根據(jù)世界銀行的說法,WDI包含“最新、最準確的全球發(fā)展數(shù)據(jù),包含國家、地球和全球的估算?!?WDI有兩種可下載的格式:Microsoft Excel和逗號分隔值(CSV)文件。 (因為 Microsoft Excel文件不適合編程分析,所以我們在這里處理的是CSV文件。)
圖1.計算世界發(fā)展指標相關(guān)性的Python程序。這個程序采集了最前面30個測量最多的指標,計算斯皮爾曼相關(guān)系數(shù),并用圖形顯示結(jié)果。
WDI CSV包是一個42.5M的壓縮文檔。下載并解壓后,你會見到主文件WDI_Data.csv。獲得該文件內(nèi)容概覽的好辦法是交互地檢查它。因為我們要用Python,所以跟我們要用的那些工具交互的最好辦法是發(fā)起一個iPython會話,然后加載數(shù)據(jù):
In [1]: import pandas as pd
In [2]: data = pd.read_csv(“WDI_Data.csv”)
結(jié)果在data中,一個包含數(shù)據(jù)的DataFrame。你可以把DataFrame看作一個二維數(shù)組,有一些易于操作的額外功能。在一個DataFrame中,數(shù)據(jù)被組織為幾列和一個索引 (與行對應(yīng))。如果我們輸入
In [3]: data.columns
我們會得到顯示列名的輸出:國家名、國家代碼、指標名、指標代碼。這些后面都跟著從1960到2012年每年的數(shù)據(jù)列。類似的,如果我們輸入
In [4]: data.index
我們會看到數(shù)據(jù)有317,094行。每一行都對應(yīng)一個國家一個特定指標從1960到2012年的值;一行中沒有值的年份表明那一年在那個國家中沒有測量這一指標。我們先看一下有多少指標
In [5]: len(data[‘Indicator Name’].unique())
Out[5]: 1289
然后看一下有多少國家
In [6]: len(data[‘Country Name’].unique())
Out[6]: 246
現(xiàn)在我們有一個要解決的問題:這些指標是彼此獨立的,還是其中有些相互關(guān)聯(lián)?
因為我們是按年份和國家測量的指標,所以我們必須確定讓哪個參數(shù)保持恒定,從而更精確地定義這個問題。一般而言,當樣本增加時,我們會得到更好的統(tǒng)計結(jié)果。然后重新表述這個問題就變得有意義了:哪一年的測量結(jié)果最多,測量最多的指標是獨立的,還是其中一些彼此相關(guān)?所謂“測量最多的指標”,是指那些在更多國家中測量的指標。事實證明,我們可以在大約50個LOC中找到問題的答案。圖一中是完整的程序。
代碼1–10行導(dǎo)入了我們將要用到的庫。第11行讀取數(shù)據(jù)。在第13行中,我們給出了一個數(shù)值,這是我們要檢查的測量最多的指標的個數(shù)。在第15行,我們找到了從0開始的帶有年度測量值的第一列。在那之后,我們可以在第17行找到有最多測量值的那一列(2005年)。然后我們?nèi)サ袅藳]有那些測量結(jié)果的所有數(shù)據(jù)。在第20到26行,我們獲取了測量最多的指標。
真正的統(tǒng)計計算從第28行開始,我們準備了一個表,用來存放每對指標相關(guān)性的結(jié)果值。在接下來的循環(huán)中,我們計算每對指標的相關(guān)性,并把它放在之前準備好的表中。最后,在第41到52行,我們把這些結(jié)果顯示在屏幕上,并保存為一個PDF文件(見圖二)。我們還把相關(guān)矩陣的垂直順序做了反向處理,以便讓最重要的指標出現(xiàn)在矩陣的頂部(代碼41和49行)。
對角線上有完美的相關(guān)性—理應(yīng)如此,因為那里檢查的是相同的指標。除此之外,我們的確看到了有些指標之間有相關(guān)性—有些是正相關(guān)的,甚至很強,也有些是負相關(guān)或者非常的負相關(guān)。
Python生態(tài)系統(tǒng)中更高級的組件
因為Python受到了科研界的青睞,一些專業(yè)化的工具也隨之出現(xiàn)。其中有構(gòu)建在NumPy、SciPy和matplotlib之上的Scikit-learn,它提供了完備的機器學(xué)習(xí)工具包。對于符合層級結(jié)構(gòu)的超大型數(shù)據(jù)集,Python提供了PyTables,它以HDF5 庫為基礎(chǔ)。這是一個行業(yè)熱點, DARPA 在2013年從XDATA項目基金中拿出300萬美元給Continuum Analytics作為獎勵,讓它進一步推進Python數(shù)據(jù)分析工具的開發(fā)??梢灶A(yù)料到的是接下來的幾年這個生態(tài)系統(tǒng)仍將穩(wěn)步發(fā)展。
用于統(tǒng)計計算的R項目
R是做統(tǒng)計的語言。可以這么說,Python讓做統(tǒng)計變成了程序員的活,而R讓寫程序變成了統(tǒng)計人員的任務(wù)。這門語言的中心是有效操作表示統(tǒng)計數(shù)據(jù)集的對象。這些對象通常是向量、列表,和表示按行和列組織的數(shù)據(jù)集的數(shù)據(jù)幀。R有常用的流程控制結(jié)構(gòu),甚至用到了面向?qū)ο缶幊痰乃枷?盡管它的面向?qū)ο髮崿F(xiàn)跟我們在更傳統(tǒng)的面向?qū)ο笳Z言中的概念有很大差別)。R的卓越之處在于它所提供的各種統(tǒng)計類庫。R的類庫中幾乎實現(xiàn)了所有的統(tǒng)計測試或方法(然而在Python中,有時你可能會發(fā)現(xiàn)你必須推出自己的實現(xiàn))。為了讓你明白它看起來是什么樣的,圖三給出了一個跟圖一一樣的程序,相同的邏輯,但實現(xiàn)用的是R而不是Python。
組合、聯(lián)合、整合嵌入式分析技術(shù)
我們在本文中給出的例子是不同應(yīng)用程序合并到一起處理大數(shù)據(jù)的典型辦法。數(shù)據(jù)從源頭(以某種原始格式)流向我們的統(tǒng)計包可接受的格式。統(tǒng)計包必須有一些能夠操作和查詢數(shù)據(jù)的辦法,以便我們能取得想要檢查的數(shù)據(jù)子集。這些都是統(tǒng)計分析必須有的。統(tǒng)計分析的結(jié)果可以用文本格式或圖形渲染出來。我們可以在本地計算機上執(zhí)行這一處理,也可以通過Web完成(此時數(shù)據(jù)的運算和處理是由服務(wù)器執(zhí)行的,參數(shù)、結(jié)果和圖形要通過Web瀏覽器)。這是一個很強大的概念,因為許多不同的設(shè)定,從ERP框架到汽車診斷軟件,都可以將數(shù)據(jù)導(dǎo)出為CSV這樣簡單的格式—實際上,當我們遇到一個不允許導(dǎo)出任何東西,封閉并且有專有數(shù)據(jù)格式的軟件時,應(yīng)該視作是一種警告。
要想按你想要的方式分析數(shù)據(jù),你必須首先能夠訪問到它。所以你應(yīng)該通過各種手段選擇那些可以促進數(shù)據(jù)交換的技術(shù),或者通過簡單的導(dǎo)出機制,或者通過適當?shù)恼{(diào)用,比如通過一個REST(表述性狀態(tài)轉(zhuǎn)移)API。
數(shù)據(jù)一直在變大,所以你必須進行調(diào)研,看你正在考慮的工具能否勝任你的數(shù)據(jù)處理工作。你沒必要在主存中處理所有數(shù)據(jù)。比如說,R有一個 大內(nèi)存 庫,讓我們用共享內(nèi)存和內(nèi)存映射文件處理超大數(shù)據(jù)集。還有,要確保軟件包不僅能處理大量輸入,還要能處理大型數(shù)據(jù)結(jié)構(gòu):比如說,如果表的大小被限定在32位整型之內(nèi),你就不能處理有5百萬條記錄的表。
在上面的例子中,警覺的讀者可能已經(jīng)注意到了,我們將數(shù)據(jù)變成適于統(tǒng)計分析的格式所用的代碼,要比統(tǒng)計分析本身的代碼還多,不管怎么說,那是由已經(jīng)寫好的函數(shù)做的。我們的例子有點兒小,所以預(yù)處理和真正的處理兩者的比例可能尤其顯得頭重腳輕,但這個例子也表明了這一事實,即數(shù)據(jù)操作通常和數(shù)據(jù)分析同樣重要(和苛刻)。實際上,R和NumPy/SciPy 真正的實力并不在于它們掌握了統(tǒng)計算法,而是在于它們知道如何有效地處理它們提供的數(shù)據(jù)結(jié)構(gòu)。并且這基本上是程序員的工作,不是統(tǒng)計學(xué)家的。別處還
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03