探索性数据分析(EDA)是数据科学和机器学习过程中的关键组成部分。通过探索数据,理解变量之间的关系以及数据的底层结构,能够基于这些信息构建可靠和有价值的输出。本文将通过Python编程语言,指导完成EDA的各个阶段。
本文将进行客户流失预测。当客户停止与公司合作时,这种现象被称为客户流失或客户流失。由于获取新客户的成本通常高于保留现有客户,因此理解客户流失对公司的成功至关重要。因此,流失分析是更好地了解客户的第一个步骤。
首先,需要导入分析所需的所有库,包括用于数据处理的Pandas、用于数值计算的Numpy,以及用于可视化的Matplotlib和Seaborn。
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns
现在,将数据集加载到Pandas DataFrame中。
df = pd.read_csv('path_to_dataset.csv')
这是EDA的第一部分,评估DataFrame的结构、列和数据类型。此步骤的目标是对数据集有一个大致的了解。
输出结果为:
df.head()
输出结果为:
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)