查看全课大纲(第 64 / 101 节)
  1. 1.数据分析基本概念
  2. 2.学习数据分析的一般路线
  3. 3.数据分析的流程
  4. 4.数据类型
  5. 5.环境部署(1)
  6. 6.环境部署(2)
  7. 7.课程介绍
  8. 8.TXT文件操作
  9. 9.JSON文件操作
  10. 10.CSV文件操作
  11. 11.Excel文件操作
  12. 12.数据库及SQL常用语法
  13. 13.数据库基本操作
  14. 14.数据库多表连接
  15. 15.实战:欧洲职业足球数据库分析
  16. 16.爬虫简介
  17. 17.URL管理模块
  18. 18.网页下载模块
  19. 19.网页解析模块(1)
  20. 20.网页解析模块(2)
  21. 21.Scrapy简介
  22. 22.Scrapy使用步骤(1)
  23. 23.Scrapy使用步骤(2)
  24. 24.Scrapy使用步骤(3)
  25. 25.Scrapy使用步骤(4)
  26. 26.实战:获取国内城市空气质量指数数据
  27. 27.NumPy和SciPy介绍
  28. 28.多维数组
  29. 29.多维数组操作
  30. 30.NumPy的常用方法
  31. 31.向量化介绍
  32. 32.向量化及通用函数
  33. 33.实战:2016美国大选分析
  34. 34.数据结构-Series
  35. 35.数据结构-DataFrame
  36. 36.数据结构-Index
  37. 37.Series的索引操作
  38. 38.DataFrame的索引操作
  39. 39.索引操作总结
  40. 40.运算与对齐
  41. 41.函数应用操作(1) -- map
  42. 42.函数应用操作 (2) -- apply applymap
  43. 43.文件读写操作
  44. 44.排序操作
  45. 45.数据清洗--处理缺失数据
  46. 46.数据清洗--处理重复数据
  47. 47.数据清洗--替换数据
  48. 48.常用统计方法(1) -- describe quantile
  49. 49.常用统计方法(2) -- sum mean median count
  50. 50.常用统计方法(3) -- max min idxmax idxmin
  51. 51.常用统计方法(4) -- mad var std cumsum
  52. 52.实战:全球食品数据分析
  53. 53.层级索引
  54. 54.分组与聚合介绍
  55. 55.分组操作(1) -- GroupBy对象及常用聚合操作
  56. 56.分组操作(2) -- 自定义分组及聚合操作
  57. 57.透视表介绍
  58. 58.透视表操作
  59. 59.数据规整(1) -- 数据合并concat
  60. 60.数据规整(2) -- 数据连接merge
  61. 61.数据重构(3) -- 数据重构stack unstack
  62. 62.实战:互联网电影资料库分析
  63. 63.探索性数据分析EDA介绍
  64. 64.EDA的目的
  65. 65.EDA常用工具
  66. 66.Matplotlib绘图基本介绍
  67. 67.Matplotlib画布
  68. 68.散点图和柱状图的绘制
  69. 69.直方图的绘制
  70. 70.矩阵绘图
  71. 71.子图的使用
  72. 72.Matplotlib颜色、标记、线型
  73. 73.Matplotlib坐标刻度、标签、图例、标题
  74. 74.Seaborn介绍
  75. 75.数据集分布可视化(1) -- 单变量分布、双变量分布
  76. 76.数据集分布可视化(2) -- 变量关系可视化
  77. 77.类别数据可视化 -- 类别散布图、类别内数据分布、类别内统计图
  78. 78.交互式数据可视化工具Bokeh介绍
  79. 79.Bokeh绘制散点图、柱状图、盒子图、弦图
  80. 80.Bokeh绘制常用图形元素
  81. 81.3D绘图 -- mplot3d
  82. 82.3D曲线可视化
  83. 83.3D散点图可视化
  84. 84.3D柱状图可视化
  85. 85.Pandas绘图
  86. 86.实战:Lending Club借贷数据探索性分析及可视化
  87. 87.机器学习介绍及应用场景
  88. 88.机器学习建模介绍 (1) -- 分类
  89. 89.机器学习建模介绍 (2) -- 回归
  90. 90.机器学习建模介绍 (3) -- 聚类
  91. 91.机器学习分类
  92. 92.机器学习工具scikit-learn
  93. 93.使用scikit-learn的流程
  94. 94.数据集准备及划分
  95. 95.模型选择
  96. 96.数据预处理及特征工程
  97. 97.过拟合与欠拟合
  98. 98.模型调参介绍
  99. 99.模型调参方法
  100. 100.模型测试及评价
  101. 101.实战:通过移动设备行为数据预测性别和年龄

EDA的目的

约 5 分钟

📺 正在播放小象学院官方高清录播(支持倍速与清晰度调节)

小象实战讲义 · Python数据分析实战

在上一节我们了解了什么是探索性数据分析(EDA),这一节我们将深入探讨EDA的目的与价值,以及它与另一种数据分析方法——验证性数据分析(CDA)的区别。理解这些核心概念,能帮助你在面对未知数据时,建立清晰的分析思路,为后续的深入建模打下坚实基础。

💡 核心导读

  • EDA的核心目的:从构建初步认知、提出假设,到为后续分析提供支持。
  • EDA与CDA的对比:探索与验证、自由形式与既定流程的本质区别。
  • 一个生动的比喻:将EDA比作“自由爵士”,CDA比作“古典音乐”,形象理解其方法论差异。

为什么需要EDA?

探索性数据分析(EDA)不仅仅是一个步骤,更是一种分析哲学。它的目的可以归纳为以下几个方面:

  1. 构建初步认知:通过可视化的方法,我们可以快速、直观地对数据的整体分布、趋势、异常值等形成一个初步的印象,这是理解数据的第一步。
  2. 提出假设:在观察数据可视化的过程中,我们可能会发现一些有趣的现象或模式。例如,两个看似无关的变量在图表中显示出同步变化的趋势。EDA帮助我们基于这些观察,提出“它们之间是否存在关联?”这样的假设。
  3. 指导分析方法:有了假设之后,EDA的发现可以帮助我们判断,接下来应该使用哪种统计方法或推断模型来进行更严谨的分析。例如,数据分布的特征会影响我们选择参数检验还是非参数检验。
  4. 支持后续建模:在机器学习项目中,模型的选择至关重要。通过EDA,我们可以了解数据的线性/非线性关系、特征间的相关性、类别是否平衡等,从而为选择适合的机器学习模型(如线性回归、决策树或神经网络)提供决策依据。
  5. 揭示隐藏问题:有些数据中的深层联系或问题,仅凭日常经验难以察觉。经典的“啤酒与尿布”案例就是通过数据分析发现的隐性关联。EDA的可视化工具能帮助我们将这些隐藏的信息浮现出来,从而分析或验证我们提出的问题。
  6. 评估数据质量与充分性:通过可视化,我们可以快速检查数据是否完整、是否存在大量异常值、样本量是否足够等。这为判断当前数据是否足以支撑后续的建模分析提供了基础。

应用场景:通常,当我们面对一个全新的、未知的数据集时,首先进行EDA是标准流程。如果业务方已有明确的假设需要验证,我们可以直接进入验证阶段;但如果双方都对数据背后的规律“摸不到头脑”,那么EDA就是开启探索之旅的最佳工具。

EDA vs CDA:探索与验证

与EDA相对应的一种数据分析方法是验证性数据分析(Confirmatory Data Analysis, CDA)。两者相辅相成,但侧重点截然不同。

特点探索性数据分析 (EDA)验证性数据分析 (CDA)
起点从没有假设开始,保持开放心态。从明确的假设开始,目标清晰。
侧重点探索数据,旨在发现模式、生成新的假设。验证假设,旨在检验已有假设的统计显著性。
主要方法大量使用可视化方法(如图表、图形)进行直观探索。主要使用统计模型和假设检验(如t检验、回归分析)进行严谨论证。
流程形式没有统一、固定的步骤,过程灵活,依赖于分析者的洞察力。有既定的策略和标准方法,流程结构化,可严格复现。

为了更形象地理解,我们可以用一个音乐类比:

  • EDA如同“自由爵士”:演奏没有固定的乐谱,乐手们根据当下的感觉和互动即兴发挥,创造未知的可能性。EDA也是如此,分析师在数据中自由探索,寻找意想不到的发现。
  • CDA如同“古典音乐”:演奏必须严格遵循既定的乐谱和指挥,每一个音符、节奏都有明确的规定,旨在完美呈现作曲家的意图。CDA也是如此,按照预设的统计检验流程,严谨地验证某个特定假设是否成立。

在实践中,一个完整的数据分析项目往往是在EDA和CDA之间迭代循环:先通过EDA发现线索、提出假设,再通过CDA验证假设;根据验证结果,可能又需要回到EDA进行更深入的探索。

通过代码感受EDA的探索性

让我们通过一个简单的模拟数据示例,直观感受EDA如何帮助我们发现数据特征并提出问题。假设我们有两组产品在不同时间点的销量数据。

import matplotlib
matplotlib.use('Agg')  # 无界面后端,保证代码可运行
import matplotlib.pyplot as plt
import numpy as np

# 模拟两组产品随时间变化的销量数据
np.random.seed(42)  # 固定随机种子,确保示例可复现
time_points = np.arange(1, 11)  # 10个时间点
# 产品A:呈现上升趋势
product_a_sales = time_points * 2 + np.random.normal(0, 1.5, size=len(time_points))
# 产品B:销量围绕一个值波动,无明显趋势
product_b_sales = np.random.normal(15, 4, size=len(time_points))

# 创建可视化图表进行探索
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))

# 子图1:折线图,观察趋势
ax1.plot(time_points, product_a_sales, marker='o', label='产品A', color='steelblue')
ax1.plot(time_points, product_b_sales, marker='s', label='产品B', color='coral')
ax1.set_xlabel('时间点')
ax1.set_ylabel('销量')
ax1.set_title('产品销量趋势对比')
ax1.legend()
ax1.grid(True, linestyle='--', alpha=0.7)

# 子图2:箱线图,观察分布与稳定性
# 注:matplotlib 3.9 起 boxplot 的 labels 参数更名为 tick_labels
box_data = [product_a_sales, product_b_sales]
ax2.boxplot(box_data, tick_labels=['产品A', '产品B'])
ax2.set_ylabel('销量')
ax2.set_title('产品销量分布(箱线图)')
ax2.grid(True, linestyle='--', alpha=0.7)

plt.tight_layout()
# 在实际分析中,这里可以使用 plt.show() 或 fig.savefig()
# 为遵守讲义代码纪律(不落盘),我们仅展示逻辑,然后关闭图形
plt.close(fig)
print("已生成包含趋势图和分布对比图的可视化图表。")
已生成包含趋势图和分布对比图的可视化图表。

通过观察上面的图表(虽然代码中未实际显示,但我们可以推演),我们可能提出以下假设:

  1. 产品A的销量随时间增长而增长(折线图显示上升趋势)。
  2. 产品A的销量波动幅度比产品B更大(按代码数据,产品A是沿上升趋势分布、整体跨度约 4→24;产品B围绕 15 上下波动、跨度较小——箱线图上产品A的箱体/触须会更长)。
  3. 产品A销量的稳定性可能优于产品B(产品A的数据点围绕趋势线分布更集中)。

这些基于可视化观察提出的假设,就可以作为下一步CDA(验证性分析)的起点。例如,我们可以使用统计检验来验证产品A的增长趋势是否显著,或者比较两组销量的方差。

📝 动手练一练

  1. 概念辨析:如果你的任务是“验证新广告是否显著提升了某产品的点击率”,你应该主要采用EDA还是CDA的方法?为什么?

    👉 点击查看参考答案

    应该主要采用CDA(验证性数据分析)的方法。因为任务目标非常明确,即“验证新广告是否显著提升了点击率”,这本身就是一个待验证的假设。分析将从该假设出发,通过收集广告上线前后的点击率数据,运用统计假设检验(如A/B测试中的t检验)来严谨地验证该效应是否在统计上显著,这符合CDA有既定假设和验证流程的特点。

  2. 动手实践:修改上面的代码,将product_a_sales的生成方式改为time_points * 1.5 + np.random.normal(5, 2, size=len(time_points)),然后重新运行代码。根据新的数据,你认为产品A的增长趋势是变强了还是变弱了?其销量的波动性(稳定性)如何变化?

    👉 点击查看参考答案

    增长趋势的斜率从2降到了1.5,因此增长趋势变弱了。同时,随机波动的标准差从1.5增加到了2,并且整体基线抬高了5个单位,这意味着数据点围绕趋势线的离散程度增大,因此销量的波动性变大,稳定性变差。

本章小结

本节我们深入探讨了探索性数据分析(EDA)的多元目的,并明确了其与验证性数据分析(CDA)的定位差异。记住,EDA是你打开数据黑箱的第一把钥匙,它用可视化照亮未知,激发问题;而CDA则是严谨的法官,用统计模型检验真相。两者结合,构成了从发现到确信的完整数据分析闭环。

📋 行动清单

  • 理解并复述:尝试向他人解释EDA的至少三个核心目的。
  • 方法匹配:面对一个分析任务时,能有意识地区分当前阶段更适合采用EDA(探索)还是CDA(验证)的思路。
  • 实践观察:在下次自己绘制数据图表时,不仅仅是为了出图,而是有意识地思考:我从这个图中能提出什么假设?

—— 小象教研组

配套资料 · 直接下载

课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。

  • 本节课件:EDA的目的
    PDF · 397KB
    下载
  • 全套课件打包(第1-5章)
    ZIP · 12.8MB
    下载
  • 全套课件打包(第6-8章)
    ZIP · 15MB
    下载
  • 实战数据集:AppleStore 应用商城分析
    ZIP · 329KB
    下载
  • 实战数据集:女性服装电商分析
    ZIP · 2.8MB
    下载
  • Python 数据分析环境搭建指南
    PDF · 2MB
    下载
  • Scrapy 安装教程
    PDF · 12.7MB
    下载
  • 附加实战项目:AppleStore 应用商城数据分析
    ZIP · 0.3MB · ipynb + CSV 数据
    下载
  • 附加实战项目:银行电话营销数据分析
    ZIP · 0.4MB · ipynb + CSV 数据
    下载
  • 附加实战项目:女性服装电商评论数据分析
    ZIP · 2.7MB · ipynb + CSV 数据
    下载
  • 附加实战项目:美国化学学会杂志数据分析
    ZIP · 34.2MB · ipynb + SQLite 数据库
    下载