探索性数据分析(EDA)

主题3:探索性数据分析(EDA)

探索性数据分析(Exploratory Data Analysis,EDA)是数据科学中非常重要的一个步骤,其目的是通过可视化和统计学方法来了解数据的基本特征,找出数据中的规律、趋势、异常值以及变量之间的关系。EDA通常在数据清洗后进行,是数据分析过程的前奏,为后续的建模和分析提供了必要的背景信息。

EDA 的核心任务包括:数据摘要、数据分布的可视化、变量之间关系的探索、异常值与缺失值的检查等。


1. 数据摘要与概述

在进行 EDA 时,我们首先需要对数据集进行初步的了解,获取数据的基本信息和统计量。这一步是所有后续分析的基础。

1.1 查看数据维度与列信息

使用 shapeinfo() 方法查看数据集的维度、列类型以及缺失值等信息。

方法 功能 返回值类型 示例代码
shape 获取数据的维度(行数,列数) 元组 (行数, 列数) df.shape
info() 获取数据的基本信息(列名,类型,缺失值等) 打印输出(无返回值) df.info()

示例:

print(df.shape)  # 输出数据的维度
df.info()  # 输出数据的列信息,包括每列的类型和缺失值情况
1.2 查看数据的前几行与后几行

查看数据的前几行或后几行,帮助我们快速了解数据的基本结构与样本内容。

方法 功能 返回值类型 示例代码
head(n) 查看前 n 行数据 DataFrame df.head(5)
tail(n) 查看后 n 行数据 DataFrame df.tail(5)

示例:

print(df.head(5))  # 查看数据的前5行
print(df.tail(5))  # 查看数据的后5行
1.3 数据类型与描述性统计量

获取每个数值型特征的描述性统计信息,如均值、标准差、最小值、四分位数和最大值等。

方法 功能 返回值类型 示例代码
describe() 获取数据的描述性统计量 DataFrame df.describe()
mean() 获取列的均值 单个数值 df['A'].mean()
std() 获取列的标准差 单个数值 df['A'].std()

示例:

df.describe()  # 获取数据的描述性统计量
print(df['A'].mean())  # 获取 A 列的均值

2. 数据分布可视化

数据分布的可视化能够帮助我们理解数据的整体特性、偏态情况以及是否符合某些统计假设。常见的可视化方法有直方图、箱型图等。

2.1 直方图

直方图用于显示单个变量的分布情况,可以帮助我们识别变量的偏态、峰度以及是否存在异常值。

方法 功能 参数 返回值
hist() 绘制单变量的直方图 bins=数量 绘制的直方图

示例:

import matplotlib.pyplot as plt
df['A'].hist(bins=30)  # 绘制 A 列的直方图
plt.show()  # 显示直方图
2.2 箱型图

箱型图能够展示数据的分布、中心位置、离散程度及异常值,适用于检查数据的对称性与异常值。

方法 功能 参数 返回值
boxplot() 绘制箱型图 vert=False 绘制的箱型图

示例:

df.boxplot(column='A')  # 绘制 A 列的箱型图
plt.show()  # 显示箱型图
2.3 密度图

密度图可以直观地显示数据的概率分布,比直方图更平滑,适合查看变量的分布情况。

方法 功能 参数 返回值
plot(kind='density') 绘制密度图 kind='density' 绘制的密度图

示例:

df['A'].plot(kind='density')  # 绘制 A 列的密度图
plt.show()  # 显示密度图

3. 变量之间的关系探索

探索变量之间的关系对于理解数据中的潜在模式和趋势至关重要。常见的分析方法有散点图、相关系数等。

3.1 散点图

散点图适用于展示两个数值型变量之间的关系,帮助我们识别变量之间的线性关系、非线性关系或无关关系。

方法 功能 参数 返回值
scatter() 绘制散点图 x, y(x, y 为列名) 绘制的散点图

示例:

df.plot.scatter(x='A', y='B')  # 绘制 A 列与 B 列的散点图
plt.show()  # 显示散点图
3.2 相关系数矩阵

相关系数矩阵是一个用于衡量变量之间相关性的表格,常用的相关系数有皮尔逊相关系数、斯皮尔曼等级相关系数等。

方法 功能 参数 返回值
corr() 计算数值型变量的相关系数矩阵 method='pearson' 相关系数矩阵

示例:

correlation_matrix = df.corr()  # 计算相关系数矩阵
print(correlation_matrix)
3.3 热力图

热力图可以直观地展示相关系数矩阵,通过颜色的深浅反映变量之间的相关性。

方法 功能 参数 返回值
heatmap() 绘制热力图 annot=True 绘制的热力图

示例:

import seaborn as sns
sns.heatmap(df.corr(), annot=True)  # 绘制相关系数的热力图
plt.show()  # 显示热力图

4. 缺失值与异常值可视化

在 EDA 过程中,缺失值与异常值的可视化能够帮助我们直观地发现数据中的问题,进一步制定清洗策略。

4.1 缺失值可视化

使用 missingno 库可以对缺失值进行可视化,帮助我们了解缺失值的模式。

方法 功能 参数 返回值
missingno.matrix() 可视化缺失值模式 figsize=(10, 6) 缺失值矩阵图

示例:

import missingno as msno
msno.matrix(df)  # 绘制缺失值矩阵图
plt.show()  # 显示图形
4.2 异常值可视化

可以使用箱型图或点图来直观展示数据中的异常值。

方法 功能 参数 返回值
boxplot() 绘制箱型图 vert=False 绘制的箱型图

示例:

```python df.boxplot(column=’A’) # 绘制 A 列的箱型图,查看异常值

版权声明: 如无特别声明,本文版权归 sshipanoo 所有,转载请注明本文链接。

(采用 CC BY-NC-SA 4.0 许可协议进行授权)

本文标题:《 Python探索性数据分析(EDA) 》

本文链接:http://0.0.0.0:3015/ai/Python%E6%8E%A2%E7%B4%A2%E6%80%A7%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90.html

本文最后一次更新为 天前,文章中的某些内容可能已过时!