編者按:Netflix數(shù)據(jù)可視化工程師、《D3.js in Action》作者Elijah Meeks介紹了nteract數(shù)據(jù)探索器的設(shè)計(jì)理念和主要功能。
我職業(yè)生涯的大部分時間花在設(shè)計(jì)和創(chuàng)建數(shù)據(jù)產(chǎn)品上——數(shù)據(jù)面板之類的分析應(yīng)用,便于理解算法、數(shù)據(jù)集的數(shù)據(jù)可視化原型。相當(dāng)一部分(但仍然不算多)時間花在開發(fā)一個名為Semionic的React數(shù)據(jù)可視化框架上,我的許多其他數(shù)據(jù)產(chǎn)品的圖形部分使用了這個框架。
如果你只對nteract數(shù)據(jù)探索器的特性感興趣,可以跳過下面幾節(jié),直接從如何使用數(shù)據(jù)探索器開始閱讀。
基于Semiotic可視化TSNE數(shù)據(jù)集 by Susie Lu
數(shù)據(jù)可視化主要有兩個領(lǐng)域:應(yīng)用和工具。在數(shù)據(jù)可視化的語境下,工具是指諸如D3這樣的軟件庫,或者Tableau這樣的平臺,這些可視化工具讓你可以創(chuàng)建數(shù)據(jù)產(chǎn)品,比如面板或報(bào)告。然而,數(shù)據(jù)可視化還有一個我直到最近以前都沒怎么接觸過的領(lǐng)域:自動數(shù)據(jù)可視化。所以當(dāng)我為nteract平臺開發(fā)一個數(shù)據(jù)探索器的時候,我很興奮,想看看自己能夠給這一數(shù)據(jù)可視化的重要領(lǐng)域貢獻(xiàn)點(diǎn)什么。
問題空間
插入一張表格或其他結(jié)構(gòu)化的數(shù)據(jù)集,然后循環(huán)不同視圖,這就是自動可視化。例如,插入一張表格,然后你可以查看它的柱形圖或餅圖,希望不同的視圖可以揭示數(shù)據(jù)中隱藏的東西。
某種意義上,所有用于探索性數(shù)據(jù)分析的數(shù)據(jù)可視化都具備自動模式。Tableau之類的商業(yè)智能(BI)工具讓你通過試驗(yàn)不同的視圖設(shè)計(jì)面板和報(bào)告。ggplot2接受期望的數(shù)據(jù)結(jié)構(gòu),然后返回美觀的默認(rèn)圖形,讓你可以相對簡單地循環(huán)視圖。
以上工具和nteract數(shù)據(jù)探索器的區(qū)別在于,數(shù)據(jù)探索器并不是為最終生成報(bào)告或面板而設(shè)計(jì)的。相反,它僅僅提供一組圖形,讓你可以概覽notebook中的數(shù)據(jù)。notebook用戶有各種創(chuàng)建數(shù)據(jù)可視化最終產(chǎn)品的方法,他們知道想要呈現(xiàn)和強(qiáng)調(diào)什么。數(shù)據(jù)探索器無意在這方面參與競爭。
目標(biāo)
以恰當(dāng)?shù)姆绞娇偨Y(jié)數(shù)據(jù)。不僅可以比較單獨(dú)的行,還可以比較分組后的行,以突出分布和層級。
支持多樣性的數(shù)據(jù)視圖。例如,折線圖和柱狀圖用來描繪不同行的數(shù)值測度很不錯,但在可視化邊列表時完全用不上。類似地,如果你需要查看大量數(shù)據(jù)點(diǎn),你會希望能看到兩個測度的相關(guān)性密度,而不是單個數(shù)據(jù)點(diǎn)的分布。
封裝組件以便其他查詢界面復(fù)用。比如,同樣的可視化組件可以用于Netflix的內(nèi)部SQL查詢應(yīng)用。
數(shù)據(jù)探索器使用了pandas實(shí)現(xiàn)的表格式數(shù)據(jù)資源表示法。這是一種簡單的數(shù)據(jù)格式,其中包括:
列名和列類型(字符串、數(shù)字)
dataframe鍵
多種測度
表格式數(shù)據(jù)結(jié)構(gòu)
另外,數(shù)據(jù)探索器設(shè)計(jì)時面向的數(shù)據(jù)規(guī)模是數(shù)百數(shù)據(jù)點(diǎn),而不是數(shù)千乃至更多數(shù)據(jù)點(diǎn)。
為何基于Semiotic
碰巧我當(dāng)時正開發(fā)這個基于數(shù)據(jù)模型的結(jié)構(gòu)化視圖和數(shù)據(jù)可視化方法的圖表框架。和其他圖標(biāo)庫不同,Semiotic沒有
Semiotic的設(shè)計(jì)方式意味著實(shí)現(xiàn)多樣性的圖表相當(dāng)容易。例如,
如何使用數(shù)據(jù)探索器
我們將使用世界幸福感報(bào)告作為樣本數(shù)據(jù)集。你可以在nteract親自嘗試,或者通過mybinder在線瀏覽(可能需要30秒加載notebook):
https://hub.mybinder.org/user/nteract-examples-6lbp5cij/nteract/edit/python/happiness.ipynb
在notebook中進(jìn)行以下配置以便使用數(shù)據(jù)探索器:
import pandas as pd
pd.options.display.html.table_schema = True
加載數(shù)據(jù)然后查看dataframe:
df = pd.read_csv(
"https://gist.githubusercontent.com/rgbkrk/a7984a8788a73e2afb8fd4b89c8ec6de/raw/db8d1db9f878ed448c3cac3eb3c9c0dc5e80891e/2015.csv"
)
df
如上圖所示,dataframe右側(cè)出現(xiàn)了一些圖標(biāo),點(diǎn)擊這些圖標(biāo)可以切換不同的數(shù)據(jù)可視化模式。
柱狀圖、總結(jié)圖、散點(diǎn)圖、hexbin、網(wǎng)絡(luò)圖、層次結(jié)構(gòu)圖、平行坐標(biāo)圖、折線圖
柱狀圖
第一個模式是柱狀圖。每個柱形都可以交互。不過出于清晰考慮,只有數(shù)值最高的那些柱形是彩色的。通過Metric(測度)下拉菜單可以指定不同的測度作為縱軸。
通過Categories(類別)可以聚合行。WIDTH(柱寬)也可以用來編碼第二測度,生成不等寬柱狀圖。
需要注意的是聚合只是簡單的相加,因此選中Region(區(qū)域)時,得到的是該區(qū)域的幸福度總值,也就是說,該區(qū)域內(nèi)的國家越多,這一區(qū)域的幸福度越高。如果想要準(zhǔn)確地比較不同區(qū)域的幸福度,我們應(yīng)該使用總結(jié)圖。
總結(jié)圖
柱狀圖下面的圖標(biāo)對應(yīng)總結(jié)圖。默認(rèn)使用提琴形圖,鼠標(biāo)懸浮數(shù)據(jù)點(diǎn),可以查看數(shù)據(jù)點(diǎn)的具體數(shù)值。
除了Metric(測度)和CATEGORY(類別)外,還可以改變TYPE(可視化類型):joy plot、箱形圖、熱力圖、直方圖。
左:joy plot;右:箱形圖
散點(diǎn)圖
第三個模式是散點(diǎn)圖,其中提供了尺寸編碼的選項(xiàng)(如果你覺得需要創(chuàng)建氣泡圖的話)。另外,鼠標(biāo)懸浮同樣可以查看單個數(shù)據(jù)點(diǎn)的數(shù)值。散點(diǎn)圖還為排名靠前的數(shù)據(jù)點(diǎn)提供了初步的注釋。
hexbin
散點(diǎn)圖下面是hexbin圖標(biāo)。hexbin有助于探索較大數(shù)據(jù)集的密度。鼠標(biāo)懸浮可以查看聚合的數(shù)據(jù)點(diǎn)。
網(wǎng)絡(luò)圖
nteract數(shù)據(jù)探索器支持兩種網(wǎng)絡(luò)圖:?;鶊D(顯示流向)和力導(dǎo)向網(wǎng)絡(luò)(傳統(tǒng)的類SNA方法)。很不幸,在非網(wǎng)絡(luò)樣本數(shù)據(jù)上,這兩種圖的效果都很糟糕。
層次結(jié)構(gòu)圖
接下來是層次結(jié)構(gòu)圖,供你探索層次結(jié)構(gòu)模式。使用Categories(類別)按鈕可以選擇如何嵌套數(shù)據(jù)。在treemap(矩形樹圖)或partition(分區(qū)圖)模式下,選中的Metric(測度)將用來指定可視化中的尺寸。
平行坐標(biāo)圖
平行坐標(biāo)圖讓你可以交互式地分析數(shù)據(jù),通過每列上的筆刷過濾數(shù)據(jù)。點(diǎn)擊Explore/Filter(探索/過濾)按鈕可以在探索和過濾模式間切換。在過濾模式下,可以通過調(diào)節(jié)筆刷的起止(縮放尺寸和移動位置)過濾數(shù)據(jù)。在探索模式下,懸浮鼠標(biāo)可以查看單獨(dú)的數(shù)據(jù)點(diǎn)。
折線圖
通過折線圖模式可以查看測度的組合,以及它們在百分比、聚合形式下的樣貌。未來我將升級這一模式,當(dāng)數(shù)據(jù)包含時序信息或者序列信息時,應(yīng)用相應(yīng)的可視化。
后續(xù)改進(jìn)
數(shù)據(jù)模型方面的改進(jìn)
圖表技術(shù)的靈活性僅僅是自動數(shù)據(jù)可視化的諸多制約因素之一。目前數(shù)據(jù)探索器提供了數(shù)據(jù)的許多可能視圖,但絲毫沒有提示你應(yīng)該使用哪一種。使用魯棒性更好的數(shù)據(jù)模型可以改善這一點(diǎn):
基數(shù):提供基數(shù)信息有助于確定字符串是名稱之類的東西(高基數(shù))還是類別(低基數(shù))。
預(yù)處理:自動數(shù)據(jù)可視化處理的是表格式數(shù)據(jù),但使用這一格式表示特定類型的數(shù)據(jù)卻是一項(xiàng)挑戰(zhàn)。更好地存儲時序數(shù)據(jù)、數(shù)據(jù)的總結(jié)性草圖、拓?fù)鋽?shù)據(jù)有助于魯棒性更好的可視化數(shù)據(jù)方法及探索數(shù)據(jù)方法。
特征:散點(diǎn)圖視圖中的簡單注釋是Semiotic的主要特性。然而,自動生成注釋很困難。探索數(shù)據(jù)特征的啟發(fā)式算法,例如異常檢測或其他方法,可以在數(shù)據(jù)可視化中添加豐富的注釋。
數(shù)據(jù)探索器方面的改進(jìn)
這是我首次嘗試創(chuàng)建某種自動數(shù)據(jù)探索工具,我確信有可以改進(jìn)的地方。所以我歡迎所有使用nteract的人提交bug報(bào)告或要求開發(fā)新特性。我個人覺得以下三個方面值得改進(jìn):
UI改進(jìn):開發(fā)數(shù)據(jù)探索器的需求之一是使用原生HTML控件。直到我嘗試只使用原生元素實(shí)現(xiàn)美觀周全的UI時,我才意識到我有多依賴那些定制的UI元素。除了美觀程度上的提升外,很多控件可以設(shè)計(jì)得更好,比如按鈕可以提供更多內(nèi)置的指示。特別是不同視圖之間的導(dǎo)航應(yīng)該有更好的信息層次,提示用戶不同的圖表方法的相關(guān)程度。
多張小圖:探索數(shù)據(jù)最有用的可視化技術(shù)是并列多張小圖——基于相同數(shù)據(jù)和/或相同尺度的多張圖表,以供比較不同維度。
保存狀態(tài):我之前已經(jīng)提到過,數(shù)據(jù)探索器不打算和傳統(tǒng)的notebook數(shù)據(jù)可視化競爭。數(shù)據(jù)的視圖可以保存到單元,避免刷新后丟失,這個功能還是有用的。
結(jié)語
就我的經(jīng)驗(yàn)而言,當(dāng)前的自動數(shù)據(jù)可視化產(chǎn)品往往堆砌特性,缺乏統(tǒng)一的主題。我希望數(shù)據(jù)探索器能做到的一點(diǎn)是,不僅提供用戶大量的圖表,而且能夠讓數(shù)據(jù)可視化和數(shù)據(jù)探索更好地配合。
-
可視化
+關(guān)注
關(guān)注
1文章
1262瀏覽量
21851 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1224瀏覽量
25445
原文標(biāo)題:跨語言notebook自動數(shù)據(jù)可視化:nteract數(shù)據(jù)探索器
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
網(wǎng)卡實(shí)現(xiàn)的主要功能是什么
存儲器的主要功能
變壓器的主要功能
濾波器的主要功能和作用
傳感器的主要功能是什么

評論