探索性数据分析(EDA)在客户流失预测中的应用

探索性数据分析EDA)是数据科学和机器学习过程中的关键组成部分。通过探索数据,理解变量之间的关系以及数据的底层结构,能够基于这些信息构建可靠和有价值的输出。本文将通过Python编程语言,指导完成EDA的各个阶段。

数据集介绍

本文将进行客户流失预测。当客户停止与公司合作时,这种现象被称为客户流失或客户流失。由于获取新客户的成本通常高于保留现有客户,因此理解客户流失对公司的成功至关重要。因此,流失分析是更好地了解客户的第一个步骤。

导入Python

首先,需要导入分析所需的所有库,包括用于数据处理的Pandas、用于数值计算的Numpy,以及用于可视化的Matplotlib和Seaborn。

import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns

加载数据集到Python

现在,将数据集加载到Pandas DataFrame中。

df = pd.read_csv('path_to_dataset.csv')

基于结构的数据探索

这是EDA的第一部分,评估DataFrame的结构、列和数据类型。此步骤的目标是对数据集有一个大致的了解。

显示前5个观测值

输出结果为:

df.head()

显示最后5个观测值

输出结果为:

df.tail()

显示变量数量和观测值数量

使用df.shape可以得到输出,它是一个包含两个值的元组。第一个值计算数据点的数量,第二个值代表数据集中的特征数量。在这个DataFrame中,有7043行和21列。

df.shape

显示变量名称及其数据类型

计算每个变量的非缺失值数量,df.count()计算非空值的数量。它给出了数据集中缺失值的概念。

df.count()

描述性统计

现在,为了更了解数据集的特征,将使用df.describe(),它默认提供了DataFrame中所有数值特征的统计信息。df.describe()提供了一些基本的统计细节,如计数、百分位数、均值、标准差以及五点摘要,包括最小值、第一四分位数、第二四分位数、第三四分位数和数值特征的最大值。

df.describe()

分类特征如何处理?

通过提供include参数并将其值设置为‘all’,可以得到所有分类特征的摘要。

df.describe(include='all')

显示数据集的完整摘要

df.info()提供了DataFrame的摘要,包括数据类型、形状和内存存储。

df.info()

处理缺失值

缺失值是数据集中的未知值。理解缺失值的概念对于成功管理数据至关重要。第一步是检测数据集中的缺失值,然后使用适当的方法处理它们。

检测缺失值

使用error='coerce'将所有非数值值替换为NaN。isnull().sum()返回数据集中缺失值的数量。在‘Total Charges’列中有11个缺失值。现在,将看到不同的处理方法。

df.isnull().sum()

缺失值处理

处理缺失值,可以使用以下方法:删除变量、删除观测值、均值填充或中位数填充或众数填充。对于‘Total Charges’变量,只有11个值缺失。由于这些数据记录与总数据集相比相对较低,可以删除它们。

df.dropna(subset=['Total Charges'], inplace=True)

使用图表进行分析

现在,是时候可视化数据了。可以通过数据可视化看到数据的外观以及数据属性之间的关系。这是检查特征是否反映输出的最快方法。

目标变量

让可视化目标变量,即流失。它有两个类别——是或否。

sns.countplot(x='Churn', data=df)

分类变量

数据集中有17个分类特征。让看看它们与目标变量的流失率。

# 这里只展示了5个认为更重要的图表

月费与总费用之间的关系

总费用是月费的总和。那么,让可视化它们之间的关系。

sns.scatterplot(x='Monthly Charges', y='Total Charges', data=df)

客户合同分布

试图可视化与合同相关的流失率。大约75%的月度合同客户选择离开,相比之下,一年合同的客户为13%,两年合同的客户为3%。

sns.countplot(x='Contract', hue='Churn', data=df)

支付方式分布

这是支付方式的可视化。它有四个类别。电子支票的用户最多。

sns.countplot(x='Payment Method', data=df)

受抚养人分布

这个图表显示了与受抚养人相关的流失率。没有受抚养人的客户更有可能流失。

sns.countplot(x='Dependents', hue='Churn', data=df) sns.countplot(x='Partners', hue='Churn', data=df)
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485