Python matplotlib實戰(zhàn)之漏斗圖繪制
漏斗圖,形如“漏斗”,用于展示數(shù)據(jù)的逐漸減少或過濾過程。
它的起始總是最大,并在各個環(huán)節(jié)依次減少,每個環(huán)節(jié)用一個梯形來表示,整體形如漏斗。
一般來說,所有梯形的高度應(yīng)是一致的,這會有助人們辨別數(shù)值間的差異。
需要注意的是,漏斗圖的各個環(huán)節(jié),有邏輯上的順序關(guān)系。
同時,漏斗圖的所有環(huán)節(jié)的流量都應(yīng)該使用同一個度量。
通過漏斗圖,可以較直觀的看出流程中各部分的占比、發(fā)現(xiàn)流程中的問題,進(jìn)而做出決策。
1. 主要元素
漏斗圖的主要元素包括:
- 分類:漏斗圖中的不同層級或步驟。每個分類代表一個特定的過程、篩選或轉(zhuǎn)化。
- 倒梯形:表示在每個階段中的數(shù)據(jù)數(shù)量或數(shù)量的百分比。通常,隨著階段的推進(jìn),數(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)化率,從而幫助分析銷售流程中的瓶頸和改進(jìn)機會。
- 市場營銷分析:展示市場活動中的潛在客戶數(shù)量,并顯示他們在不同營銷階段的轉(zhuǎn)化率,從而評估市場策略的有效性和改進(jìn)方向。
- 用戶體驗分析:追蹤用戶在產(chǎn)品或服務(wù)使用過程中的轉(zhuǎn)化率,幫助分析用戶體驗中的瓶頸和提升點,從而優(yōu)化產(chǎn)品或服務(wù)設(shè)計。
- 網(wǎng)站流量分析:展示網(wǎng)站訪問者在不同頁面或功能模塊之間的轉(zhuǎn)化率,幫助分析用戶行為和改進(jìn)網(wǎng)站設(shè)計。
3. 不適用的場景
然而,漏斗圖并不適用于所有分析場景。以下是一些不適合使用漏斗圖的情況:
- 數(shù)據(jù)無序或重復(fù):如果數(shù)據(jù)沒有明確的階段或無法按照特定的流程進(jìn)行過濾或轉(zhuǎn)化,漏斗圖可能不適用。
- 數(shù)據(jù)缺失或不完整:如果數(shù)據(jù)在不同階段之間存在缺失或不完整,漏斗圖可能無法準(zhǔn)確反映數(shù)據(jù)流動和轉(zhuǎn)化情況。
- 多個并行路徑:如果數(shù)據(jù)在不同階段之間存在多個并行路徑,并且無法簡單地表示為單一的線性流程,漏斗圖可能無法有效展示數(shù)據(jù)流動。
4. 分析實戰(zhàn)
本次用漏斗圖分析各個學(xué)歷的畢業(yè)生人數(shù),從小學(xué)學(xué)歷到博士學(xué)歷。
4.1. 數(shù)據(jù)來源
數(shù)據(jù)來源國家統(tǒng)計局公開的數(shù)據(jù),整理好的數(shù)據(jù)可從下面的地址下載:databook.top/nation/A0M
使用其中的文件:A0M0203.csv(各級各類學(xué)歷教育畢業(yè)生數(shù))
fp = "d:/share/data/A0M0203.csv" df = pd.read_csv(fp) df

4.2. 數(shù)據(jù)清理
漏斗圖不需要時間序列數(shù)據(jù),所以,只提取2021年的數(shù)據(jù)中從小學(xué)到博士的6種學(xué)歷的畢業(yè)生人數(shù)。
data = df[df["sj"] == 2021]
#A0M020312: 普通小學(xué)畢業(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年各學(xué)歷畢業(yè)人數(shù)")
從圖中可以看出,完成9年義務(wù)教育的比例很高。
初中到高中,人數(shù)幾乎減半,而本科考研,碩士考博的人數(shù)比例更是銳減。
到此這篇關(guān)于Python matplotlib實戰(zhàn)之漏斗圖繪制的文章就介紹到這了,更多相關(guān)matplotlib漏斗圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Tensorflow 1.0之后模型文件、權(quán)重數(shù)值的讀取方式
今天小編就為大家分享一篇Tensorflow 1.0之后模型文件、權(quán)重數(shù)值的讀取方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python結(jié)合turtle簡單開發(fā)一個煙花小工具
這篇文章主要為大家詳細(xì)介紹了Python如何利用turtle模塊實現(xiàn)的簡單的煙花效果展示小工具,文章的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2025-12-12
Python自動化開發(fā)學(xué)習(xí)之三級菜單制作
這篇文章主要為大家詳細(xì)介紹了Python自動化開發(fā)學(xué)習(xí)之三級菜單的制作方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
Python3 條件控制詳解:從基礎(chǔ)語法到高級應(yīng)用詳解
這段文章詳細(xì)介紹了Python3中的條件控制機制,涵蓋了嵌套條件、邏輯運算符、條件表達(dá)式等內(nèi)容,并提供了豐富的代碼示例,感興趣的朋友一起看看吧2026-05-05
python3實現(xiàn)斐波那契數(shù)列(4種方法)
這篇文章主要介紹了python3實現(xiàn)斐波那契數(shù)列(4種方法),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

