从Kaggle数据集到业务策略:如何用Python分析电信客户流失并制定精准留存方案

张开发
2026/4/17 23:38:10 15 分钟阅读

分享文章

从Kaggle数据集到业务策略:如何用Python分析电信客户流失并制定精准留存方案
从Kaggle数据集到业务策略如何用Python分析电信客户流失并制定精准留存方案电信行业正面临前所未有的客户流失挑战。根据行业研究获取一个新客户的成本是保留现有客户的5-25倍。当一位业务负责人拿到客户流失分析报告时他们最关心的往往不是复杂的算法细节而是两个核心问题哪些客户最可能流失我们具体该做什么本文将带你用Python从Kaggle的Telco Customer Churn数据集出发直达可落地的商业策略。1. 数据准备与特征工程在开始建模前我们需要对原始数据进行彻底清洗和转换。Telco Customer Churn数据集包含7043条客户记录21个特征变量。首先检查数据质量import pandas as pd import numpy as np # 加载数据 df pd.read_csv(WA_Fn-UseC_-Telco-Customer-Churn.csv) # 检查缺失值 print(缺失值统计:\n, df.isnull().sum()) # 检查数据类型 print(\n数据类型:\n, df.dtypes)关键发现TotalCharges列有11个空值显示为空格TotalCharges数据类型应为float64而非object无重复记录处理数据问题的策略将TotalCharges转换为数值类型用中位数填充缺失值因数据呈偏态分布对分类变量进行编码转换# 转换数据类型并填充缺失值 df[TotalCharges] pd.to_numeric(df[TotalCharges], errorscoerce) df[TotalCharges].fillna(df[TotalCharges].median(), inplaceTrue) # 分类变量编码 from sklearn.preprocessing import LabelEncoder cat_cols df.select_dtypes(include[object]).columns.drop(customerID) for col in cat_cols: df[col] LabelEncoder().fit_transform(df[col])2. 关键流失特征识别通过统计分析和机器学习相结合的方式我们能够识别最具预测力的流失特征。以下是特征重要性的分析流程2.1 统计分析初步筛选使用卡方检验和方差分析筛选与流失显著相关的特征特征P值相关性Contract0.001高OnlineSecurity0.001高TechSupport0.001高InternetService0.001高PaymentMethod0.001高gender0.48无2.2 机器学习特征重要性使用随机森林模型获取特征重要性排序from sklearn.ensemble import RandomForestClassifier # 准备特征和目标变量 X df.drop([customerID, Churn], axis1) y df[Churn] # 训练随机森林模型 rf RandomForestClassifier(n_estimators100, random_state42) rf.fit(X, y) # 获取特征重要性 importances rf.feature_importances_ indices np.argsort(importances)[::-1] # 打印特征重要性 print(特征重要性排序:) for f in range(X.shape[1]): print(f{X.columns[indices[f]]}: {importances[indices[f]]:.4f})Top 5流失特征MonthlyCharges (18.4%)tenure (17.2%)TotalCharges (15.9%)Contract (14.7%)PaymentMethod (5.0%)3. 高流失客户画像基于特征分析我们可以构建高流失风险客户的典型画像核心特征组合月消费71-118美元区间合约类型按月签约(Month-to-month)服务时长1-5个月的新客户支付方式电子支票(Electronic check)增值服务未开通在线安全和技术支持# 高流失风险客户筛选条件 high_risk df[ (df[MonthlyCharges] 71) (df[MonthlyCharges] 118) (df[Contract] 0) # Month-to-month (df[tenure] 5) (df[PaymentMethod] 2) # Electronic check ] print(f高流失风险客户占比: {len(high_risk)/len(df):.1%})4. 精准留存策略设计基于上述分析我们设计了一套分层干预策略4.1 优先级策略针对Top3特征1. 月费优化方案月费区间干预措施预期效果$71-90升级套餐赠送3个月流媒体服务提升粘性15-20%$91-118年付折扣(8.5折)锁定客户流失率降低30%2. 合约类型转换# 计算不同合约类型的流失率 contract_churn df.groupby(Contract)[Churn].mean() print(各合约类型流失率:\n, contract_churn)实施策略推出合约升级奖励计划按月合约客户转年合约可获得首月免单免费技术支持服务优先客服通道3. 新客户关怀计划针对服务时长1-5个月的客户30天满意度回访专属客户经理使用满3个月赠送增值服务4.2 次级策略其他重要特征支付方式优化电子支票用户自动续费奖励银行转账/信用卡支付额外积分增值服务捆绑# 计算增值服务与流失的关系 services [OnlineSecurity, TechSupport] for service in services: churn_rate df.groupby(service)[Churn].mean() print(f\n{service}流失率:\n, churn_rate)实施建议将基础套餐与1-2项增值服务捆绑提供30天增值服务免费试用5. 策略效果评估框架为确保干预措施的有效性需要建立科学的评估体系核心指标流失率变化客户生命周期价值(LTV)提升干预成本ROIA/B测试设计组别样本量干预措施监测指标对照组30%无特别干预自然流失率测试组135%月费优化方案套餐升级率测试组235%合约转换奖励合约升级率# 模拟A/B测试结果分析 import numpy as np from scipy import stats # 生成模拟数据 np.random.seed(42) control np.random.normal(0.25, 0.05, 1000) treatment np.random.normal(0.18, 0.05, 1000) # 计算p值 t_stat, p_val stats.ttest_ind(control, treatment) print(f干预效果显著性(p值): {p_val:.4f})策略迭代机制每月评估各策略效果淘汰ROI1的干预措施对有效策略进行优化放大在实际业务场景中这些策略需要与CRM系统深度整合实现自动化标签和精准触达。例如当系统检测到某客户同时满足月费$85按月签约新客户时自动触发专属优惠推送。通过这种数据驱动的留存策略电信运营商可以在不显著增加成本的情况下将客户流失率降低20-30%显著提升客户生命周期价值和整体盈利能力。关键在于持续监测和迭代优化形成分析-干预-评估的良性循环。

更多文章