Python 标准差教程

2023-10-21

标准差是一种量化数据集中多样性或分散程度的指标。标准差小意味着数据点倾向于接近平均值,而标准差大则表明数据点广泛分散。

在本教程的以下部分中,我们将深入探讨如何使用 Python 计算和理解标准差的更多细节。

 

 

标准差的类型

标准差有两种类型:总体标准差和样本标准差。

The总体标准差当您的数据包括人口的所有成员时使用。它只是计算值与平均值的均方根偏差。

The 样本标准差当您的数据是整个总体的子集或样本时使用。它假设您的数据不包括整个可能数据集。

但样本数据不仅要小,而且要覆盖总体数据的全范围。

假设您的人口数据是[2, 4, 6, 8, 10]。为了覆盖整个范围,您的示例数据可以是以下之一:


[2, 6, 8]
[2, 8, 10]
[2, 8]
[2,10]  

如果你的样本数据覆盖了整个人群,总体标准差将低于或至少等于样本标准差当根据相同的数据集计算时。

如果样本数据没有覆盖全范围的总体数据。这将导致样本数据的标准偏差较低。

因此,根据样本计算的任何统计数据(例如平均值或标准差)可能无法准确反映真实的总体值。

样本数据不良覆盖率示例:


[2, 4]
[2, 4, 6]  

 

手动计算标准差

如果您想了解标准差的底层计算,您应该手动实现它。

标准差的公式是方差的平方根,其中方差是与平均值的偏差平方的平均值。
我们可以这样做:

  1. 计算数据集的平均值。
  2. 对于数据集中的每个数字,减去平均值并计算结果的平方。
  3. 计算这些平方偏差的平均值。
  4. 对步骤 3 的结果求平方根。

让我们使用以下方法来实现math module:


import math
data = [2, 4, 6, 8, 10]

# Step 1: Calculate the mean
mean = sum(data) / len(data)

# Step 2 and 3: Calculate the average of the squared deviations
variance = sum((x - mean) ** 2 for x in data) / len(data)

# Step 4: Calculate the standard deviation
std_dev = math.sqrt(variance)
print("Population Standard Deviation: ", std_dev)
  

Output:


Population Standard Deviation: 2.8284271247461903
  

计算样本标准差与总体标准差略有不同。

计算样本标准差的公式也是方差的平方根,但不是除以数据点的数量(N),我们除以N-1.


import math
data = [2, 8, 10]

# Step 1: Calculate the mean
mean = sum(data) / len(data)

# Step 2 and 3: Calculate the average of the squared deviations
variance = sum((x - mean) ** 2 for x in data) / (len(data) - 1)

# Step 4: Calculate the standard deviation
std_dev = math.sqrt(variance)

print("Sample Standard Deviation: ", std_dev)  

Output:


Sample Standard Deviation: 4.163331998932266  

 

使用statistics.stdev()

Python 标准库的statistics模块提供了方便的功能stdev()计算样本标准差。这是一个例子:


import statistics
data = [2, 8, 10]

# Calculate standard deviation
std_dev = statistics.stdev(data)
print("Standard Deviation: ", std_dev)
  

Output:


Standard Deviation: 4.163331998932265
  

在这个例子中,我们首先导入statistics模块,然后使用它的stdev()计算标准差的函数data list.

结果 (4.16) 表示数据点平均与平均值相差大约 4.16 个单位。
这是为样本计算的标准偏差。如果您正在与全体人群一起工作,请使用statistics.pstdev()反而。

 

使用 stats.pstdev()

使用Python的内置计算总体标准差statistics模块,您可以使用pstdev()功能。

该函数的工作原理类似于stdev(),但它计算标准差时假设所提供的数据代表整个总体。
这是一个例子:


import statistics

# Population data
data = [2, 4, 6, 8, 10]

# Calculate population standard deviation
std_dev = statistics.pstdev(data)
print("Standard Deviation: ", std_dev)
  

Output:


Standard Deviation: 2.8284271247461903
  

在此示例中,我们计算的标准差data using statistics.pstdev()。所得标准差 (2.82)告诉我们,平均而言,每个数据点data大约偏离2.82从平均值。
请记住,当您的数据代表整个总体而不仅仅是样本时,应使用此函数。

 

使用 numpy.std()

The np.std()NumPy 中的函数允许您计算标准差。

该函数用途广泛,不仅可以计算列表或 NumPy 数组的标准差,还可以沿多维数组的指定轴进行计算。
以下是您可以如何使用np.std():


import numpy as np

# Data as a numpy array
data = np.array([2, 4, 6, 8, 10])

# Calculate standard deviation
std_dev = np.std(data)
print("Standard Deviation: ", std_dev)
  

Output:


Standard Deviation: 2.8284271247461903
  

默认情况下,np.std()计算总体标准差。如果您想计算样本标准差,您可以设置ddof(自由度增量)参数1:


# Calculate sample standard deviation
data=np.array([2, 8, 10])
sample_std_dev = np.std(data, ddof=1)
print("Sample Standard Deviation: ", sample_std_dev)
  

Output:


Sample Standard Deviation: 4.163331998932266
  

在这种情况下,标准偏差较大,反映出处理样本时不确定性增加。

 

使用 pandas.DataFrame.std()

The pandas.DataFrame.std()函数旨在逐列处理大型 DataFrame 的标准差计算。
这是一个简单的例子:


import pandas as pd
data = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [2, 4, 6, 8, 10],
    'C': [3, 6, 9, 12, 15]
})

# Calculate standard deviation
std_dev = data.std()
print("Standard Deviation: ")
print(std_dev)
  

Output:


Standard Deviation: 
A    1.581139
B    3.162278
C    4.743416
dtype: float64
  

在这个例子中,pandas.DataFrame.std()计算数据帧中每一列的标准差,并返回包含这些值的新数据帧。

默认情况下,此函数计算样本标准差。

如果要计算总体标准差,可以设置ddof参数为0:


# Calculate population standard deviation
pop_std_dev = data.std(ddof=0)
print("Population Standard Deviation: ")
print(pop_std_dev)
  

Output:


Population Standard Deviation: 
A    1.414214
B    2.828427
C    4.242641
dtype: float64
  

与 NumPy 函数一样,设置ddof to 0计算总体标准差,得到稍小的值。

 

友谊的标准差

这是朋友亚当发来的短信,他现在是一名小投资者。

短信内容如下:“嘿,你能帮我做点什么吗?我一直在涉足一些股票,你能用你的 Python 魔法检查一下我的一只股票在过去 10 天内收盘价的波动情况吗?”

尽管我不是金融专家,但我的 Python 编程技能确实可以提供帮助。

“当然,”我回复道,“只需发送数据即可。”

一分钟后,亚当又弹出一条短信,显示他的股票的收盘价:100、105、102、106、102、107、104、103、105、106。

首先,计算每个时期的回报。对于股票价格,每个时期的简单回报可以计算为(price_now - price_previous) / price_previous.

回报率代表从一个时期到下一时期的价格变化百分比。

然后,计算这些回报的标准差。


import pandas as pd
import numpy as np
prices = pd.Series([100, 105, 102, 106, 102, 107, 104, 103, 105, 106])

# Calculate returns
returns = prices.pct_change()

# Calculate volatility
volatility = np.std(returns, ddof=1)  # ddof=1 for sample standard deviation
print(f"Volatility: {volatility*100:.2f}%")
  

The pct_change()函数计算当前元素与先前元素之间的百分比变化。这np.std()然后函数计算这些回报的标准差。

我们可以达到相同的结果,无需pct_change()功能:


import numpy as np
prices = np.array([100, 105, 102, 106, 102, 107, 104, 103, 105, 106])

# Calculate returns
returns = np.diff(prices) / prices[:-1]

# Calculate volatility
volatility = np.std(returns, ddof=1)
print(f"Volatility: {volatility*100:.2f}%")  

输出为 3.46%,一个简洁的数字代表 Adam 选择的股票的波动性。标准差越高,波动性越高,反之亦然。

我很快给亚当发短信:“完成了。波动率:3.46%。

过了一会儿,我的手机响起了亚当的回复:“你是救星!这真的很有帮助!

 

F.A.Q

问:什么是Python统计模块?

答:Python 统计模块是 Python 中用于数学统计任务的内置库。

它提供了计算样本数据数学统计的函数,例如平均值、中位数、众数、方差和标准差等。

 

问:如何在 Python 中计算列表的标准差?

答:要使用统计模块计算 Python 中列表的标准差,您可以将列表作为参数传递给 stdev() 函数,然后该函数返回列表的标准差。

 

问:如何获取数组的 NumPy 标准差?

答:NumPy 提供了 numpy.std() 函数来计算数组的标准差。

默认情况下,会计算展平数组的标准差,但您也可以指定 axis 参数来计算沿指定轴的标准差。

 

问:标准差小或标准差大是什么意思?

答:较小的标准差表明值接近数据集的平均值,而较大的标准差表明值远离平均值。它反映了数据的分散程度。

 

问:NumPy 标准差函数是否同时计算样本和总体标准差?

答:是的,您可以使用 NumPy 计算样本和总体标准差。默认情况下,numpy.std() 函数计算总体标准差。

要计算样本标准差,您需要将可选参数 ddof(增量自由度)设置为 1。

 

资源

https://en.wikipedia.org/wiki/Standard_deviation

https://docs.python.org/3/library/statistics.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 标准差教程 的相关文章

随机推荐

  • 如何在 Ubuntu 20.04 上安装 Odoo 14

    Odoo 是一款流行的开源商业应用程序套件 可帮助公司管理和运营其业务 它包括广泛的应用程序 例如 CRM 电子商务 网站构建器 计费 会计 制造 仓库 项目管理 库存等等 所有这些都无缝集成 Odoo根据使用案例和可用技术 可以以不同的方
  • Linux 中的 Ping 命令

    The ping命令是最常用的用于故障排除 测试和诊断网络连接问题的工具之一 Ping 的工作原理是向网络上指定的目标 IP 发送一个或多个 ICMP 互联网控制消息协议 回显请求包 并等待回复 当目的地收到数据包时 它会使用 ICMP 回
  • Linux 中的 Gzip 命令

    Gzip 是最流行的压缩算法之一 它允许您减小文件的大小并保留原始文件模式 所有权和时间戳 Gzip 还指 gz文件格式和gzip用于压缩和解压缩文件的实用程序 在本教程中 我们将向您展示如何使用gzip命令 gzip命令语法 的一般语法为
  • 如何在 Debian 10 上安装 Skype

    Skype是世界上最流行的通信应用程序之一 它允许您免费拨打在线音频和视频电话 并以经济实惠的价格拨打全球手机和固定电话 本文介绍如何在 Debian 10 Linux 上安装最新版本的 Skype 在 Debian 上安装 Skype S
  • 如何在 Ubuntu 20.04 上安装 PHP

    PHP 是最常用的服务器端编程语言之一 许多流行的 CMS 和框架 例如 WordPress Magento 和 Laravel 都是用 PHP 编写的 本指南介绍了在 Ubuntu 20 04 上安装 PHP 并将其与 Nginx 和 A
  • 如何在 Ubuntu 中更改用户密码

    定期更新密码并为每个帐户使用唯一的密码始终是个好主意 作为 Ubuntu 中的普通用户 您只能更改自己的密码 root 用户和具有 sudo 权限的用户可以更改其他用户的密码并定义如何使用或更改密码 本教程介绍如何从命令行或通过 Ubunt
  • 如何在 Ubuntu 20.04 上安装 Nginx

    Nginx 发音为 engine x 是一个开源 高性能的 HTTP 和反向代理服务器 负责处理互联网上一些最大站点的负载 它可以用作独立的 Web 服务器 负载均衡器 内容缓存和反向代理适用于 HTTP 和非 HTTP 服务器 与 Apa
  • 如何在 CentOS 7 上安装 Tomcat 9

    Tomcat 是 Java Servlet JavaServer Pages Java 表达式语言和 Java WebSocket 技术的开源实现 本教程介绍了在 CentOS 7 上安装 Tomcat 9 0 所需的步骤 先决条件 您登录
  • 如何使用 nmap 命令

    Nmap 是一款功能强大的网络扫描工具 用于安全审计和渗透测试 它是网络管理员用来解决网络连接问题和解决问题的基本工具之一端口扫描 Nmap还可以检测Mac地址 OS type 服务版本等等 本文介绍了如何使用的基础知识nmap命令来执行各
  • 在 Linux 中安装、配置和保护 FTP 服务器

    FTP或文件传输协议是计算机之间传输文件的常用协议 一个充当客户端 另一个充当服务器 在这篇文章中 我们将讨论 Linux 系统中的 FTP 服务器 特别是 Very Secure FTP Daemon vsftpd vsftpd 程序是当
  • Linux curl 命令:来自 Shell 的 Web 交互

    curl是一个功能强大的命令 可让您将数据传输到服务器或从服务器传输数据 它支持多种协议 并且无需用户交互即可处理各种与网络相关的任务 目录 hide 1 安装卷曲 2 支持的协议 3 URL 通配符
  • Pandas isin 方法:Python 中的高效数据过滤

    The isin中的方法Pandas用于过滤 DataFrame 和 Series 它允许您选择一列 或多列 包含特定值的行 在本教程中 我们将探讨其语法和参数 过滤行的基本用法 使用字典和集合进行查找 处理多个条件等等 目录 hide 1
  • 您每天需要的 20 个主要 Linux 命令

    在上一篇文章中 我们讨论了如何安装Linux 现在 我们要谈谈Linux中最强大的功能 那就是Linux命令或shell命令 有关Linux命令的完整文档 您可以查看Linux 文档 Linux 的强大之处在于您可以使用的命令的强大功能 我
  • 使用 Python 网页抓取克服 pandas.read_html 的限制

    熊猫 read html函数是一个非常有用的工具 用于从网页中快速提取 HTML 表格 它允许您仅用一行代码从 HTML 内容中提取表格数据 然而 read html有一些限制 本教程将指导您应对其中一些挑战 并提供克服这些挑战的解决方案
  • 用于文本处理的 Sed 分组和反向引用

    分组和反向引用是正则表达式中的基本概念 sed为两者提供支持 分组允许您将多个字符视为一个单元 而反向引用允许您引用先前匹配的组 在本教程中 我们将介绍与分组和反向引用相关的各种主题sed 例如捕获组 组内交替等等 目录 hide 1 捕获
  • 使用 Linux jq 命令进行 JSON 操作

    jq 是一个轻量级的命令行 JSON 处理器 可帮助您在使用时过滤 解析和操作这些 JSON 响应RESTful API jq不仅仅是一个简单的解析器 它是一个强大的工具 可以转换 重塑和查询 JSON 数据 本教程将深入探讨jqJSON
  • 使用Python下载文件(简单示例)

    在本教程中 您将学习如何使用不同的 Python 模块从网络下载文件 您将下载常规文件 网页 Amazon S3 和其他源 此外 您还将学习如何克服您可能遇到的许多挑战 例如下载重定向文件 下载大文件 多线程下载和其他策略 目录 hide
  • 超过 15 个在 Linux 中列出用户的示例

    在这篇文章中 您将了解如何在 Linux 中列出用户 除此之外 你还会了解有关Linux用户特征的其他技巧 Linux中有两种类型的用户 系统用户是系统默认创建的 另一方面 还有一些由系统管理员创建的普通用户 可以登录系统并使用系统 目录
  • 使用 sed 进行文本替换:替换命令指南

    文本替换是其最常用的功能之一sed命令 当您需要替换大型文件或输入流中的文本模式实例而无需手动编辑每个实例时 此功能非常有用 文本替换的基本语法sed is sed s search pattern replacement text g f
  • Python 标准差教程

    标准差是一种量化数据集中多样性或分散程度的指标 标准差小意味着数据点倾向于接近平均值 而标准差大则表明数据点广泛分散 在本教程的以下部分中 我们将深入探讨如何使用 Python 计算和理解标准差的更多细节 目录 hide 1 标准差的类型