「Python」探索性数据分析——用Python表达EDA的一种快速方法


机器学习的讨论通常围绕算法及其性能:如何提高模型准确性或降低其误差率 , 擅长特征工程或微调超参数 。 但是 , 首先要有一个概念:探索性数据分析或EDA 。
在建立机器学习模型之前 , 就已经有了EDA
这是数据科学的核心方面 , 有时会被忽视 。 要做任何事情的第一步都应该是首先了解您的数据:了解它 , 熟悉它 。 随着您增加数据量 , 此概念变得更加重要
展示数据集在本文中 , 我使用世界银行的经济数据集 , 描述了一些全球关键因素 , 例如GDP , 人口数量 , 地域面积等 。
首先 , 我们需要导入我们需要的库:
import pandas as pdimport numpy as npimport seaborn as snsimport xlrd Pandas , Numpy和Seaborn是EDA练习中的基础需要 。 由于我们使用Excel文件作为数据源 , 因此在这里我们需要安装xlrd库
现在 , 我们导入数据集并查看:
df = pd.read_excel('data.xlsx')df.head()

「Python」探索性数据分析——用Python表达EDA的一种快速方法
本文插图
生成描述性统计信息:
df.describe()

「Python」探索性数据分析——用Python表达EDA的一种快速方法
本文插图
查看数据集结构的快速方法:
df.shape#(215, 10) 检查变量类型:
df.dtypes

「Python」探索性数据分析——用Python表达EDA的一种快速方法
本文插图
它们都是浮点数 , 但国家名称(字符串)除外 。
显示摘要信息:
df.info()

「Python」探索性数据分析——用Python表达EDA的一种快速方法
本文插图
在这里 , 我们看到有些变量具有空值 。
缺失值缺失值可能是由多种原因引起的 , 例如数据输入错误或记录不完整 。 这是非常普遍的现象 , 会对从数据得出的结论产生重大影响 。
上面我们已经看到 , 该示例中的数据集缺少几个值 , 但让我们看看如何测试任何数据集 。
print(df.isnull().values.any())#True 接下来 , 我们需要检查它们的数量:
print(df.isnull().sum().sum())#122 现在 , 让我们再检查一下这些缺失值的摘要信息:
print(df.isnull().sum())

「Python」探索性数据分析——用Python表达EDA的一种快速方法
本文插图
这是.info()函数的另一面 。 处理缺失值有不同的策略 , 而且没有通用的方法 。
我们查看新的数据集:
在这里我们将删除缺失的值 , 并生成新的值 。
df1 = df.copy()df1.dropna(inplace=True)df1.info()

「Python」探索性数据分析——用Python表达EDA的一种快速方法
本文插图
这里我们还剩余188条记录 , 没有空值 。
可视化数据集我们使用Seaborn可视化新数据集:
sns.pairplot(df1)

「Python」探索性数据分析——用Python表达EDA的一种快速方法
本文插图
这样可以快速识别变量之间的异常值 , 聚类和明显的相关性 。
我们再结合变量“gdp”和“population”
sns.scatterplot(x='gdp.cap', y='population', data=http://news.hoteastday.com/a/df1, hue='population')

「Python」探索性数据分析——用Python表达EDA的一种快速方法
本文插图分页标题
右上角有两个明显的异常值 。 与其他数据相比 , 有两个国家的人口水平非常极端 。 可以验证观察分析“population”变量本身:
sns.kdeplot(df1['population'], shade=True, color='orangered')

「Python」探索性数据分析——用Python表达EDA的一种快速方法
本文插图
检测异常值的另一种方法是绘制一些箱形图:
df1.plot(kind='box', subplots=True, layout=(3,3), sharex=False, sharey=False, figsize=(20, 20), color='deeppink')

「Python」探索性数据分析——用Python表达EDA的一种快速方法
本文插图
还可以显示这些变量的密度图并分析其偏斜度:
df1.plot(kind='density', subplots=True, layout=(3,3), sharex=False, figsize=(20, 20))
「Python」探索性数据分析——用Python表达EDA的一种快速方法
本文插图
在这个例子中 , 我故意不处理离群值 , 但是有多种方法可以实现 。
相关性关联变量将为您节省大量的分析时间 , 这是对数据执行任何假设之前的必要步骤 。 相关性只计算数值变量 , 因此了解数据集中的变量类型很重要 。
mask = np.tril(df1.corr())sns.heatmap(df1.corr(), fmt='.1g', annot = True, cmap= 'cool', mask=mask)

「Python」探索性数据分析——用Python表达EDA的一种快速方法
本文插图
我屏蔽了左下角的值 , 以避免重复并提供更清晰的视图 。 右侧的值标度还提供了极值的快速参考指南:您可以轻松地发现变量之间的高低相关性 。 (例如“national income(国民收入)”与“purchasing power(购买力)”具有高度正相关)
结论【「Python」探索性数据分析——用Python表达EDA的一种快速方法】EDA对于理解任何数据集都是至关重要的 。 但是EDA需要做大量准备工作 , 因为现实世界中的数据很少是干净且同质的 。 人们常说 , 数据科学家宝贵的时间中有80%花费在查找、清理和组织数据上 , 而仅剩下20%的时间用于实际执行分析 。