可視化是一種方便的觀察數(shù)據(jù)的方式,可以一目了然地了解數(shù)據(jù)塊。我們經(jīng)常使用柱狀圖、直方圖、餅圖、箱圖、熱圖、散點(diǎn)圖、線狀圖等。這些典型的圖對于數(shù)據(jù)可視化是必不可少的。除了這些被廣泛使用的圖表外,還有許多很好的卻很少被使用的可視化方法,這些圖有助于完成我們的工作,下面我們看看有那些圖可以進(jìn)行。
1、平行坐標(biāo)圖
Parallel Coordinate
我們最多可以可視化 3 維數(shù)據(jù)。但是我們有時(shí)需要可視化超過3維的數(shù)據(jù)才能獲得更多的信息。我們經(jīng)常使用PCA
或t-SNE
來降維并繪制它。在降維的情況下,可能會(huì)丟失大量信息。在某些情況下,我們需要考慮所有特征,平行坐標(biāo)圖有助于做到這一點(diǎn)。
鳶尾花數(shù)據(jù)集的平行坐標(biāo)圖
上面的圖片。橫線(平行軸)表示鳶尾花的特征(花瓣長、萼片長、萼片寬、花瓣寬)。分類是Setosa, Versicolor和Virginica。上圖將該物種編碼為Setosa→1,Versicolor→2,Virginica→3。每個(gè)平行軸包含最小值到最大值(例如,花瓣長度從1到6.9,萼片長度從4.3到7.9,等等)。例如,考慮花瓣長度軸。這表明與其他兩種植物相比,瀨蝶屬植物的花瓣長度較小,其中維珍屬植物的花瓣長度最高。
有了這個(gè)圖,我們可以很容易地獲得數(shù)據(jù)集的總體信息。數(shù)據(jù)集是什么樣子的?讓我們來看看。
讓我們用Plotly Express
庫[1]可視化數(shù)據(jù)。Plotly庫提供了一個(gè)交互式繪圖工具。
importplotly.expressaspx df=px.data.iris() fig=px.parallel_coordinates(df,color="species_id",labels={"species_id":"Species", "sepal_width":"SepalWidth","sepal_length":"SepalLength", "petal_width":"PetalWidth","petal_length":"PetalLength",}, color_continuous_scale=px.colors.diverging.Tealrose, color_continuous_midpoint=2) fig.show()
output
除了上圖以外我們還可以使用其他庫,如pandas
、scikit-learn
和matplotlib
來繪制并行坐標(biāo)。
2、六邊形分箱圖
Hexagonal Binning
六邊形分箱圖是一種用六邊形直觀表示二維數(shù)值數(shù)據(jù)點(diǎn)密度的方法。
ax=df.plot.hexbin(x='sepal_width',y='sepal_length', gridsize=20,color='#BDE320')
output
Pandas
允許我們繪制六邊形binning
[2]。我已經(jīng)展示了用于查找sepal_width
和sepal_length
列的密度的圖。
其他庫,如matplotlib
、seaborn
、bokeh
(交互式繪圖)也可用于繪制它。
3、等高線密度圖
Countour
二維等高線密度圖是可視化特定區(qū)域內(nèi)數(shù)據(jù)點(diǎn)密度的另一種方法。這是為了找到兩個(gè)數(shù)值變量的密度。例如,下面的圖顯示了在每個(gè)陰影區(qū)域有多少數(shù)據(jù)點(diǎn)。
importplotly.expressaspx fig=px.density_contour(df,x="sepal_width",y="sepal_length") fig.update_traces(contours_coloring="fill",contours_showlabels=True) fig.show()
output
plotly
庫,因?yàn)樗梢苑奖愕乩L制交互式的圖表。我們這里繪制了兩個(gè)變量sepal_width
和sepal_length
的密度。
當(dāng)然,也可以使用其他庫,如seaborn
、matplotlib
等。4、QQ-plot
QQ plot
是另一個(gè)有趣的圖。QQ
是Quantile - Quantile plot
的縮寫(Quantile/percentile是一個(gè)范圍,在這個(gè)范圍內(nèi)數(shù)據(jù)下降了指定百分比。例如,第10個(gè)quantile/percentile表示在該范圍下,找到了10%的數(shù)據(jù),90% 超出范圍)。這是一種直觀地檢查數(shù)值變量是否服從正態(tài)分布的方法。讓我解釋一下它是如何工作的。
(a)樣本分布(b)標(biāo)準(zhǔn)正態(tài)分布
圖(a)是樣本分布;(b)是標(biāo)準(zhǔn)正態(tài)分布。對于樣本分布,數(shù)據(jù)范圍從10到100(100% 數(shù)據(jù)在 10 到 100 之間)。但對于標(biāo)準(zhǔn)正態(tài)分布,100%的數(shù)據(jù)在-3 到3(z 分?jǐn)?shù))的范圍內(nèi)。在QQ
圖中,兩個(gè)x軸值均分為 100個(gè)相等的部分(稱為分位數(shù))。如果我們針對x和y軸繪制這兩個(gè)值,我們將得到一個(gè)散點(diǎn)圖。
QQ-plot
散點(diǎn)圖位于對角線上。這意味著樣本分布是正態(tài)分布。如果散點(diǎn)圖位于左邊或右邊而不是對角線,這意味著樣本不是正態(tài)分布的。
導(dǎo)入必要的庫
importpandasaspd importnumpyasnp importmatplotlib.pyplotasplt importseabornassns
生成正態(tài)分布數(shù)據(jù)。
np.random.seed(10) #GenerateUnivariateObservations gauss_data=5*np.random.randn(100)+50
繪制數(shù)據(jù)點(diǎn)的分布。
sns.histplot(data=gauss_data,kde=True)
output
該圖顯示數(shù)據(jù)是正態(tài)分布的。我們用數(shù)據(jù)點(diǎn)做qq-plot
來檢驗(yàn)它是否正態(tài)分布。
importstatsmodels.apiassm #q-qplot sm.qqplot(gauss_data,line='s') plt.show()
output
該圖顯示散點(diǎn)位于對角線上。所以它是正態(tài)分布的。
小提琴圖
Violin Plot
小提琴圖與箱線圖相關(guān)。我們能從小提琴圖中獲得的另一個(gè)信息是密度分布。簡單來說就是一個(gè)結(jié)合了密度分布的箱線圖。我們將其與箱線圖進(jìn)行比較。 在小提琴圖中,小提琴中間的白點(diǎn)表示中點(diǎn)。實(shí)心框表示四分位數(shù)間距 (IQR)。上下相鄰值是異常值的圍欄。超出范圍,一切都是異常值。下圖顯示了比較。
盒狀圖和小提琴狀圖的常見組成。所有學(xué)術(shù)級別的薪酬總額
讓我們看看小提琴圖的可視化。
importseabornassns sns.violinplot(data=df,y="sepal_width")
output
我們還可以通過傳遞名稱來繪制不同物種的小提琴圖。
importseabornassns sns.violinplot(data=df,x='species',y="sepal_width")
output
還可以使用其他庫,如plotly
、matplotlib
等來繪制小提琴圖。
箱線圖的改進(jìn)版
Boxen plot
Boxenplot
是seaborn
庫引入的一種新型箱線圖。對于箱線圖,框是在四分位數(shù)上創(chuàng)建的。但在Boxenplot
中,數(shù)據(jù)被分成更多的分位數(shù)。它提供了對數(shù)據(jù)的更多內(nèi)存。
鳶尾花數(shù)據(jù)集的Boxenplot
顯示了sepal_width
的數(shù)據(jù)分布。
sns.boxenplot(x=df["sepal_width"])
output
上圖顯示了比箱線圖更多的盒。這是因?yàn)槊總€(gè)框代表一個(gè)特定的分位數(shù)。
sns.boxenplot(data=df,x="species",y='sepal_width')
output
不同物種sepal_width
的Boxenplot
圖。
點(diǎn)圖
下圖中有一些名為誤差線的垂直線和其他一些連接這些垂直線的線。讓我們看看它的確切含義。
點(diǎn)圖是一種通過上圖中顯示的點(diǎn)的位置來表示數(shù)值變量集中趨勢的方法,誤差條表示變量的不確定性(置信區(qū)間)[4]。繪制線圖是為了比較不同分類值的數(shù)值變量的變異性 [4]。
讓我們舉一個(gè)實(shí)際的例子—-我們繼續(xù)使用seaborn
庫和iris
數(shù)據(jù)集(在平行坐標(biāo)部分中提到)。
importseabornassns sns.pointplot(data=df,x="species",y="sepal_width")
output
分簇散點(diǎn)圖
Swarm plot
Swarm plot
是另一個(gè)受“beeswarm”啟發(fā)的有趣圖表。通過此圖我們可以輕松了解不同的分類值如何沿?cái)?shù)值軸分布[5]。它在不重疊數(shù)據(jù)點(diǎn)的情況下繪制數(shù)據(jù)。但它不適用于大型數(shù)據(jù)集。
importseabornassns sns.swarmplot(data=df,x="species",y="sepal_width")
output
旭日圖
Sunburst Chart
它是圓環(huán)圖或餅圖的定制版本,將一些額外的層次信息集成到圖中 [7]。
Sunburst Chart
整個(gè)圖表被分成幾個(gè)環(huán)(從內(nèi)到外)。它保存層次結(jié)構(gòu)信息,其中內(nèi)環(huán)位于層次結(jié)構(gòu)的頂部,外環(huán)位于較低的[7]階。
importplotly.expressaspx df=px.data.tips()
output
繪制旭日圖
fig=px.sunburst(df,path=['sex','day','time'], values='total_bill',color='time') fig.show()
output
sunburst
類的path
屬性提供了層次結(jié)構(gòu),其中性別位于層次結(jié)構(gòu)的頂部,然后是日期和時(shí)間。
詞云
Word Cloud
詞云圖的想法非常簡單。假設(shè)我們有一組文本文檔。單詞有很多,有些是經(jīng)常出現(xiàn)的,有些是很少出現(xiàn)的。在詞云圖中,所有單詞都被繪制在特定的區(qū)域中,頻繁出現(xiàn)的單詞被高亮顯示(用較大的字體顯示)。有了這個(gè)詞云,我們可以很容易地找到重要的客戶反饋,熱門的政治議程話題等。
數(shù)據(jù)集 https://opendatacommons.org/licenses/odbl/1-0/
導(dǎo)入數(shù)據(jù)集
importpandasaspd
data=pd.read_csv('/work/android-games.csv')
data.head()
output
我們統(tǒng)計(jì)每個(gè)類別的數(shù)據(jù)數(shù)量
data.category.value_counts() GAMECARD126 GAMEWORD104 GAMEACTION100 GAMEADVENTURE100 GAMESTRATEGY100 GAMEPUZZLE100 GAMESIMULATION100 GAMECASUAL100 GAMEARCADE100 GAMEROLEPLAYING100 GAMETRIVIA100 GAMEBOARD100 GAMECASINO100 GAMERACING100 GAMEEDUCATIONAL100 GAMESPORTS100 GAMEMUSIC100 Name:category,dtype:int64
然后我們來進(jìn)行可視化。
#importingthemodulefromwordcloudlibrary fromwordcloudimportWordCloud importmatplotlib.pyplotasplt #creatingatextfromthecategorycolumnbytakingonlythe2ndpartofthecategory. text="".join(cat.split()[1]forcatindata.category) #generatingthecloud word_cloud=WordCloud(collocations=False,background_color='black').generate(text) plt.imshow(word_cloud,interpolation='bilinear') plt.axis("off") plt.show()
output
該圖表顯示了頻率最高的所有類別。我們也可以用這個(gè)圖從文本中找到經(jīng)常出現(xiàn)的單詞。
總結(jié)
數(shù)據(jù)可視化是數(shù)據(jù)科學(xué)中不可缺少的一部分。在數(shù)據(jù)科學(xué)中,我們與數(shù)據(jù)打交道。手工分析少量數(shù)據(jù)是可以的,但當(dāng)我們處理數(shù)千個(gè)數(shù)據(jù)時(shí)它就變得非常麻煩。如果我們不能發(fā)現(xiàn)數(shù)據(jù)集的趨勢和洞察力,我們可能無法使用這些數(shù)據(jù)。希望上面介紹的的圖可以幫助你深入了解數(shù)據(jù)。
以下是本文的引用
https://plotly.com/python/parallel-coordinates-plot/https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.hexbin.html
Hintze, V. P. A Box Plot-Density Trace Synergism. Am. Sat, (52), 181 (Open Access Journal).
seaborn.pointplot — seaborn 0.12.1 documentation (pydata.org)
seaborn.swarmplot—seaborn0.12.1documentation(pydata.org)CreateasunburstchartinOffice—MicrosoftSupport
審核編輯 :李倩
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7252瀏覽量
91666 -
可視化
+關(guān)注
關(guān)注
1文章
1257瀏覽量
21774 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1223瀏覽量
25384
原文標(biāo)題:總結(jié)歸納了10個(gè)超級實(shí)用的數(shù)據(jù)可視化圖表
文章出處:【微信號:DBDevs,微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
工業(yè)設(shè)備可視化管理系統(tǒng)是什么

可視化組態(tài)物聯(lián)網(wǎng)平臺(tái)是什么
VirtualLab Fusion中的可視化設(shè)置
VirtualLab Fusion應(yīng)用:光波導(dǎo)k域布局可視化(“神奇的圓環(huán)”)
七款經(jīng)久不衰的數(shù)據(jù)可視化工具!
什么是大屏數(shù)據(jù)可視化?特點(diǎn)有哪些?
如何找到適合的大屏數(shù)據(jù)可視化系統(tǒng)

可視化圖表組件-“雙跨”平臺(tái) BI 數(shù)據(jù)大屏 #數(shù)據(jù)可視化 #可視化圖表 #BI報(bào)表 #駕駛艙
Minitab 數(shù)據(jù)可視化技巧
智慧能源可視化監(jiān)管平臺(tái)——助力可視化能源數(shù)據(jù)管理

智慧樓宇可視化的優(yōu)點(diǎn)
智慧園區(qū)數(shù)據(jù)可視化優(yōu)勢體現(xiàn)在哪些地方

工業(yè)數(shù)據(jù)可視化管理平臺(tái)是什么
博世Logistics Cockpit軟件平臺(tái)這套神秘引擎把數(shù)據(jù)可視化玩得很酷

評論