關注我,每天用Python做一件有趣的事,掌握一些實用的技巧。
數據可視化是數據分析中最基本的一項技能,為了讓我們的數據更具說服力,數據形象化就是一個很好的工具。在這篇文章中,我們將介紹5種超越柱狀圖和方塊圖的可視化技術,這些技術可以使你的數據加美觀和有效。我們將使用python中的Plotly圖形庫,它能夠以最小的工作量提供動畫和交互式繪圖。
Plotly的優點是什麼?
繪圖是高度集成的:與jupyter notebooks一起產生作用,可以嵌入到網站中,並與Dash完全集成——Dash是構建儀表板和分析應用程序的一個很好的工具。
正式開始
如果你沒有安裝plotly,只需在終端中運行以下命令:
<code>pip
install plotly/<code>
接下來正式開始數據可視化進階教程。
1.動畫
我們的工作經常涉及到時間數據,我們研究這個或那個指標的演變。繪圖動畫是一個很好的工具,可以通過一行代碼觀察數據在時間上的變化。
<code>import
plotly.express as px
from
vega_datasets import data
df
=data.disasters()
df
=df[df.Year > 1990]
fig
=px.bar(df,
y
="Entity",
x
="Deaths",
animation_frame
="Year",
orientation
='h',
range_x
=[0, df.Deaths.max()],
color
="Entity")
=1000,
height
=800,
xaxis_showgrid
=False,
yaxis_showgrid
=False,
paper_bgcolor
='rgba(0,0,0,0)',
plot_bgcolor
='rgba(0,0,0,0)',
title_text
='Evolution of Natural Disasters',
showlegend
=False)
='Number of Deaths')
='')
fig.show()
/<code>
只要你有一個時間變量來過濾,幾乎所有的數據都可以動畫化。設置散點圖動畫的示例:
<code>import
plotly.express as px
df
=px.data.gapminder()
fig
=px.scatter(
df,
x
="gdpPercap",
y
="lifeExp",
animation_frame
="year",
size
="pop",
color
="continent",
hover_name
="country",
log_x
=True,
size_max
=55,
range_x
=[100, 100000],
range_y
=[25, 90],
)
=1000,
height
=800,
xaxis_showgrid
=False,
yaxis_showgrid
=False,
paper_bgcolor
='rgba(0,0,0,0)',
plot_bgcolor
='rgba(0,0,0,0)')
/<code>
2.太陽風暴圖
太陽風暴圖是一個很好地可視化你的數據的方式。如果你想通過一個或多個分類變量來分解一個給定的數量,那就去做一個日光圖。
比如說,我們要分解一天中每個性別和時間的平均消費金額。這是一個雙group by語句,可以通過可視化而不是表輸出有效地傳遞:
繪圖是交互式的,允許你單擊並瀏覽每個類別。你只需要定義所有類別,聲明它們之間的層次結構並分配相應的值,在我們的例子中,這將是group by語句的輸出。
<code>import
plotly.graph_objects asgo
import
plotly.express as pximport
numpy as npimport
pandas as pd df = px.data.tips() fig =go
.Figure(go
.Sunburst( labels=["Female"
,"Male"
,"Dinner"
,"Lunch"
,'Dinner '
,'Lunch '
], parents=[""
,""
,"Female"
,"Female"
,'Male'
,'Male'
], values=np.append
( df.groupby('sex'
).tip.mean().values, df.groupby(['sex'
,'time'
]).tip.mean().values), marker=dict(colors=px.colors.sequential.Emrld)), layout=go
.Layout(paper_bgcolor='rgba(0,0,0,0)'
, plot_bgcolor='rgba(0,0,0,0)'
)) fig.update_layout(margin=dict(t=0
, l=0
, r=0
, b=0
), title_text='Tipping Habbits Per Gender, Time and Day'
) fig.show()/<code>
現在,讓我們在層次結構中添加另一層:
因此,我們在另一個group by語句中添加包含三個分類變量的值。
<code>import
plotly.graph_objects asgo
import
plotly.express as pximport
pandas as pdimport
numpy as np df = px.data.tips() fig =go
.Figure(go
.Sunburst(labels=["Female"
,"Male"
,"Dinner"
,"Lunch"
,'Dinner '
,'Lunch '
,'Fri'
,'Sat'
,'Sun'
,'Thu'
,'Fri '
,'Thu '
,'Fri '
,'Sat '
,'Sun '
,'Fri '
,'Thu '
], parents=[""
,""
,"Female"
,"Female"
,'Male'
,'Male'
,'Dinner'
,'Dinner'
,'Dinner'
,'Dinner'
,'Lunch'
,'Lunch'
,'Dinner '
,'Dinner '
,'Dinner '
,'Lunch '
,'Lunch '
], values=np.append
( np.append
( df.groupby('sex'
).tip.mean().values, df.groupby(['sex'
,'time'
]).tip.mean().values, ), df.groupby(['sex'
,'time'
,'day'
]).tip.mean().values), marker=dict(colors=px.colors.sequential.Emrld)), layout=go
.Layout(paper_bgcolor='rgba(0,0,0,0)'
, plot_bgcolor='rgba(0,0,0,0)'
)) fig.update_layout(margin=dict(t=0
, l=0
, r=0
, b=0
), title_text='Tipping Habbits Per Gender, Time and Day'
) fig.show()/<code>
3.平行類別
探索分類變量之間關係的另一個好方法是這個流程圖。你可以在移動中拖放、突出顯示和探索價值觀,這對演示非常有用。
<code>import
plotly.expressas
px from vega_datasetsimport
data
import
pandasas
pd df =data
.movies() df = df.dropna() df['Genre_id'
] = df.Major_Genre.factorize()[0
] fig = px.parallel_categories( df, dimensions=['MPAA_Rating'
,'Creative_Type'
,'Major_Genre'
], color="Genre_id"
, color_continuous_scale=px.colors.sequential.Emrld, ) fig.show()/<code>
4.平行座標
平行座標繪圖是上述繪圖的連續版本。在這裡,每個和絃代表一個單獨的觀察。這是一個很好的工具,用於發現異常值(與其他數據隔離的單線程)、集群、趨勢和冗餘變量(例如,如果兩個變量的每個觀測值相似,它們將位於水平線上並指示冗餘)。
5.儀表圖和指示器
儀表僅僅是為了美觀。它們是報告一些成功指標或關鍵績效指標並將它們與目標聯繫起來的一種好方法。
指標在商業和諮詢領域非常有用。它們用文本標記來補充你的視覺效果,吸引你的觀眾的注意力,並傳達你的成長指標。
最後,如果你對Python數據可視化感興趣,我們還有一篇更加全面的的文章,大家可以點擊標題進行收藏學習:《Python數據可視化的完整版操作指南(建議收藏)》
--END--
歡迎大家關注我們的公眾號:為AI吶喊(weainahan)
為了幫助更多缺少項目實戰的同學入門Python,我們在頭條上創建了一個專欄:《7小時快速掌握Pthon核心編程》,歡迎大家點擊下方鏈接或者閱讀原文進行試看~
專欄
7小時內快速搞定Python核心編程
160幣
0人已購