
數(shù)據(jù)可視從數(shù)據(jù)探索到工程落地
加快推動從數(shù)據(jù)探索到工程落地的過程是一件很有意義的事情,數(shù)據(jù)分析要如何做到盡量和數(shù)據(jù)分析的流程緊密結(jié)合,又要方便工程化落地一直困擾著許多數(shù)據(jù)分析師和Web工程師。數(shù)據(jù)分析師不想深究太多前端JS實(shí)現(xiàn),Web工程師也不想插手復(fù)雜的業(yè)務(wù)邏輯與SQL。對于工程化這件事情,如果數(shù)據(jù)分析輸出的圖表是基于html的,那Web工程師只需要復(fù)制粘貼相應(yīng)的js配置項(xiàng)然后引用一下js庫就完成70%的工作了。但是對于數(shù)據(jù)探索來說,大部分的數(shù)據(jù)可視過程70%的工作可能都是失敗、或者暫時的,花費(fèi)大量精力完成的前端代碼并不會對數(shù)據(jù)分析這件事情本身帶來太多幫助。但是現(xiàn)實(shí)世界并沒有這么美好,很多時候身兼數(shù)職的全能王倒是因?yàn)闀o老板省錢受到青睞,本文將討論幾種可能的解決方案。
可能的解決方案
數(shù)據(jù)分析師+交互式繪圖
常見的方式比如radiant(R)、caravel(Python)都具有這樣的功能,數(shù)據(jù)分析師可以建立一個數(shù)據(jù)庫連接,然后在連接中通過SQL語句得到想要的數(shù)據(jù),再通過交互式的繪圖方式完成數(shù)據(jù)可視化的探索。
優(yōu)勢:讓數(shù)據(jù)分析師可以集中精力在數(shù)據(jù)分析本身,可以快速實(shí)現(xiàn)數(shù)據(jù)探索、建模、甚至分享頁面和儀表盤。
劣勢:復(fù)雜的數(shù)據(jù)分析算法實(shí)現(xiàn)起來比較困難,數(shù)據(jù)需要事先規(guī)整清晰好,滿足多維數(shù)據(jù)分析條件才行,前端繪圖庫無法比較困難,整體定制性較弱。
第一種方案建立在交互式繪圖工具足夠好用的基礎(chǔ)上,對于很多非主流的startup并不一定完全適用,因?yàn)閟tartup人手有限,很可能要求數(shù)據(jù)分析師有能自行解決前端數(shù)據(jù)可視化的能力需求。
常見的方式是通過SQl取數(shù)后調(diào)用一個JS制圖庫(比如echarts、highcharts、plotly等等),分析師需要在js中完成許多數(shù)據(jù)描述性統(tǒng)計(jì)的工作直接展示在前端頁面上,然后將配置項(xiàng)和SQL保存在數(shù)據(jù)庫中,以供后續(xù)的API查詢調(diào)用。
優(yōu)勢:簡化了數(shù)據(jù)產(chǎn)品落地的流程,在SQL不夠用的情況下可以用JS來補(bǔ)足,可以快速實(shí)現(xiàn)定制化的前端圖表輸出,滿足各種可視化特殊需求。
劣勢:簡單的數(shù)據(jù)分析算法實(shí)現(xiàn)也很困難,數(shù)據(jù)分析很難專注于數(shù)據(jù)本身,需要處理很多JS相關(guān)問題。
數(shù)據(jù)分析師寫R
上述兩種方案在數(shù)據(jù)處理上都并不是非常完美,所以說,更加理想的方案是通過用一種數(shù)據(jù)分析語言完成數(shù)據(jù)分析和數(shù)據(jù)可視的工作,既要保證數(shù)據(jù)分析的靈活性,又要保證工程落地的敏捷性變成一個很關(guān)鍵的事情。但是通常自己寫前端JS的代碼又非常的麻煩,可能還要寫很多MapReduce。一些常見的描述性統(tǒng)計(jì)(極值均值求和計(jì)數(shù)等等)在前端實(shí)現(xiàn)都會耗費(fèi)很多功夫,更不用說更高級的一些算法了,而大部分?jǐn)?shù)據(jù)分析工作在Python或者R語言中其實(shí)是可以快速完成。那么,從Python和R中直接輸出一些html圖表不失為一種好的辦法,當(dāng)然更多場景下我是建議用R來完成。
優(yōu)勢:既能滿足復(fù)雜的算法模型快速實(shí)現(xiàn),又能滿足工程敏捷落地的需求。
劣勢:對于簡單分析而言,不如方案一來得方便,快捷。
具體方案
在R中,我們其實(shí)可以使用 DT + ggplot2 + plotly + flexdashboard 的方案來完成數(shù)據(jù)分析圖表的繪制和產(chǎn)出。首先,在探索分析的過程中可以使用ggplot2對數(shù)據(jù)進(jìn)行各種分組暫時,這樣就保證了數(shù)據(jù)分析結(jié)果維度的豐滿,通過 + 的鏈?zhǔn)秸{(diào)用,可以在同一基礎(chǔ)圖形上變換多種展現(xiàn)方式進(jìn)而得到更多多維分析結(jié)果。其次,利用 plotly,ggplot2 所繪制的靜態(tài)圖表可以快速拓展為動態(tài)圖表。最后,通過 flexdashboard,可以快速排版數(shù)據(jù)可視化結(jié)果,提供一個Web服務(wù)作為輸出。
簡單例子
knitr::opts_chunk$set(echo = TRUE)
library(readxl)
library(dplyr)
競品分析列表 <- read_excel("~/競品分析列表.xls",col_names = T)
colnames(競品分析列表) <- 競品分析列表[1,]
競品分析列表 <- 競品分析列表[-1,]
DT::datatable(競品分析列表)
library(ggplot2)
# 頻數(shù)統(tǒng)計(jì)
p <- ggplot(data=地區(qū)頻數(shù), aes(x=地區(qū),y=頻數(shù),fill=大小)) +
geom_bar(stat = "identity",alpha = 0.8) +
labs(x = '地區(qū)', y = '頻數(shù)') +
ggtitle("地域分布") +
coord_flip() +
theme(text = element_text(family = 'SimSun'))
p
library(plotly)
ggplotly(p)
只需要修改一下 yaml 配置并引入 flexdashboard 即可
---
title: "競品分析"
author: "Harry Zhu"
date: "September 17, 2016"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
---
knitr::opts_chunk$set(echo = TRUE)
library(flexdashboard)
library(readxl)
library(dplyr)
競品分析列表 <- read_excel("~/競品分析列表.xls",col_names = T)
colnames(競品分析列表) <- 競品分析列表[1,]
競品分析列表 <- 競品分析列表[-1,]
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點(diǎn)數(shù)據(jù)時的科學(xué)計(jì)數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅(qū)動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10