Python中PDF与CDF分布图的生成与可视化方法

Felix
Felix
发布时间:2026-10-13| 5人浏览过
原创

本文介绍在Python中如何生成概率密度函数(PDF)和累积分布函数(CDF)的可视化图表。通过Matplotlib、NumPy和Seaborn库,演示了直接绘图、数据提取及分布拟合的方法,并提供了将归一化PDF与CDF结合展示的完整代码示例,帮助开发者快速掌握数据分布分析技巧。

数据分布分析概述

获取数据后,首要任务之一是分析数据的分布特征。数据分布通常通过概率密度函数(PDF)和累积分布函数(CDF)两种形式来呈现。

Python生成PDF分布图的方法

接下来介绍利用Python生成PDF分布图的具体方法。

利用Matplotlib库中的hist()函数接口,可以直接绘制出数据的PDF分布直方图。

调用NumPy库中的histogram()函数,可以获取PDF分布的具体数值数据。这种方式便于后续的数据处理,例如基于这些数据进一步生成CDF。

使用Seaborn库的distplot()函数,其优势在于支持对PDF分布进行拟合,从而帮助用户判断数据符合何种分布类型。

上图展示了通过上述三种算法生成的PDF对比图,对应的源代码如下。


from scipy import stats
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

arr = np.random.normal(size=100)

# plot histogram
plt.subplot(221)
plt.hist(arr)

# obtain histogram data
plt.subplot(222)
hist, bin_edges = np.histogram(arr)
plt.plot(hist)

# fit histogram curve
plt.subplot(223)
sns.distplot(arr, kde=False, fit=stats.gamma, rug=True)
plt.show()

Python生成CDF分布图的方法

随后介绍Python中生成CDF分布图的实现方式。

首先使用NumPy的histogram()函数生成PDF分布数据,再通过累加计算得到CDF数据。

利用Seaborn库中的cumfreq()函数,可以直接绘制出CDF曲线。

上图展示了通过两种算法生成的CDF对比图,具体源代码见下。


from scipy import stats
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

arr = np.random.normal(size=100)

plt.subplot(121)
hist, bin_edges = np.histogram(arr)
cdf = np.cumsum(hist)
plt.plot(cdf)

plt.subplot(122)
cdf = stats.cumfreq(arr)
plt.plot(cdf[0])

plt.show()

PDF与CDF归一化组合展示

在实际应用中,往往需要将PDF和CDF置于同一图表中,以更直观地展示数据分布全貌。实现这一需求的关键步骤是对PDF和CDF分别进行归一化处理。

上图展示了经过归一化处理后的PDF与CDF组合图,相关源代码如下。


from scipy import stats
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

arr = np.random.normal(size=100)

hist, bin_edges = np.histogram(arr)
width = (bin_edges[1] - bin_edges[0]) * 0.8
plt.bar(bin_edges[1:], hist/max(hist), width=width, color='#5B9BD5')

cdf = np.cumsum(hist/sum(hist))
plt.plot(bin_edges[1:], cdf, '-*', color='#ED7D31')

plt.xlim([-2, 2])
plt.ylim([0, 1])
plt.grid()

plt.show()

以上就是Python处理PDF与CDF分布图的完整实例分享,希望能为读者提供有价值的参考。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。