Python数据可视化正态分布简单分析及实现代码

本篇文档将介绍如何使用Python对正态分布数据进行可视化分析。

正态分布的基础知识

正态分布是一种连续的概率分布,也被称为高斯分布。正态分布在自然界中十分常见,比如身高、体重、智商、测量误差等等都服从正态分布。正态分布的概率密度函数为:

$$
f(x)=\dfrac{1}{\sigma\sqrt{2\pi}}e^{-\dfrac{(x-\mu)^2}{2\sigma^2}}
$$

其中$\mu$为均值,$\sigma$为标准差。

数据可视化

要对正态分布进行数据可视化,我们可以使用在Python中常用的两个可视化库:Matplotlib和Seaborn。

Matplotlib实现

使用Matplotlib可视化正态分布分为以下几步:

  1. 生成正态分布样本数据;
  2. 计算概率密度函数值;
  3. 使用Matplotlib绘制直方图和概率密度函数曲线。

下面是一个简单的例子:

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

np.random.seed(1)
mu = 0
sigma = 1
x = np.random.normal(mu, sigma, 1000)

plt.hist(x, bins=50, density=1, alpha=0.5, color='g')
xmin, xmax = plt.xlim()
x_range = np.linspace(xmin, xmax, 100)
p = np.exp(-(x_range-mu)**2 /(2 * sigma**2))/(sigma*np.sqrt(2*np.pi))
plt.plot(x_range, p, color='r', linewidth=2)
plt.title('Normal distribution', fontsize=18)
plt.xlabel('Value', fontsize=16)
plt.ylabel('Probability density', fontsize=16)
plt.show()

该例子生成了一个均值为0,标准差为1的正态分布的样本数据,然后使用Matplotlib绘制了该分布的直方图和概率密度函数曲线。

Seaborn实现

Seaborn库在Matplotlib的基础上进一步封装了一些高级数据可视化功能。

要使用Seaborn可视化正态分布,我们可以直接使用Seaborn提供的distplot函数,该函数可以同时绘制直方图和概率密度函数曲线,具体方式如下:

import seaborn as sns
sns.set()

np.random.seed(1)
mu = 0
sigma = 1
x = np.random.normal(mu, sigma, 1000)

sns.distplot(x, bins=50, kde=True, hist_kws={'alpha':0.5, 'color':'g'}, kde_kws={'color':'r', 'linewidth':2})
plt.title('Normal distribution', fontsize=18)
plt.xlabel('Value', fontsize=16)
plt.ylabel('Probability density', fontsize=16)
plt.show()

该例子同样生成了一个均值为0,标准差为1的正态分布样本数据,并使用Seaborn的distplot函数绘制了该分布的直方图和概率密度函数曲线。

示例说明

下面我们再给出两个具体的示例说明。

示例1:观察随机抽样和样本量的影响

np.random.seed(1)
mu = 0
sigma = 1

x1 = np.random.normal(mu, sigma, 100)
x2 = np.random.normal(mu, sigma, 10000)

fig, axs = plt.subplots(1, 2, figsize=(12, 4))

sns.distplot(x1, ax=axs[0], bins=20, kde=True, hist_kws={'alpha':0.5, 'color':'g'}, kde_kws={'color':'r', 'linewidth':2})
sns.distplot(x2, ax=axs[1], bins=50, kde=True, hist_kws={'alpha':0.5, 'color':'g'}, kde_kws={'color':'r', 'linewidth':2})

axs[0].set_title('n=100', fontsize=16)
axs[0].set_xlabel('Value', fontsize=14)
axs[0].set_ylabel('Probability density', fontsize=14)

axs[1].set_title('n=10000', fontsize=16)
axs[1].set_xlabel('Value', fontsize=14)
axs[1].set_ylabel('Probability density', fontsize=14)

plt.show()

该示例展示了随机抽样和样本量对正态分布的影响。通过生成两个样本量不同的样本数据,我们可以看到当样本量较小时,分布的波动较大,而当样本量增大时,分布的形态变得较为稳定。

示例2:比较不同参数的正态分布

np.random.seed(1)
mu1, mu2, mu3 = -2, 0, 2
sigma1, sigma2, sigma3 = 0.5, 1, 2

x1 = np.random.normal(mu1, sigma1, 10000)
x2 = np.random.normal(mu2, sigma2, 10000)
x3 = np.random.normal(mu3, sigma3, 10000)

fig, axs = plt.subplots(1, 3, figsize=(16, 4))

sns.distplot(x1, ax=axs[0], bins=50, kde=True, hist_kws={'alpha':0.5, 'color':'g'}, kde_kws={'color':'r', 'linewidth':2})
sns.distplot(x2, ax=axs[1], bins=50, kde=True, hist_kws={'alpha':0.5, 'color':'g'}, kde_kws={'color':'r', 'linewidth':2})
sns.distplot(x3, ax=axs[2], bins=50, kde=True, hist_kws={'alpha':0.5, 'color':'g'}, kde_kws={'color':'r', 'linewidth':2})

axs[0].set_title('$\mu=-2,\sigma=0.5$', fontsize=16)
axs[0].set_xlabel('Value', fontsize=14)
axs[0].set_ylabel('Probability density', fontsize=14)

axs[1].set_title('$\mu=0,\sigma=1$', fontsize=16)
axs[1].set_xlabel('Value', fontsize=14)
axs[1].set_ylabel('Probability density', fontsize=14)

axs[2].set_title('$\mu=2,\sigma=2$', fontsize=16)
axs[2].set_xlabel('Value', fontsize=14)
axs[2].set_ylabel('Probability density', fontsize=14)

plt.show()

该示例展示了不同参数的正态分布。通过可视化比较了均值和标准差不同的三个正态分布,我们可以清晰地看到这些参数的变化,对分布形态的影响。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python数据可视化正态分布简单分析及实现代码 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • python进程池中的回调函数

    什么是回调函数 指定一个任务后、并且指定一个回调函数后,当指定的进程池执行的任务结束后,会将该任务的返回值作为回调函数的参数传递到回调函数中,并且回调函数得以执行 回调函数在主进程中被执行 import os from multiprocessing import Pool def func1(n): print(‘in func1’, os.getpid(…

    python 2023年4月17日
    00
  • win8安装python环境和pip、easy_install工具

    下面是win8安装python环境和pip、easy_install工具的完整攻略: 安装Python环境 下载Python 访问 Python官网,下载最新版的Python 3.x安装文件。 运行安装程序 运行下载好的Python安装程序,根据提示进行安装。 在环境变量中添加Python路径 安装完成后,将Python所在路径添加到环境变量中。打开控制面板…

    python 2023年5月14日
    00
  • Python实现的txt文件去重功能示例

    下面是 “Python实现的txt文件去重功能示例”的完整攻略: 什么是Python实现txt文件去重? Python实现的txt文件去重是指通过编写Python脚本,实现对文本文件中重复的行进行去除的功能。 实现步骤 步骤一:读取文件内容 首先,需要打开需要去重的txt文件,并读取其内容。可以使用open函数来打开文件,并将文件内容存储在一个列表中。 wi…

    python 2023年6月5日
    00
  • python使用tkinter模块实现文件选择功能

    下面就是使用 Python 的 tkinter 模块实现文件选择功能的完整攻略。 一、Tkinter 的介绍 Tkinter 是 Python 中最常用的 GUI 工具包,其提供了一组面向对象的 Python 绑定,可以让程序员在 Python 中使用 Tcl/Tk 的 GUI 能力。Tkinter 相对于其他 Python GUI 工具包有着广泛的口碑和期…

    python 2023年6月13日
    00
  • 使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例

    在本攻略中,我们将介绍如何使用BeautifulSoup爬虫程序获取百度搜索结果的标题和URL。以下是一个完整攻略,包括两个示例。 步骤1:安装必要的库 首先,需要安装必要的库。我们将使用requests库来发送HTTP请求,并使用BeautifulSoup库来解析HTML页面。 以下是一个示例代码,演示如何使用pip安装requests和Beautiful…

    python 2023年5月15日
    00
  • python操作手机app的实现步骤

    要实现Python操作手机App的功能,需要按以下步骤进行: 安装Appium及其依赖 Appium是一个用于自动化移动应用程序测试的工具,支持iOS和Android平台。为了使用Python操作手机App,需要在电脑上安装Appium及其相关依赖。具体步骤可以参考Appium官方文档。 连接手机并开启USB调试 在操作手机App之前,必须将手机连接到电脑,…

    python 2023年6月2日
    00
  • python抓取网站的图片并下载到本地的方法

    让我来详细讲解一下“Python抓取网站的图片并下载到本地的方法”的完整攻略。 步骤一:导入依赖库 我们需要导入requests、os和re三个依赖库,确保能够正常进行HTTP请求、保存图片文件和正则匹配字符串: import requests import os import re 步骤二:定位图片链接 将要抓取的图片所在的页面URL,使用requests…

    python 2023年6月3日
    00
  • Python numpy中np.random.seed()的详细用法实例

    关于Python numpy中np.random.seed()的用法,我有以下详细的攻略。 1. 什么是np.random.seed() np.random.seed()是用于重现随机样本的numpy函数。在数据分析中,我们通常需要生成随机样本来模拟数据或者用于模型的训练,而每次运行代码时,随机样本都会发生变化,这可能会导致结果不一致。为了解决这个问题,可以…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部