Python matplotlib實(shí)戰(zhàn)之漏斗圖繪制
漏斗圖,形如“漏斗”,用于展示數(shù)據(jù)的逐漸減少或過(guò)濾過(guò)程。
它的起始總是最大,并在各個(gè)環(huán)節(jié)依次減少,每個(gè)環(huán)節(jié)用一個(gè)梯形來(lái)表示,整體形如漏斗。
一般來(lái)說(shuō),所有梯形的高度應(yīng)是一致的,這會(huì)有助人們辨別數(shù)值間的差異。
需要注意的是,漏斗圖的各個(gè)環(huán)節(jié),有邏輯上的順序關(guān)系。
同時(shí),漏斗圖的所有環(huán)節(jié)的流量都應(yīng)該使用同一個(gè)度量。
通過(guò)漏斗圖,可以較直觀的看出流程中各部分的占比、發(fā)現(xiàn)流程中的問(wèn)題,進(jìn)而做出決策。
1. 主要元素
漏斗圖的主要元素包括:
- 分類(lèi):漏斗圖中的不同層級(jí)或步驟。每個(gè)分類(lèi)代表一個(gè)特定的過(guò)程、篩選或轉(zhuǎn)化。
- 倒梯形:表示在每個(gè)階段中的數(shù)據(jù)數(shù)量或數(shù)量的百分比。通常,隨著階段的推進(jìn),數(shù)據(jù)量會(huì)逐漸減少。
- 數(shù)據(jù)流:表示數(shù)據(jù)在不同階段之間的流動(dòng)路徑。它顯示了數(shù)據(jù)從一個(gè)階段到另一個(gè)階段的轉(zhuǎn)移和過(guò)濾過(guò)程。
- 轉(zhuǎn)化率:表示在每個(gè)階段中數(shù)據(jù)的轉(zhuǎn)化率或轉(zhuǎn)化的百分比。它反映了數(shù)據(jù)在不同階段之間的損失或過(guò)濾程度。
2. 適用的場(chǎng)景
漏斗圖適用的分析場(chǎng)景包括:
- 銷(xiāo)售轉(zhuǎn)化分析:跟蹤銷(xiāo)售過(guò)程中的潛在客戶數(shù)量,并展示他們?cè)诓煌A段的轉(zhuǎn)化率,從而幫助分析銷(xiāo)售流程中的瓶頸和改進(jìn)機(jī)會(huì)。
- 市場(chǎng)營(yíng)銷(xiāo)分析:展示市場(chǎng)活動(dòng)中的潛在客戶數(shù)量,并顯示他們?cè)诓煌瑺I(yíng)銷(xiāo)階段的轉(zhuǎn)化率,從而評(píng)估市場(chǎng)策略的有效性和改進(jìn)方向。
- 用戶體驗(yàn)分析:追蹤用戶在產(chǎn)品或服務(wù)使用過(guò)程中的轉(zhuǎn)化率,幫助分析用戶體驗(yàn)中的瓶頸和提升點(diǎn),從而優(yōu)化產(chǎn)品或服務(wù)設(shè)計(jì)。
- 網(wǎng)站流量分析:展示網(wǎng)站訪問(wèn)者在不同頁(yè)面或功能模塊之間的轉(zhuǎn)化率,幫助分析用戶行為和改進(jìn)網(wǎng)站設(shè)計(jì)。
3. 不適用的場(chǎng)景
然而,漏斗圖并不適用于所有分析場(chǎng)景。以下是一些不適合使用漏斗圖的情況:
- 數(shù)據(jù)無(wú)序或重復(fù):如果數(shù)據(jù)沒(méi)有明確的階段或無(wú)法按照特定的流程進(jìn)行過(guò)濾或轉(zhuǎn)化,漏斗圖可能不適用。
- 數(shù)據(jù)缺失或不完整:如果數(shù)據(jù)在不同階段之間存在缺失或不完整,漏斗圖可能無(wú)法準(zhǔn)確反映數(shù)據(jù)流動(dòng)和轉(zhuǎn)化情況。
- 多個(gè)并行路徑:如果數(shù)據(jù)在不同階段之間存在多個(gè)并行路徑,并且無(wú)法簡(jiǎn)單地表示為單一的線性流程,漏斗圖可能無(wú)法有效展示數(shù)據(jù)流動(dòng)。
4. 分析實(shí)戰(zhàn)
本次用漏斗圖分析各個(gè)學(xué)歷的畢業(yè)生人數(shù),從小學(xué)學(xué)歷到博士學(xué)歷。
4.1. 數(shù)據(jù)來(lái)源
數(shù)據(jù)來(lái)源國(guó)家統(tǒng)計(jì)局公開(kāi)的數(shù)據(jù),整理好的數(shù)據(jù)可從下面的地址下載:databook.top/nation/A0M
使用其中的文件:A0M0203.csv
(各級(jí)各類(lèi)學(xué)歷教育畢業(yè)生數(shù))
fp = "d:/share/data/A0M0203.csv" df = pd.read_csv(fp) df
4.2. 數(shù)據(jù)清理
漏斗圖不需要時(shí)間序列數(shù)據(jù),所以,只提取2021年的數(shù)據(jù)中從小學(xué)到博士的6種學(xué)歷的畢業(yè)生人數(shù)。
data = df[df["sj"] == 2021] #A0M020312: 普通小學(xué)畢業(yè)生數(shù)(萬(wàn)人) #A0M02030T: 初中階段教育畢業(yè)生數(shù)(萬(wàn)人) #A0M02030J: 普通高中畢業(yè)生數(shù)(萬(wàn)人) #A0M020306: 普通本科畢業(yè)生數(shù)(萬(wàn)人) #A0M020304: 碩士畢業(yè)生數(shù)(萬(wàn)人) #A0M020303: 博士畢業(yè)生數(shù)(萬(wàn)人) data = data[ data["zb"].isin( [ "A0M020312", "A0M02030T", "A0M02030J", "A0M020306", "A0M020304", "A0M020303", ] ) ] data = data.sort_values("value", ascending=False) data
4.3. 分析結(jié)果可視化
with plt.style.context("dark_background"): fig = plt.figure() ax = fig.add_axes([0.1, 0.1, 1, 1]) colors = plt.cm.Set2.colors cnt = len(data) y = [[1 + i * 3, 3.8 + i * 3] for i in range(cnt)] y_ticks = [2 + i * 3 for i in range(cnt)] start_x1 = 5 start_x2 = -5 for i in range(cnt): ax.fill_betweenx( y=y[i], x1=[start_x1, data.iloc[i, 4]], x2=[start_x2, -1 * data.iloc[i, 4]], color=colors[i], ) start_x1 = data.iloc[i, 4] start_x2 = -1 * data.iloc[i, 4] ax.set_xticks([], []) ax.set_yticks(y_ticks, data["zbCN"]) for y, value in zip(y_ticks, data["value"]): ax.text( 10, y, value, fontsize=16, fontweight="bold", color="white", ha="center", ) ax.grid(False) ax.set_title("2021年各學(xué)歷畢業(yè)人數(shù)")
從圖中可以看出,完成9年義務(wù)教育的比例很高。
初中到高中,人數(shù)幾乎減半,而本科考研,碩士考博的人數(shù)比例更是銳減。
到此這篇關(guān)于Python matplotlib實(shí)戰(zhàn)之漏斗圖繪制的文章就介紹到這了,更多相關(guān)matplotlib漏斗圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解程序意外中斷自動(dòng)重啟shell腳本(以Python為例)
這篇文章主要介紹了詳解程序意外中斷自動(dòng)重啟shell腳本(以Python為例),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07python尋找list中最大值、最小值并返回其所在位置的方法
今天小編就為大家分享一篇python尋找list中最大值、最小值并返回其所在位置的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06詳解安裝mitmproxy以及遇到的坑和簡(jiǎn)單用法
mitmproxy 是一款工具,也可以說(shuō)是 python 的一個(gè)包,在命令行操作的工具。這篇文章主要介紹了詳解安裝mitmproxy以及遇到的坑和簡(jiǎn)單用法,感興趣的小伙伴們可以參考一下2019-01-01使用Python實(shí)現(xiàn)VPN搭建的流程步驟
VPN(虛擬私人網(wǎng)絡(luò))是一種有效的解決方案,可以幫助我們?cè)诰W(wǎng)絡(luò)上匿名瀏覽,保護(hù)數(shù)據(jù)傳輸?shù)陌踩?雖然市面上有許多商業(yè)VPN服務(wù),但你也可以通過(guò)Python自己搭建一個(gè)簡(jiǎn)單的VPN,本文將介紹如何用Python建立自己的VPN,需要的朋友可以參考下2024-06-06Django3基于WebSocket實(shí)現(xiàn)WebShell的詳細(xì)過(guò)程
最近工作中需要開(kāi)發(fā)前端操作遠(yuǎn)程虛擬機(jī)的功能,簡(jiǎn)稱(chēng)WebShell,普通應(yīng)用大部分用的都是wsgi.py配合nginx部署線上服務(wù). 這次主要使用asgi.py,具體實(shí)現(xiàn)過(guò)程跟隨小編一起看看吧2021-08-08python小球落地問(wèn)題及解決(遞歸函數(shù))
這篇文章主要介紹了python小球落地問(wèn)題及解決(遞歸函數(shù)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05Python 3實(shí)戰(zhàn)爬蟲(chóng)之爬取京東圖書(shū)的圖片詳解
最近在學(xué)習(xí)python3,下面這篇文章主要給大家介紹了關(guān)于Python3實(shí)戰(zhàn)爬蟲(chóng)之爬取京東圖書(shū)圖片的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-10-10