
从数据到洞察:探索性数据分析新手之旅
图片来自:Editor | Ideogram
每个行业都利用数据来做出更明智的决策。但原始数据可能混乱且难以理解。EDA 使您能够更好地探索和理解您的数据。在本文中,我们将通过简单的步骤和示例向您介绍 EDA 的基础知识,使其易于理解。
什么是探索性数据分析?
探索性数据分析 (EDA) 是在创建模型之前检查数据的过程。它有助于您发现模式并发现缺失的信息。EDA 为您提供有关如何清理和准备数据的见解。这确保数据已准备好进行更深入的分析和更好的预测。
探索性数据分析 (EDA) 的目标如下:
- 理解数据结构:清晰了解数据的组织方式以及存在的数据类型。
- 识别模式:寻找可能对构建模型有用的趋势或模式。
- 检测缺失或异常值数据:查找任何可能影响模型性能的缺失或异常数据点。
- 生成初步假设:提出关于数据的假设,这些假设稍后可以在建模过程中进行测试。
- 汇总关键特征:使用统计数据或可视化来汇总数据的重要方面。
- 指导特征工程:利用 EDA 的见解来决定如何创建或转换特征以提高模型性能。
探索性数据分析涉及的步骤
理解数据
从理解数据集开始。加载数据并检查其结构。查看变量的类型和整体布局。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 加载数据集 df = pd.read_csv('data.csv') # 显示数据集的前几行 print("数据集的前几行:") print(df.head()) # 检查数据集的结构 print("\n数据集的结构:") print(df.info()) |
数据清洗
数据清理可确保您的数据准确且可用。此步骤包括:
- 处理缺失值:识别并解决任何缺失值,通过填充或删除它们。
- 删除重复项:删除任何重复的行以防止冗余。
1 2 3 4 5 6 7 8 9 10 11 |
# 检查缺失值 print(df.isnull().sum()) # 删除包含缺失值的行 df = df.dropna() # 删除重复的行 df = df.drop_duplicates() # 显示更新后的数据集 print(df.head()) |
数据转换
转换数据有助于准备进行分析。此步骤包括:
- 编码分类变量:将分类数据转换为数值格式,以便更好地进行分析。
- 特征缩放:调整特征范围以确保统一性。
1 2 3 4 5 6 7 8 9 10 11 |
from sklearn.preprocessing import LabelEncoder, StandardScaler # 对分类变量进行独热编码 df = pd.get_dummies(df, columns=['Department'], drop_first=True) # 对数值特征进行标准化 scaler = StandardScaler() df[['Salary', 'Age']] = scaler.fit_transform(df[['Salary', 'Age']]) # 显示更新后的数据集 print(df.head()) |
统计摘要
汇总数据可帮助您快速了解其主要特征并发现重要趋势。使用以下方法获取清晰的概览:
- 描述性统计:计算平均值、中位数、标准差和四分位数等基本统计数据,以了解数值数据的中心趋势和分布。
- 相关矩阵:评估数值变量之间的关系,以查看它们如何相互关联。
- 计数:计算分类列中唯一值的出现次数,以了解类别的分布。
1 2 |
# 数值列的描述性统计 print(df.describe()) |
单变量分析
单变量分析一次只查看数据的一个特征。它有助于您了解每个特征的分布和关键特征。此分析对于快速了解每个特征的特性很有用。常用技术包括:
- 摘要统计:显示数值特征的基本信息,如平均值、中位数和范围。
- 直方图:通过显示不同值的出现频率来可视化数值数据的分布。
- 箱线图:显示数值数据的分布情况并突出显示异常值。
- 条形图:显示分类特征中不同类别的频率。
例如,您可以使用直方图分析 Salary 的分布。
1 2 3 4 5 6 |
# 'Salary' 列的直方图,用于检查分布 plt.hist(df['Salary'], bins=10, color='skyblue') plt.title('Salary Distribution') plt.xlabel('Salary') plt.ylabel('频率') plt.show() |
双变量分析
双变量分析检查数据中两个特征之间的关系。它有助于您了解两个变量如何相互作用以及它们是否相关。一些技术包括:
- 散点图:通过将一个特征与另一个特征绘制来显示两个数值特征如何相关。
- 相关系数:衡量两个数值特征之间关系的强度和方向。
- 交叉制表:通过显示类别组合的计数来显示两个分类变量之间的关系。
- 分组条形图:比较不同组的分类特征的频率。
例如,您可以使用散点图来检查 Age 和 Salary 之间的关系。
1 2 3 4 5 6 |
# 用于检查 'Age' 和 'Salary' 之间关系的散点图 plt.scatter(df['Age'], df['Salary'], color='green') plt.title('Age vs Salary') plt.xlabel('Age') plt.ylabel('Salary') plt.show() |
多变量分析
多变量分析同时考察三个或更多特征之间的关系。它有助于您理解数据中的复杂交互和模式。技术包括:
- 成对图:显示每个特征对的散点图,以显示关系和交互。
- 主成分分析 (PCA):通过将特征组合成更少的新特征来减少特征数量,同时保留重要信息。
- 相关矩阵:以网格格式显示所有数值特征对之间的关系。
- 热图:使用颜色显示多个特征之间关系的强度。
例如,您可以使用相关矩阵分析 Age、Salary 和 Bonus% 等数值变量之间的关系。
1 2 3 4 5 6 |
# 数值变量(Age、Salary、Bonus%)之间的相关矩阵 plt.figure(figsize=(8,6)) corr_matrix = df[['Age', 'Salary', 'Bonus %']].corr() sns.heatmap(corr_matrix, annot=True, cmap='coolwarm') plt.title('Correlation Matrix of Age, Salary, and Bonus%') plt.show() |
有效 EDA 的实用技巧
以下是一些您应该遵循的成功 EDA 的实用技巧:
- 制定计划:确定您想从数据中学习什么。这可以使您的分析保持条理和重点。
- 检查数据质量:通过修复缺失值、重复项和错误来确保数据干净。干净的数据可带来更准确的结果。
- 记录发现:写下您发现的内容。这有助于您跟踪并与他人分享您的见解。
- 寻求见解:专注于寻找有助于下一步的有用信息。EDA 的目标是为进一步分析奠定坚实的基础。
结论
探索性数据分析 (EDA) 是理解数据的关键步骤。它有助于您发现模式、检测异常值和检查数据质量。通过清理、转换和可视化,您可以获得有价值的见解。清晰地沟通这些见解很重要。使用摘要、视觉效果和建议来分享您的发现。随着您的进步,您可以探索高级 EDA 技术。
暂无评论。