在数据科学领域,区分专业与非专业的关键并非机器学习、深度学习或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()