Python matplotlib實戰(zhàn)之漏斗圖繪制
漏斗圖,形如“漏斗”,用于展示數(shù)據(jù)的逐漸減少或過濾過程。
它的起始總是最大,并在各個環(huán)節(jié)依次減少,每個環(huán)節(jié)用一個梯形來表示,整體形如漏斗。
一般來說,所有梯形的高度應是一致的,這會有助人們辨別數(shù)值間的差異。
需要注意的是,漏斗圖的各個環(huán)節(jié),有邏輯上的順序關(guān)系。
同時,漏斗圖的所有環(huán)節(jié)的流量都應該使用同一個度量。
通過漏斗圖,可以較直觀的看出流程中各部分的占比、發(fā)現(xiàn)流程中的問題,進而做出決策。
1. 主要元素
漏斗圖的主要元素包括:
- 分類:漏斗圖中的不同層級或步驟。每個分類代表一個特定的過程、篩選或轉(zhuǎn)化。
- 倒梯形:表示在每個階段中的數(shù)據(jù)數(shù)量或數(shù)量的百分比。通常,隨著階段的推進,數(shù)據(jù)量會逐漸減少。
- 數(shù)據(jù)流:表示數(shù)據(jù)在不同階段之間的流動路徑。它顯示了數(shù)據(jù)從一個階段到另一個階段的轉(zhuǎn)移和過濾過程。
- 轉(zhuǎn)化率:表示在每個階段中數(shù)據(jù)的轉(zhuǎn)化率或轉(zhuǎn)化的百分比。它反映了數(shù)據(jù)在不同階段之間的損失或過濾程度。
2. 適用的場景
漏斗圖適用的分析場景包括:
- 銷售轉(zhuǎn)化分析:跟蹤銷售過程中的潛在客戶數(shù)量,并展示他們在不同階段的轉(zhuǎn)化率,從而幫助分析銷售流程中的瓶頸和改進機會。
- 市場營銷分析:展示市場活動中的潛在客戶數(shù)量,并顯示他們在不同營銷階段的轉(zhuǎn)化率,從而評估市場策略的有效性和改進方向。
- 用戶體驗分析:追蹤用戶在產(chǎn)品或服務使用過程中的轉(zhuǎn)化率,幫助分析用戶體驗中的瓶頸和提升點,從而優(yōu)化產(chǎn)品或服務設計。
- 網(wǎng)站流量分析:展示網(wǎng)站訪問者在不同頁面或功能模塊之間的轉(zhuǎn)化率,幫助分析用戶行為和改進網(wǎng)站設計。
3. 不適用的場景
然而,漏斗圖并不適用于所有分析場景。以下是一些不適合使用漏斗圖的情況:
- 數(shù)據(jù)無序或重復:如果數(shù)據(jù)沒有明確的階段或無法按照特定的流程進行過濾或轉(zhuǎn)化,漏斗圖可能不適用。
- 數(shù)據(jù)缺失或不完整:如果數(shù)據(jù)在不同階段之間存在缺失或不完整,漏斗圖可能無法準確反映數(shù)據(jù)流動和轉(zhuǎn)化情況。
- 多個并行路徑:如果數(shù)據(jù)在不同階段之間存在多個并行路徑,并且無法簡單地表示為單一的線性流程,漏斗圖可能無法有效展示數(shù)據(jù)流動。
4. 分析實戰(zhàn)
本次用漏斗圖分析各個學歷的畢業(yè)生人數(shù),從小學學歷到博士學歷。
4.1. 數(shù)據(jù)來源
數(shù)據(jù)來源國家統(tǒng)計局公開的數(shù)據(jù),整理好的數(shù)據(jù)可從下面的地址下載:databook.top/nation/A0M
使用其中的文件:A0M0203.csv
(各級各類學歷教育畢業(yè)生數(shù))
fp = "d:/share/data/A0M0203.csv" df = pd.read_csv(fp) df
4.2. 數(shù)據(jù)清理
漏斗圖不需要時間序列數(shù)據(jù),所以,只提取2021年的數(shù)據(jù)中從小學到博士的6種學歷的畢業(yè)生人數(shù)。
data = df[df["sj"] == 2021] #A0M020312: 普通小學畢業(yè)生數(shù)(萬人) #A0M02030T: 初中階段教育畢業(yè)生數(shù)(萬人) #A0M02030J: 普通高中畢業(yè)生數(shù)(萬人) #A0M020306: 普通本科畢業(yè)生數(shù)(萬人) #A0M020304: 碩士畢業(yè)生數(shù)(萬人) #A0M020303: 博士畢業(yè)生數(shù)(萬人) 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年各學歷畢業(yè)人數(shù)")
從圖中可以看出,完成9年義務教育的比例很高。
初中到高中,人數(shù)幾乎減半,而本科考研,碩士考博的人數(shù)比例更是銳減。
到此這篇關(guān)于Python matplotlib實戰(zhàn)之漏斗圖繪制的文章就介紹到這了,更多相關(guān)matplotlib漏斗圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解程序意外中斷自動重啟shell腳本(以Python為例)
這篇文章主要介紹了詳解程序意外中斷自動重啟shell腳本(以Python為例),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07python尋找list中最大值、最小值并返回其所在位置的方法
今天小編就為大家分享一篇python尋找list中最大值、最小值并返回其所在位置的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06Django3基于WebSocket實現(xiàn)WebShell的詳細過程
最近工作中需要開發(fā)前端操作遠程虛擬機的功能,簡稱WebShell,普通應用大部分用的都是wsgi.py配合nginx部署線上服務. 這次主要使用asgi.py,具體實現(xiàn)過程跟隨小編一起看看吧2021-08-08Python 3實戰(zhàn)爬蟲之爬取京東圖書的圖片詳解
最近在學習python3,下面這篇文章主要給大家介紹了關(guān)于Python3實戰(zhàn)爬蟲之爬取京東圖書圖片的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-10-10