引力波数据探索:编程与分析实战训练营

第 2 部分 基于 Python 的数据分析基础

主讲老师:王赫

2023/12/07 & 2023/12/10

ICTP-AP, UCAS

数据分析可视化之 Matplotlib / Seaborn

关于上一讲的学员反馈

# Response
  • 授课主要面向的是国科大以引力波数据处理为主要研究方向的研究生和高年级本科生。
  • 不管“包学包会”,但会尽可能弥补和完善听课体验和授课内容。
  • (上次选做作业的问题)windows在搭载gpu的容器构建中碰到问题是nvidia的相关工具是仅在linux上搭载的,为此必须装wsl2,装完,整体搭载完之后碰到问题是是否需要在容器内再安装docker,(因为nvidia教程中包含docker命令)但是这有种双层嵌套的感觉,像是在wsl2中的container中的container
     
  • 能否别一节课时间太长,因为课业压力确实很重,只能分段学习……
  • 数据化思维与数据可视化
  • 数据可视化:目的与原则
  • 数据可视化:模式与对象
  • 数据可视化:常用工具
  • 数据可视化:基本处理流程

数据分析可视化理论基础

# Data Visualization

什么是数据可视化?

  • 往年的双十一展示用大屏的数据可视化系统实时监控,通过这些数据对网站进行优化、对用户群体进行基本的分析等。

图片来源于网络

  • 数据可视化,是关于数据视觉表现形式的科学技术研究。其中,这种数据的视觉表现形式被定义为,一种以某种概要形式抽提出来的信息,包括相应信息单位的各种属性和变量。

  • 它是一个处于不断演变之中的概念,其边界在不断地扩大。主要指的是技术上较为高级的技术方法,而这些技术方法允许利用图形、图像处理、计算机视觉以及用户界面,通过表达、建模以及对立体、表面、属性以及动画的显示,对数据加以可视化解释。与立体建模之类的特殊技术方法相比,数据可视化所涵盖的技术方法要广泛得多。

# Data Visualization

什么是数据可视化?

  • 数据可视化 的巨大需求,带动了诸多领域应用

  • 几乎所有涉及 Data 这个行业的岗位招聘,都会或多或少的涉及到 Data VIsualization 能力的需求,甚至有不少是招专门的数据可视化分析师(Data Visualization Analyst)

工业界

学术界

工商管理

  • 工业界: 以高效性、建设性方式的讨论结果,理解运营管理与业务性能之间的关系,提供直接有效的决策依据。

  • 学术界: 在庞大繁杂的资源环境中,有目的的挖掘数据背后的特征信息,揭示不同思考角度下的潜在客观规律。

# Data Visualization

数据化思维的重要性

  • 数据化思维是指根据数据来思考事物的一种思维模式,是一种量化的、重视事实、追求真理的思维模式。

2 3 4 5 6 7
Batch 1 10 40 50 20 10 50
Batch 2 30 60 70 50 40 30

数据

结论

数据分析

数据

结论

数据分析

数据可视化

# Data Visualization

数据化思维与数据可视化

  • 以高效性、建设性方式的讨论结果,理解运营管理与业务性能之间的关系,提供直接有效的决策依据

  • 在庞大繁杂的资源环境中,有目的的挖掘数据背后的特征信息,揭示不同思考角度下的潜在客观规律

Data source: World Bank World development indicators Note: The graph shows the correlation of national per capita energy consumption and per capita GDP.
The size of the bubbles denotes total population per country. All values refer to the year 2011.

数据可视化的不同境界

  • Level 1  有强烈的用可视化技术去呈现分析结果的欲望

  • Level 2  针对具体的问题能够快速确定可视化实施方案

  • Level 3  养成一种能用图说清楚的事绝不用文字的习惯

  • Level 4  有意识地提升可视化结果的审美和自解释属性

# Data Visualization

数据可视化:目的与原则

  • 比较两个数据的大小 (可以很直观的做比较,可视化建立起数据和人之间的桥梁)

  • 校验两组数据的差异 (比如看两组数据是否来自同一个分布,数据可视化可以帮到你!)

  • 统计随机变量的分布 (如分位数、3σ区间等统计量的可视化,可以不言自明的获得信息!)

解释数据 + 信息传递

压缩信息 + 突出观点

数据

# Data Visualization
  • 比较两个数据的大小 (可以很直观的做比较,可视化建立起数据和人之间的桥梁)

  • 校验两组数据的差异 (比如看两组数据是否来自同一个分布,数据可视化可以帮到你!)

  • 统计随机变量的分布 (如分位数、3σ区间等统计量的可视化,可以不言自明的获得信息!)

解释数据 + 信息传递

压缩信息 + 突出观点

数据可视化:目的与原则

设计

数据

Simpler is almost always better!

高效的表达 = 清晰的思路 = 有价值的工作

  • 尽量用低维度表达

  • 要避免视觉噪声(标记、注释、颜色)切忌喧宾夺主!

  • 确保各个元素清晰

# Data Visualization
  • 比较两个数据的大小 (可以很直观的做比较,可视化建立起数据和人之间的桥梁)

  • 校验两组数据的差异 (比如看两组数据是否来自同一个分布,数据可视化可以帮到你!)

  • 统计随机变量的分布 (如分位数、3σ区间等统计量的可视化,可以不言自明的获得信息!)

解释数据 + 信息传递

压缩信息 + 突出观点

G. Agazie et al., “The NANOGrav 15 yr data set: Evidence for a gravitational-wave background,” Astrophys. J., Lett. 951, L8 (2023).

Stochastic gravitational-wave background from metastable cosmic strings - Buchmuller, Wilfried et al - arXiv:2107.04578 CERN-TH-2021-107DESY 21-101

Lommen, A. Pulsar timing for gravitational wave detection. Nat Astron 1, 809–811 (2017).

数据可视化:目的与原则

设计

数据

# Data Visualization
  • 一般来说,数据可视化的表现形式(模式),有三种:交互式、交互呈现式和呈现式。

    • 呈现式:用于展示/讲述,服务于群体(本课程的内容)

    • 交互式:用于引导/发现,服务于个体

数据可视化:模式与对象

表现形式

# Data Visualization
  • 一般来说,数据可视化的表现形式(模式),有三种:交互式、交互呈现式和呈现式。

    • 呈现式:用于展示/讲述,服务于群体(本课程的内容)

    • 交互式:用于引导/发现,服务于个体

数据可视化:模式与对象

表现形式

# Data Visualization
  • 一般来说,数据可视化的数据(对象)有三类概念:(本课程的重点

    • 定量数据(Quantitative):连续、离散

    • 定类数据(Categorical):城市、品类等

    • 定序数据(Ordinal):尺码、态度等

数据可视化:模式与对象

数据类型

表现形式

Tips

  • 面对某一列特征,心中要先掂量一下:
    • 这是离散的?连续的?
    • 然后再掂量是不是定序的?
# Data Visualization
  • 定量数据(Quantitative)    

    位置 > 长度/角度 > 面积 > 体积 > 密度 > 颜色

    上述为优选关系,体现了低维度优选的原则。
     

  • 定序数据(Ordinal)    

    位置 > 密度 > 颜色 > 连接 > 包含

    其中的密度可以通过疏密程度来体现;
    颜色主要是通过深浅体现,避免视觉噪声
    连接可以用箭头等从属关系来体现有序性。
     

  • 定类数据(Categorical)
       
    位置 > 颜色 > 连接 > 包含 > 形状

    表现类之间的关系,确保元素清晰

数据可视化:模式与对象

数据类型

表现形式

Munzner T. Visualization analysis and design[M]. CRC press, 2014.

# Data Visualization
  • 定量数据(Quantitative)    

    位置 > 长度/角度 > 面积 > 体积 > 密度 > 颜色

    上述为优选关系,体现了低维度优选的原则。
     

  • 定序数据(Ordinal)    

    位置 > 密度 > 颜色 > 连接 > 包含

    其中的密度可以通过疏密程度来体现;
    颜色主要是通过深浅体现,避免视觉噪声
    连接可以用箭头等从属关系来体现有序性。
     

  • 定类数据(Categorical)
       
    位置 > 颜色 > 连接 > 包含 > 形状

    表现类之间的关系,确保元素清晰

数据可视化:模式与对象

数据类型

表现形式

Bad examples

# Data Visualization
  • 基于编程语言

    • RSutdio, Matploblib, Seaborn, Bokeh, Plotly, Streamlit, Gradio, ...

  • 不基于编程语言

    • Plotly, Tableau, Icharts, QlikView, FineBI, Power BI, Infogram, RAW Graphs, ...

数据可视化:常见工具

Matplotlib

Seaborn

Plotly

  • 本课程是基于 Python 编程语言,讲解开源免费的数据可视化工具。

    • Matplotlib:满足基本的需求 (用的好可以满足所有的需求,就是用起来太麻烦)

    • Seaborn:满足颜控的需求 (非常漂亮!非常容易!)

    • Bokeh:满足交互呈现的需求

    • Plotly:强大的在线交互可视化框架

    • Streamlit:专注于机器学习和数据科学团队的用户交互可视化 app

# Data Visualization

数据可视化:常见工具

Plotly

Tableau

  • 基于编程语言

    • RSutdio, Matploblib, Seaborn, Bokeh, Plotly, Streamlit, Gradio, ...

  • 不基于编程语言

    • Plotly, Tableau, Icharts, QlikView, FineBI, Power BI, Infogram, RAW Graphs, ...

  • 本课程是基于 Python 编程语言,讲解开源免费的数据可视化工具。

    • Matplotlib:满足基本的需求 (用的好可以满足所有的需求,就是用起来太麻烦)

    • Seaborn:满足颜控的需求 (非常漂亮!非常容易!)

    • Bokeh:满足交互呈现的需求

    • Plotly:强大的在线交互可视化框架

    • Streamlit:专注于机器学习和数据科学团队的用户交互可视化 app

  • 数据可视化:基本处理流程
    • 数据准备
    • 确定图表
    • 分析迭代
    • 输出结论

数据分析可视化之 Matplotlib

# Data Visualization

数据可视化:基本处理流程

  1. 数据准备

    • 数据规模:数据分组、数据采样(处理大数据时尤为需要)

    • 数据类型:数值数据、分类数据(一定要对数据结构特别清楚:连续?离散?有序吗?)

    • 数据异常:取值异常、数据缺失(通常应对的是数据爬虫等采集后的原始数据)

# Data Visualization

数据可视化:基本处理流程

  1. 数据准备

  2. 确定图表。数据可视化里通常面临的三类问题:
    • 关联分析、定量数值比较:散点图曲线图(scatter,plot)

    • 分布分析(定量数据:粗粒度 / 细粒度):灰度图,密度图(hist,gaussian_kde,plot)

    • 分类分析(关于定序 / 定类数据):柱状图箱式图(bar,boxplot)

# Data Visualization

数据可视化:基本处理流程

  1. 数据准备

  2. 确定图表

  3. 分析迭代
    • 确定拟合模型:OLS, fit OLS = 最小二乘;fit = 拟合
    • 分析拟合性能:summary_table 统计学汇总
    • 确定数据分布:hist
    • 确定重点区间:quartile 分布的上下四分位数,以及各分位数之间的区间

分析迭代的要素,不仅依赖于数据本身,也依赖于的分析角度

# Data Visualization

数据可视化:基本处理流程

  1. 数据准备

  2. 确定图表

  3. 分析迭代
    • 箱型图 Boxplot:观察分布的对称性和偏性
# Data Visualization

数据可视化:基本处理流程

  1. 数据准备

  2. 确定图表

  3. 分析迭代
    • 箱型图 Boxplot:观察分布的对称性和偏性
    • 箱型图的局限性:压缩信息的代价。。。
      • 提琴图

Red violin plots: reconstructed amplitude of the first overtones of GW150914 for different estimates of the waveform peak time. Blue violin plots: amplitudes inferred by injecting a GW150914-like signal in different noise realizations at those same starting times. (Phys. Rev. Lett. 129, 111102)

# Data Visualization

数据可视化:基本处理流程

  1. 数据准备

  2. 确定图表

  3. 分析迭代

  4. 输出结论
    • 养成看图说话的好习惯
    • 提出一个好问题,画出一个好图像,给出一个好结论

Data source: World Bank World development indicators Note: The graph shows the correlation of national per capita energy consumption and per capita GDP.
The size of the bubbles denotes total population per country. All values refer to the year 2011.

Intensified global competition for resources?



Global demand vs GDP per person

# Data Visualization

数据可视化:思维方式

问题导向

  • 了解数据来源的背景或数据应用场景,以问题为导向的探索性分析思路,以得到鲜明的观点和分析结果为目标。

方法导向

  • 熟悉可视化工具,在方法论层面上充分积累,更多的是注重工具本身,以实现经过精心设计可视化呈现为目标。

图片来源:CrossHands - AhongPlus

# Data Visualization

数据可视化:思维方式

马世权老师在「乐见数据:商业数据可视化思维」里提出,一个成功的商业数据可视化要满足两要素:

  • 提供足够的商业价值

  • 帮助读者快速理解信息

那什么是好的商业数据可视化图表?

  • 答案:符合 GLAD 原则的图表

图片来源于网络

恰如其分地表达科学观点

帮助读者快速理解观点

G. Agazie et al., “The NANOGrav 15 yr data set: Evidence for a gravitational-wave background,” Astrophys. J., Lett. 951, L8 (2023).

Stochastic gravitational-wave background from metastable cosmic strings - Buchmuller, Wilfried et al - arXiv:2107.04578 CERN-TH-2021-107DESY 21-101

# Data Visualization

数据可视化:思维方式

GLAD 原则:

  • MECE: Mutually Exclusive, Collectively Exhaustive.即,相互独立,完全穷尽,不重叠,不遗漏,是麦肯锡在金字塔原理中提出的思维原则。
  • 如果能在解决问题、沟通问题、撰写报告时熟练运用该原则,能够让自己的逻辑更清晰、考虑问题更全面,也更容易让人记忆和理解。

如类别和度量使用是否恰当

  • 类别的不恰当使用:
    • 类别不符合 MECE 原则:有重复、有遗漏
    • 分类不均匀
  • 度量指标的不恰当使用:
    • 绝对值指标与相对值指标混淆
    • 时间段指标与时间点指标混淆

图片来源于网络

# Data Visualization

数据可视化:思维方式

GLAD 原则:

如类别和度量使用是否恰当

  • 类别的不恰当使用:
    • 类别不符合 MECE 原则:有重复、有遗漏
    • 分类不均匀
  • 度量指标的不恰当使用:
    • 绝对值指标与相对值指标混淆
    • 时间段指标与时间点指标混淆
  • 下图这里使用绝对值——采购量指标来统计,回答的问题是整体采购量的变化如何。但是无法直接回答采购工作质量如何,是变好还是变差呢? 使用相对值百分比统计指标来监控问题的占比更恰当。
# Data Visualization

数据可视化:思维方式

GLAD 原则:

如类别和度量使用是否恰当

  • 类别的不恰当使用:
    • 类别不符合 MECE 原则:有重复、有遗漏
    • 分类不均匀
  • 度量指标的不恰当使用:
    • 绝对值指标与相对值指标混淆
    • 时间段指标与时间点指标混淆
  • 在职人数为时间点指标,离职人数为时间段指标,时间段指标与时间点指标混淆不清。这时可以将时间度量统一,都修改为时间段指标。
# Data Visualization

数据可视化:思维方式

GLAD 原则:

描述性分析 < 诊断/预测性分析 < 指导性分析

  1. 描述型:观察当前数据发生了什么?
  2. 诊断型:理解为什么会发生?
  3. 预测型:预测未来会发生什么?
  4. 指导型:怎样达到更好地商业决策 (例子)
  • 在探索性数据分析领域,一般将数据分析划分为四类:描述型、诊断型、预测型和指导型。
  • 这就像医生的工作内容一样: 描述型分析是体检,先客观地检查身体健康指标情况,判断是否偏离正常值范围并陈述观点; 诊断型分析即通过进一步的询问和信息挖掘诊断出问题是什么,病根在哪里; 预测型分析即结合对病人的了解分析病情目前处于哪个阶段,预测病情会怎样发展; 指导型分析即最后开出针对性的药方和治疗建议。
# Data Visualization

数据可视化:思维方式

GLAD 原则:

描述性分析 < 诊断/预测性分析 < 指导性分析

  1. 描述型:观察当前数据发生了什么?
  2. 诊断型:理解为什么会发生?
  3. 预测型:预测未来会发生什么?
  4. 指导型:怎样达到更好地商业决策
  • 在探索性数据分析领域,一般将数据分析划分为四类:描述型、诊断型、预测型和指导型。
  • 这就像医生的工作内容一样: 描述型分析是体检,先客观地检查身体健康指标情况,判断是否偏离正常值范围并陈述观点; 诊断型分析即通过进一步的询问和信息挖掘诊断出问题是什么,病根在哪里; 预测型分析即结合对病人的了解分析病情目前处于哪个阶段,预测病情会怎样发展; 指导型分析即最后开出针对性的药方和治疗建议。
# Data Visualization

数据可视化:思维方式

GLAD 原则:

描述性分析 < 诊断/预测性分析 < 指导性分析

  1. 描述型:观察当前数据发生了什么?
  2. 诊断型:理解为什么会发生?
  3. 预测型:预测未来会发生什么?
  4. 指导型:怎样达到更好地商业决策
  • 在探索性数据分析领域,一般将数据分析划分为四类:描述型、诊断型、预测型和指导型。
  • 这就像医生的工作内容一样: 描述型分析是体检,先客观地检查身体健康指标情况,判断是否偏离正常值范围并陈述观点; 诊断型分析即通过进一步的询问和信息挖掘诊断出问题是什么,病根在哪里; 预测型分析即结合对病人的了解分析病情目前处于哪个阶段,预测病情会怎样发展; 指导型分析即最后开出针对性的药方和治疗建议。
# Data Visualization

数据可视化:思维方式

GLAD 原则:

确保图表中的颜色用于传递特定的信息,如果不是或有其他方式能够更有效地传递该信息,那就避免使用颜色。

  • 任意或无意义地使用颜色,极大程度上会对用户造成噪音干扰。如下图所示: 加入太多的颜色,其实并没有额外的意义,所以保持一种颜色即可,
# Data Visualization

数据可视化:思维方式

GLAD 原则:

当对象与信息标注分隔较远的话,用户需要花较多的时间让视线来回切换,不利于信息快速获取。

  • 例如,图例和数据序列相距较远的话,用户在解读数据时需要辛苦地在图例和数据之间来回切换,如下图: 解决方案之一就是直接标记各种数据,利用格式塔临近原则,减少受众在图例和数据之间的来回切换。
# Data Visualization

数据可视化:思维方式

GLAD 原则:

选择图形元素要准确。

# Data Visualization

数据可视化:思维方式

GLAD 原则:

数据的密度是指单位面积图表中所包含的数据量。 图表所能承载的数据量是有限的:

  • 过低会造成图表的丰富度不够, 没有回答读者的问题。
  • 过高会导致负载过重, 读者无法理解图表要传达的信息。

一张图表的数据密度 = 类别的数量 + 度量指标的数量

  • 很多人为了压缩展示的空间和精简图表,会使用组合图把很多信息拼到一起,但是这样的话数据过于集中,会导致读者无法一下子得到信息要点。如上图:
    • 类别:流动量、离职人数、离职率、流动率
    • 度量:人数、百分比
  • 这样这张图表的数据密度 = 4 + 2 = 6 这个时候,比如我们看离职率或者流失率就看不出趋势。 对于这个图表我们可以做降维处理,拆分为两个组合图,每个组合图的数据密度降低到 3 ,如右侧两个图。
# Data Visualization

数据可视化:思维方式

GLAD 原则:

选择合适的图表类型和把控数据密度属于粗调,在最后的展示前还需要对显示效果的细节做精调,否则也可能导致数据与事实的偏离。

  • 调节可视化准确度的工作就像拧螺丝一样,选用合适口径的螺丝,把螺丝放到孔中,先用手快速旋转到一定紧度,再使用螺丝刀一步步拧紧固定,粗调和精调并用。
  • 选择合适的图表类型和把控数据密度属于粗调,在最后的展示前还需要对显示效果的细节做精调,否则也可能导致数据与事实的偏离。
  • 这里折线图很难看出趋势的变化,因为离职率最大的月份只有 3.9%,而纵坐标轴的最大刻度为50%,这样趋势就被压平了,建议将纵坐标轴的最大刻度调整小一些。
# Data Visualization

数据可视化:思维方式

GLAD 原则:

现代心理学把颜色、形状等能快速引起心理反应的信号统称为「前注意属性」,它们在我们的潜意识中活动,只需要 0.25 秒就可以作出识别。

  • 这些「前注意属性」主要包括以下几种: 我们需要把通过数据比较得到的差异部分、体现洞察信息的内容利用明显不同的颜色、形状、文字标注等手段进行区别,让读者的视线聚焦到那里去。
# Data Visualization

数据可视化:思维方式

GLAD 原则:

打造视觉反差:我们可以利用颜色、形状、线的粗细用来打造视觉差异。

举几个例子(你第一眼被什么吸睛了?):

  • 这些「前注意属性」主要包括以下几种: 我们需要把通过数据比较得到的差异部分、体现洞察信息的内容利用明显不同的颜色、形状、文字标注等手段进行区别,让读者的视线聚焦到那里去。
# Data Visualization

数据可视化:思维方式

GLAD 原则:

还可以绘制神奇的线:水平线、趋势线、划分区间...

举几个例子(你第一眼被什么吸睛了?):

  • 这些「前注意属性」主要包括以下几种: 我们需要把通过数据比较得到的差异部分、体现洞察信息的内容利用明显不同的颜色、形状、文字标注等手段进行区别,让读者的视线聚焦到那里去。
# Data Visualization

数据可视化:思维方式

GLAD 原则:

添加文字:文字在数据沟通中能起到以下作用:标签、简介、解释、强调、突出、推荐和讲故事。

举几个例子(你第一眼被什么吸睛了?):

  • 这些「前注意属性」主要包括以下几种: 我们需要把通过数据比较得到的差异部分、体现洞察信息的内容利用明显不同的颜色、形状、文字标注等手段进行区别,让读者的视线聚焦到那里去。

数据分析可视化之 Seaborn

  • 风格管理
  • 颜色管理
  • 皮尔森系数
# Homework

Homework

  1. 航班乘客变化分析 (2个题)​​​​​
    
  2. 鸢尾花花型尺寸分析 (3个题)
  3. 餐厅小费情况分析 (7个题)
  4. 泰坦尼克号海难幸存状况分析 (8个题)

 

  • 基础作业:
    • 数据可视化作业题目位于 2023/python/homework-matplotlib_seaborn.ipynb,用 matplotlib 或 seaborn 完成题目后,把该 notebook 提交到学员自己的作业目录中,最后 PR 即可。
  • 拓展作业:
    • 分别用 matplotlib 和 seaborn 完成基础作业。

第 2 部分 基于 Python 的数据分析基础(数据分析可视化之 Matplotlib / Seaborn)

By He Wang

第 2 部分 基于 Python 的数据分析基础(数据分析可视化之 Matplotlib / Seaborn)

引力波数据探索:编程与分析实战训练营。课程网址:https://github.com/iphysresearch/GWData-Bootcamp

  • 253