探索性数据分析(EDA)入门指南

数据科学领域,区分专业与非专业的关键并非机器学习、深度学习或SQL,而是探索性数据分析(EDA)。EDA是分析数据集、总结其主要特征的方法,通常使用统计图表和其他数据可视化技术。本文将带了解EDA的基本概念、步骤以及如何使用Python进行实际操作。

什么是探索性数据分析

探索性数据分析是一种分析方法,它通过统计图表和其他数据可视化手段来总结数据集的主要特征。EDA对数据科学专业人士的帮助主要体现在以下几个方面:

  • 更好地理解数据
  • 识别数据中的各种模式
  • 更好地理解问题陈述

[注:本文中使用的数据集是鸢尾花数据集]

检查数据的初步细节

在加载数据文件后,任何数据分析的首要步骤应该是检查一些初步细节,例如列数、行数、特征类型(分类或数值)、列条目的数据类型。以下是一些Python代码片段,用于展示如何进行这些初步检查:

data.head() # 显示前五行数据 data.tail() # 显示后五行数据

统计洞察

这一步应该执行以获取有关各种统计数据的详细信息,如平均值、标准差、中位数、最大值和最小值。以下是Python代码片段,用于展示如何获取这些统计信息:

data.describe()

数据清洗

这是EDA中最重要的步骤,涉及删除重复的行/列、用数据的平均值/中位数填充空白条目、删除各种值、移除空条目。以下是一些Python代码片段,用于展示如何进行数据清洗

data.isnull().sum() # 显示每个变量的缺失值数量 data.dropna(axis=0, inplace=True) # 如果有空条目,则移除 data["sepal_length"].fillna(value=data["sepal_length"].mean(), inplace=True) # 如果有数值特征的空条目,则用平均值填充 data.duplicated().sum() # 返回重复条目的总数 data.drop_duplicates(inplace=True) # 移除重复条目 # 散点图 plt.figure(figsize=(17,9)) plt.title('基于花瓣长度和宽度对不同物种的比较') sns.scatterplot(data['sepal_length'], data['sepal_width'], hue=data['species'], s=50) # 多变量分析 sns.pairplot(data, hue="species", height=4) # 箱线图 fig, axes = plt.subplots(2, 2, figsize=(16,9)) sns.boxplot(y="petal_width", x="species", data=iris_data, orient='v', ax=axes[0, 0]) sns.boxplot(y="petal_length", x="species", data=iris_data, orient='v', ax=axes[0, 1]) sns.boxplot(y="sepal_length", x="species", data=iris_data, orient='v', ax=axes[1, 0]) sns.boxplot(y="sepal_width", x="species", data=iris_data, orient='v', ax=axes[1, 1]) plt.show() # 小提琴图 fig, axes = plt.subplots(2, 2, figsize=(16,10)) sns.violinplot(y="petal_width", x="species", data=iris_data, orient='v', ax=axes[0, 0], inner='quartile') sns.violinplot(y="petal_length", x="species", data=iris_data, orient='v', ax=axes[0, 1], inner='quartile') sns.violinplot(y="sepal_length", x="species", data=iris_data, orient='v', ax=axes[1, 0], inner='quartile') sns.violinplot(y="sepal_width", x="species", data=iris_data, orient='v', ax=axes[1, 1], inner='quartile') plt.show() # 直方图 sns.FacetGrid(iris_data, hue="species", height=5).map(sns.distplot, "petal_width").add_legend()
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485