摘要:國產(chǎn)可視化庫,應(yīng)用廣泛,免費,開源。下次面對數(shù)據(jù)分析任務(wù),就可以參考可視化方法選型中的思路,根據(jù)你的需求,選擇適當(dāng)?shù)膱D表進行可視化。
針對不同的數(shù)據(jù)類型和數(shù)據(jù)任務(wù),我們應(yīng)該如何選擇合適的數(shù)據(jù)可視化?
本文整理了數(shù)據(jù)可視化的經(jīng)典套路,希望對你有所啟發(fā)。
首先,我們對數(shù)據(jù)類型進行分析。
基于任務(wù)分類學(xué)的數(shù)據(jù)類型(Data Type By Task Taxonomy, TTT)中將數(shù)據(jù)分為7類,即一維線性數(shù)據(jù)、二維數(shù)據(jù)、三維數(shù)據(jù)、多維數(shù)據(jù)、時間數(shù)據(jù)、樹型數(shù)據(jù)和網(wǎng)狀數(shù)據(jù)1,這七種數(shù)據(jù)類型所反映的是對現(xiàn)實的抽象。
其中一維數(shù)據(jù)、二維數(shù)據(jù)、三維數(shù)據(jù)、時間數(shù)據(jù)大家都很熟悉,這里不做贅述。
多維數(shù)據(jù): 一般有多個屬性字段,可以表示為高維空間的一個點,然后用三維散點圖進行可視化。
樹結(jié)構(gòu): 一般用來表達層次關(guān)系,是一種常用的非線性數(shù)據(jù)結(jié)構(gòu)。
網(wǎng)狀數(shù)據(jù)/圖結(jié)構(gòu): 一般用來表達連接關(guān)系,也是一種常用的非線性數(shù)據(jù)結(jié)構(gòu),常用節(jié)點連接圖及連接矩陣進行表示。網(wǎng)狀數(shù)據(jù)(圖結(jié)構(gòu))常用來表現(xiàn)自然世界和社會關(guān)系中的包含和從屬關(guān)系、組織信息和邏輯承接關(guān)系等。
確定數(shù)據(jù)類型之后,根據(jù)常見的數(shù)據(jù)可視化需求,我們可以把可視化目標分為比較、關(guān)系、分布、組合四大類。
下圖總結(jié)了根據(jù)需求分析可采用的統(tǒng)計可視化方法。2
在進行數(shù)據(jù)分析和可視化之前,通常要對復(fù)雜數(shù)據(jù)進行預(yù)處理,常見數(shù)據(jù)處理如下2。
合并:將兩個以上的屬性合并成一個屬性或?qū)ο螅ㄓ行Ш喕瘮?shù)據(jù)、改變數(shù)據(jù)尺度。
采樣:采樣是統(tǒng)計學(xué)的基本方法,也是對數(shù)據(jù)進行選擇的主要手段,對數(shù)據(jù)的初步探索和最后的數(shù)據(jù)分析環(huán)節(jié)經(jīng)常被采用。
降維:維度越高,數(shù)據(jù)集在維度空間的分布越稀疏,從而減弱了數(shù)據(jù)集的密度和距離的定義對數(shù)據(jù)聚類和離群值檢測等操作的影響。將數(shù)據(jù)屬性的維度降低,有助于解決維度災(zāi)難,減少數(shù)據(jù)處理的時間和內(nèi)存消耗,更為有效地可視化數(shù)據(jù),降低噪聲或消除無關(guān)特征等。
特征子集選擇:從數(shù)據(jù)集中選擇部分數(shù)據(jù)屬性值可以消除冗余的特征、與任務(wù)無關(guān)的特征,包括暴力枚舉法、特征重要性選擇、壓縮感知理論的稀疏表達方法。
特征生成:特征生成是指在原始數(shù)據(jù)的基礎(chǔ)上構(gòu)建新的能反映數(shù)據(jù)集重要信息的屬性,包括特征抽取、將數(shù)據(jù)應(yīng)用到新空間、基于特征融合與特征變換的特征構(gòu)造。
離散化與二值化:將數(shù)據(jù)集根據(jù)分布劃分為若干個子類,形成對數(shù)據(jù)集的離散表達。
屬性變換:將某個屬性的所有的可能值一一映射到另一個空間,如指數(shù)變換、取絕對值等。
數(shù)據(jù)預(yù)處理完成之后,數(shù)據(jù)可視化既可以自己編程實現(xiàn),也可以借助現(xiàn)有的可視化工具。
下面整理了雙變量/多變量進行可視化分析的常用代碼,基于matplotlib和seaborn實現(xiàn)。3
import pandas as pdimport numpy as npimport seaborn as snsimport matplotlib.pyplot as pltdf=sns.load_dataset("titanic")# 查看前5條數(shù)據(jù)df.head()# 查看數(shù)據(jù)量print(df.shape)# 查看數(shù)值型變量的統(tǒng)計信息,包括數(shù)量、均值、標準差、最大最小值、分位數(shù)df.describe()
相關(guān)性圖可以反映兩個變量之間的相關(guān)方向,在繪圖中還需要增加相關(guān)系數(shù),以更直觀地判斷相關(guān)程度。
from scipy.stats import pearsonrsns.jointplot(x="pclass",y="age",data=df,kind="reg",stat_func=pearsonr)
熱力圖通過色塊的顏色、深淺來表示不同變量之間的相關(guān)性。
f=df[["age","fare","sibsp"]].corr()sns.heatmap(f,annot=True)
# Import Datadf = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/mpg_ggplot2.csv")# Create Fig and gridspecfig = plt.figure(figsize=(16, 10), dpi= 80)grid = plt.GridSpec(4, 4, hspace=0.5, wspace=0.2)# Define the axesax_main = fig.add_subplot(grid[:-1, :-1])ax_right = fig.add_subplot(grid[:-1, -1], xticklabels=[], yticklabels=[])ax_bottom = fig.add_subplot(grid[-1, 0:-1], xticklabels=[], yticklabels=[])# Scatterplot on main axax_main.scatter("displ", "hwy", s=df.cty*4, c=df.manufacturer.astype("category").cat.codes, alpha=.9, data=df, cmap="tab10", edgecolors="gray", linewidths=.5)# histogram on the rightax_bottom.hist(df.displ, 40, histtype="stepfilled", orientation="vertical", color="deeppink")ax_bottom.invert_yaxis()# histogram in the bottomax_right.hist(df.hwy, 40, histtype="stepfilled", orientation="horizontal", color="deeppink")# Decorationsax_main.set(title="Scatterplot with Histograms /n displ vs hwy", xlabel="displ", ylabel="hwy")ax_main.title.set_fontsize(20)for item in ([ax_main.xaxis.label, ax_main.yaxis.label] + ax_main.get_xticklabels() + ax_main.get_yticklabels()): item.set_fontsize(14)xlabels = ax_main.get_xticks().tolist()ax_main.set_xticklabels(xlabels)plt.show()
# Load Datasetdf = sns.load_dataset("iris")# Plotplt.figure(figsize=(10,8), dpi= 80)sns.pairplot(df, kind="reg", hue="species")plt.show()
# Import Datadf = pd.read_csv("https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv")# Draw Plotplt.figure(figsize=(13,10), dpi= 80)sns.distplot(df.loc[df["class"] == "compact", "cty"], color="dodgerblue", label="Compact", hist_kws={"alpha":.7}, kde_kws={"linewidth":3})sns.distplot(df.loc[df["class"] == "suv", "cty"], color="orange", label="SUV", hist_kws={"alpha":.7}, kde_kws={"linewidth":3})sns.distplot(df.loc[df["class"] == "minivan", "cty"], color="g", label="minivan", hist_kws={"alpha":.7}, kde_kws={"linewidth":3})plt.ylim(0, 0.35)# Decorationplt.title("Density Plot of City Mileage by Vehicle Type", fontsize=22)plt.legend()plt.show()
樹結(jié)構(gòu)、圖結(jié)構(gòu)的可視化,可以用networkx來實現(xiàn)4。
import matplotlib.pyplot as pltimport networkx as nxG = nx.petersen_graph()subax1 = plt.subplot(121)nx.draw(G, with_labels=True, font_weight="bold")subax2 = plt.subplot(122)nx.draw_shell(G, nlist=[range(5, 10), range(5)], with_labels=True, font_weight="bold")
除了自己編程實現(xiàn),我們也可以借助成熟的可視化軟件,快速制作漂亮的圖表。
Office Power Map示例
Microsoft Power Map for Excel可以在三維地球或自定義地圖上繪制地理和時態(tài)數(shù)據(jù),顯示這些數(shù)據(jù),并創(chuàng)建可以與其他人分享的視覺瀏覽。
https://echarts.apache.org/zh/index.html
國產(chǎn)可視化庫,應(yīng)用廣泛,免費,開源。
https://www.tableau.com/
BI領(lǐng)域常用的可視化平臺,全球范圍應(yīng)用很廣的一款商業(yè)軟件。
https://www.visualizefree.com/
一款免費的可視化工具,可以通過拖放設(shè)計器構(gòu)建交互式可視化。
風(fēng)、氣象、海洋狀況的全球地圖:https://earth.nullschool.net/zh-cn/
標簽云制作: https://tagul.com/
全球最牛的28個大數(shù)據(jù)可視化應(yīng)用案例:http://www.open-open.com/news/view/154a034/
地理信息可視化開源庫:http://mapv.baidu.com/
本文整理了數(shù)據(jù)可視化分析的整體思路,提供了常用代碼和可視化工具。
下次面對數(shù)據(jù)分析任務(wù),就可以參考可視化方法選型中的思路,根據(jù)你的需求,選擇適當(dāng)?shù)膱D表進行可視化。
如果想要更漂亮的展示效果,可以借助成熟的可視化工具。
如果這篇文章對你有用的話,歡迎一鍵三連支持下博主~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/118788.html
摘要:多多少少有些不開心的事覺得精力沒有被投入在重點上創(chuàng)業(yè)公司遇到問題變成盲人摸象也許正常吧不過最近這段時間因為服務(wù)端的策略調(diào)整我開始做一些服務(wù)端渲染主要的站點是簡聊的登錄頁面整體從切換到了以及做了一些整體項目結(jié)構(gòu)統(tǒng)一的工作或者說一些思考我估計這 多多少少有些不開心的事, 覺得精力沒有被投入在重點上創(chuàng)業(yè)公司遇到問題變成盲人摸象也許正常吧不過最近這段時間因為服務(wù)端的策略調(diào)整, 我開始做一些服務(wù)...
摘要:前言清明不小心就拖了兩天沒更了這是十道算法題的第二篇了上一篇回顧十道簡單算法題最近在回顧以前使用寫過的數(shù)據(jù)結(jié)構(gòu)和算法的東西,發(fā)現(xiàn)自己的算法和數(shù)據(jù)結(jié)構(gòu)是真的薄弱,現(xiàn)在用改寫一下,重溫一下。 前言 清明不小心就拖了兩天沒更了~~ 這是十道算法題的第二篇了~上一篇回顧:十道簡單算法題 最近在回顧以前使用C寫過的數(shù)據(jù)結(jié)構(gòu)和算法的東西,發(fā)現(xiàn)自己的算法和數(shù)據(jù)結(jié)構(gòu)是真的薄弱,現(xiàn)在用Java改寫一下,...
摘要:在這篇文章中,老蔣定期更新和整理域名優(yōu)惠碼域名優(yōu)惠碼。關(guān)于自動續(xù)費的問題賬戶支持支付寶付款的,我們可以在新注冊或者續(xù)費等可以用支付寶付款。小時內(nèi)關(guān)于域名退款的問題如果我們不小心域名注冊錯誤,這個老蔣也是有過的。Namesilo域名注冊商是老蔣比較喜歡的海外域名注冊商之一。喜歡Namesilo商家的理由是從創(chuàng)辦以來算是很少有套路域名商,不會因為新注冊便宜續(xù)費貴,雙向價格都是比較平均的。而有一些...
摘要:軟件測試自學(xué)秘訣面試失敗一天,心態(tài)穩(wěn)的一批,因為面試的全是外包人事幫我聯(lián)系的公司,工資全都是一萬以上,之前只有四五千的自己根本不覺得自己能勝任。 個人是去年年底零基礎(chǔ)轉(zhuǎn)行,兩三千培訓(xùn)費學(xué)出來,學(xué)完后也是稀里糊涂,僅是知道功能測試就是找問題,其他接口,性能,數(shù)據(jù)庫,python基礎(chǔ),虛擬機搭建網(wǎng)站都實現(xiàn)了課程展示那樣。面試資...
摘要:時間永遠都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
閱讀 2321·2021-11-24 10:18
閱讀 3385·2021-09-22 15:35
閱讀 3339·2021-09-13 10:37
閱讀 3766·2021-09-06 15:14
閱讀 2071·2021-09-06 15:02
閱讀 2212·2021-09-02 15:11
閱讀 547·2019-08-30 15:53
閱讀 3075·2019-08-29 16:15