在本次分析中,将深入探讨电信行业的客户流失问题。通过完整的探索性数据分析(EDA)过程,将识别影响客户流失的关键因素,并从数据可视化和分析中提取有价值的见解。
使用的是Kaggle上的一个样本数据集。样本数据集是从总体数据集中随机抽取的,包含了已经离开电信公司的客户信息。
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.ticker as mtick
import matplotlib.pyplot as plt
%matplotlib inline
telecom = pd.read_csv('WA_Fn-UseC_-Telco-Customer-Churn.csv')
使用head函数查看数据集的前几条记录,可以得知数据集的形状,即记录数和列数。例如,数据集可能有1200行和13列。
telecom.columns.values
输出的列名包括客户ID、性别、是否为老年人、是否有伴侣、是否有受抚养人等,共计21个字段。
telecom.dtypes
通过检查数据集的类型,可以了解数据集中包含的数据类型,例如数值型、分类型等。
telecom.describe()
描述性统计提供了数据集的均值、标准差等统计信息。例如,发现老年人客户的比例、平均月费用等信息。
telecom['Churn'].value_counts().plot(kind='barh', figsize=(8, 6))
通过绘制条形图,可以直观地看到目标变量“Churn”(流失)的类别分布。
telecom.info(verbose = True)
这将返回数据集的详细信息,包括每列的非空值数量、数据类型等。
在数据清洗阶段,首先复制电信数据以进行进一步处理。然后,将“TotalCharges”列转换为数值类型,并处理缺失值。
telco_data = telecom.copy()
telco_data.TotalCharges = pd.to_numeric(telco_data.TotalCharges, errors='coerce')
由于“TotalCharges”列中存在大量缺失值,可以选择删除这些缺失值,或者用其他方法填充。
在数据探索阶段,对数据集进行单变量分析,绘制每个预测变量的计数图,并根据“Churn”进行着色。
for i, predictor in enumerate(telco_data.drop(columns=['Churn', 'TotalCharges', 'MonthlyCharges'])):
plt.figure(i)
sns.countplot(data=telco_data, x=predictor, hue='Churn')