在 Day 15 的中場戰略盤點中,我們總結了上半場的四大履約瓶頸,
並正式將下半場的方向轉向「用戶價值與商業增長」。
回顧 Day 9,我們曾發現偏遠地區的客單價趨近 高達 200 BRL 以上,而大盤整體客單價也維持在百元水準。
但在人均所得受限、通膨歷史深刻的巴西,消費者面對昂貴的 3C、家電與家具,到底是怎麼痛快結帳的?
答案就是巴西電商獨步全球的文化:極高比例的無息分期付款(Parcelamento)。
今天我們將深入分析第七張關鍵資料表——支付表 (olist_order_payments_dataset),
用資料工程拆解多重支付結構,並驗證「分期付款到底替平台撬動了多少營收槓桿」!
我們首先從資料庫字典中取出 olist_order_payments_dataset:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 1. 從字典取出支付表
payments = olist_db['olist_order_payments_dataset'].copy()
# 2. 檢視前三筆金流紀錄
payments[['order_id', 'payment_sequential', 'payment_type', 'payment_installments', 'payment_value']].head(3)
實作區 :

在進行任何合併或聚合前,資深工程師的防禦性防呆必須立即啟動:一張訂單只會有一筆支付紀錄嗎?
# 檢查 order_id 是否存在重複
split_orders = payments['order_id'].duplicated().sum()
print(f"出現多次支付紀錄的訂單數: {split_orders:,} 筆")
# 觀察單筆訂單的支付次數 (payment_sequential) 分佈
payments['payment_sequential'].value_counts().head(4)
實作區 :
避坑筆記:
這在電商實務中稱為「拆單支付(Split Payments)」——消費者可能先用代金券(Voucher)折抵部分金額,
剩餘款項再刷信用卡;或為了湊額度刷了兩張不同的信用卡。
如果你在未經聚合的情況下直接拿 payments 去 Join 訂單表,資料筆數就會再次無聲無息地膨脹!
在深入分期期數之前,我們先盤點全平台買家的支付偏好結構:
# 依支付管道分組,統計交易筆數與總金額
payment_mix = payments.groupby('payment_type').agg(
txn_count=('payment_value', 'count'),
total_gmv=('payment_value', 'sum')
).reset_index()
# 計算筆數佔比與金額佔比 (%)
payment_mix['txn_share_pct'] = (payment_mix['txn_count'] / payment_mix['txn_count'].sum() * 100).round(2)
payment_mix['gmv_share_pct'] = (payment_mix['total_gmv'] / payment_mix['total_gmv'].sum() * 100).round(2)
# 依營收佔比降冪排序
payment_mix.sort_values(by='total_gmv', ascending=False)
實作區 :

數據背後的商業觀察:
- 信用卡(Credit Card)是絕對營收支柱: 貢獻了全平台 73.9% 的交易次數 與 78.3% 的 GMV。
- 離線繳費(Boleto)不可或缺: 佔據了近 20% 的單量。這是巴西特有的「無卡族」條碼繳費工具,如果平台因為到帳較慢而砍掉 Boleto,相當於直接放棄五分之一的潛在客群。
-簽帳金融卡與代金券(Debit Card & Voucher): 合計僅佔約 3%~4%,屬於邊緣補充管道。
既然信用卡是全平台的營收命脈,我們將焦點鎖定在信用卡交易(payment_type == 'credit_card'),
檢視買家選擇分期的分佈:
# 1. 篩選信用卡支付資料
cc_payments = payments[payments['payment_type'] == 'credit_card'].copy()
# 2. 檢視分期期數佔比
installment_dist = (cc_payments['payment_installments'].value_counts(normalize=True) * 100).round(2)
print("各期數佔比 Top 10 (%):")
print(installment_dist.head(10))
實作區:

雖然約有一半的買家選擇 1 期(一次付清),但另外一半的買家毫不猶豫選擇了分期。
更關鍵的是:分期期數跟「客單價」之間存在什麼關係?
我們以期數分組,計算各期數下的平均交易金額(Mean)與中位數(Median):
# 依分期期數聚合,計算每筆交易的平均金額
installment_metrics = cc_payments.groupby('payment_installments').agg(
order_count=('payment_value', 'count'),
avg_value=('payment_value', 'mean'),
median_value=('payment_value', 'median')
).reset_index()
# 聚焦在電商主流的 1 至 10 期
mainstream_installments = installment_metrics[installment_metrics['payment_installments'].between(1, 10)].copy()
mainstream_installments['avg_value'] = mainstream_installments['avg_value'].round(2)
mainstream_installments['median_value'] = mainstream_installments['median_value'].round(2)
mainstream_installments
實作區 :
當我們將數據轉化為視覺化長條圖時,這條「分期槓桿」的震撼力展露無遺:
plt.style.use('seaborn-v0_8-whitegrid')
plt.figure(figsize=(10, 5))
ax = sns.barplot(
data=mainstream_installments,
x='payment_installments',
y='avg_value',
palette='Blues_d'
)
plt.title('Average Payment Value by Installments (Credit Card)', fontsize=13, fontweight='bold')
plt.xlabel('Number of Installments (Months)')
plt.ylabel('Average Value (BRL)')
# 在長條上方標記平均金額數值
for p in ax.patches:
height = p.get_height()
ax.annotate(f'{height:.0f}',
(p.get_x() + p.get_width() / 2., height),
ha='center', va='bottom', fontsize=9, xytext=(0, 3),
textcoords='offset points')
plt.tight_layout()
plt.show()
實作區 :

核心洞察:
驚人的 4 倍成長槓桿: 選擇 1 期一次付清的訂單,平均客單價僅約 95 BRL;而選擇分 10 期的訂單,平均客單價直接飆升至 415 BRL,整整拉高了 4.3 倍!
高單價成交的必備催化劑: 巴西消費者並非沒有消費高額商品的能力或慾望,而是極度依賴「拉長分期時間」來降低每月的現金流壓力。
戰略結論: 如果平台取消 6 期以上的分期方案,消費者購買大型家電、筆電與辦公家具的意願將會斷崖式崩跌。分期付款不是單純的支付選項,而是支撐高客單價商品營收的核心金融槓桿!
今天我們打通了金流數據與商業槓桿的連鎖關係:
拆解拆單支付: 識別出 order_payments 的一對多結構,掌握主表關聯前的聚合防呆。
鎖定營收大動脈: 證實信用卡貢獻了全平台近 80% 的營收,Boleto 則是無卡族的重要防線。
驗證分期槓桿假說: 透過數據證明分期期數能將客單價拉升逾 4 倍,
為電商高單價品類的促銷方案提供了堅實的數據底氣。
搞懂了買家「如何付錢」,下一個最核心的課題是:「到底是誰在買?誰是全平台最有價值的超級客戶?」
明天 Day 17,我們將正式跨入業界最權威的客戶價值分析模型——經典 RFM 模型實戰(上):計算最近消費日 (R)、消費頻次 (F) 與金額 (M)!