Python之数据分析(中位数、波动范围、极差、离差、方差、标准差)

2023-05-16

文章目录

      • 一、中位数
      • 二、波动范围与极差
      • 三、离差、方差与标准差

一、中位数

1、中位数
将多个样本按照大小顺序排列,居于中间位置的元素为中位数

2、经典求法
1)A:样本集

2)L:样本数

3)M = (A[(L-1)/2] + A[L/2]) / 2

4、Numpy求法
1)对数组进行排序:np.msort(数组)

2)求中位数:M = numpy.median(数组)

5、练习

import numpy as np

# 导入数据
highest_prices, lowest_prices, closing_prices = np.loadtxt(
    '0=数据源/beer_price.csv', delimiter=',',
    usecols=(2, 3, 4),unpack=True
)

# 收盘价的中位数(手动求法)
sorted_prices = np.msort(closing_prices)
L = sorted_prices.size
# 运用公式M = (A[(L-1)/2] + A[L/2]) / 2
M1 = (sorted_prices[int((L-1)/2)] + sorted_prices[int(L/2)]) /2
print(M1)


# 用Numpy的median来求收盘价的中位数
M2 = np.median(closing_prices)
print(M2)

二、波动范围与极差

1、价格波动范围 = 最高的最高价 - 最低的最低价
range = a.max() - b.min()

2、极差 = 一个数组的最大值 - 该数组的最小值

  • 经典求法:ptp = a.max() - a.min()
  • Numpy求法:numpy.ptp()

3、练习

import numpy as np

# 导入数据
highest_prices, lowest_prices, closing_prices = np.loadtxt(
    '0=数据源/beer_price.csv', delimiter=',',
    usecols=(2, 3, 4),unpack=True
)

# 价格波动范围
range = highest_prices.max() - lowest_prices.min()
print(range)

# 极差
ptp1 = highest_prices.max() - highest_prices.min()
ptp2 = np.ptp(highest_prices)
print(ptp1, ptp2, sep='\n')

三、离差、方差与标准差

1、均值

  • 样本:S = [s1, s2, …, sn]
  • 均值:m = (s1 + s2 + … + sn) / n

2、离差: 每一个样本数据相对于平均值的偏离程度,是一个数组

  • 经典求法:D = [s1-m, s2-m, …, sn-m]

3、方差: 离差平方和的平均值,是一个数

  • 经典求法:v = ((s1-m)^2 + (s2-m)^2 + … + (sn-m)^2) / n
  • 注意:此处/n表示总体方差和总体标准差;若是/(n-1)则是样本方差和样本标准差。当样本足够大时,二者几乎无差别,因此numpy默认计算的就是总体方差和总体标准差。

4、标准差: 方差的平方根,也叫方均根离差,是一个数

  • 经典求法:std = sqrt(v)——>v是上文中求的方差
  • Numpy求法:std = numpy.std(数组)
  • 计算样本标准差:
    std = np.std(数组, ddof=1) # ddof表示非自由样本个数

5、练习

import numpy as np

# 导入数据
closing_prices = np.loadtxt(
    '0=数据源/beer_price.csv', delimiter=',',
    usecols=(4),unpack=True
)

# 计算均值、 离差、 方差、 标准差
mean_price = np.mean(closing_prices)  # 平均值
devs = closing_prices - mean_price  # 离差
var = (devs ** 2).mean()  # 方差:离差平方和的平均值
std1 = np.sqrt(var)  # 标准差
print(std1)

# 用numpy来直接算标准差
std2 = np.std(closing_prices)
print(std2)

# 计算样本标准差
std3 = np.std(closing_prices, ddof=1)
print(std3)

11

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

Python之数据分析(中位数、波动范围、极差、离差、方差、标准差) 的相关文章

  • 如何以 HDF5 格式提供 caffe 多标签数据?

    我想将 caffe 与矢量标签一起使用 而不是整数 我检查了一些答案 似乎 HDF5 是更好的方法 但后来我陷入了这样的错误 precision layer cpp 34 检查失败 outer num inner num bottom 1
  • 数据操作 startdate enddate python pandas

    我有一个促销描述数据集 其中包含有关正在运行的各种促销活动及其开始日期 结束日期的信息 promo item start date end date Buy1 get 1 A 2015 01 08 2015 01 12 Buy1 get 1
  • 日期/时间值的 Django URL 转换器

    我正在尝试使用 Django 内置的 URL 转换器将 URL 中的日期时间字符串转换为视图中的日期对象 如果我手动输入 URL 它们会按预期工作 但尝试为其生成 URL 时找不到匹配项 我的转换器很简单 from django utils
  • 如何在代码中停止 autopep8 未安装消息

    我是一名新的 Python 程序员 使用 Mac 版本的 VS Code 1 45 1 创建 Django 项目 我安装了 Python 和 Django 扩展 每次我保存 Django 文件时 代码都会弹出此窗口 Formatter au
  • 通过 Python 在 PostgreSQL 中的 unicode 字符串中是否允许空字节?

    unicode 字符串中是否允许空字节 我不问 utf8 我的意思是 unicode 字符串的高级对象表示 背景 我们通过 Python 在 PostgreSQL 中存储包含空字节的 unicode 字符串 如果我们再次读取字符串 字符串会
  • 将带有非字符串关键字的 dict 传递给 kwargs 中的函数

    我使用具有签名功能的库f args kwargs 我需要在 kwargs 参数中传递 python dict 但 dict 不包含关键字中的字符串 f 1 2 3 4 Traceback most recent call last File
  • 如何将 Jinja 与 Twisted 一起使用?

    我正在计划使用 Python 与 Twisted Storm 和 Jinja 一起开发一个讨论软件 问题是 Jinja 不是为 Twisted 或异步套接字库而设计的 并且使用 Twisted 提供的性能是我不打算使用 Flask 的原因
  • Python、cPickle、酸洗 lambda 函数

    我必须像这样腌制一组对象 import cPickle as pickle from numpy import sin cos array tmp lambda x sin x cos x test array tmp tmp tmp tm
  • Emacs:调试Python的方法

    我把这个贴在程序员 stackexchange com https softwareengineering stackexchange com questions 29844 emacs methods for debugging pyth
  • Python 对象属性 - 访问方法

    假设我有一个具有某些属性的类 在 Pythonic OOP 中 如何访问这些属性是最好的 就像obj attr 或者也许编写 get 访问器 此类事物可接受的命名风格是什么 Edit 您能否详细说明使用单下划线或双前导下划线命名属性的最佳实
  • 包装 C++ Qt 小部件以便在 Python 中与 PySide 一起使用

    在 Python 中使用自定义 Qt 显示小部件包装自定义 C 库以便在基于 PySide 的 QApplication 中使用的最佳方法是什么 C 库是否需要特殊处理才能使用 SWIG 进行包装 封装的 Qt 小部件能否与 PySide
  • 将 Matlab MEX 文件中的函数直接嵌入到 Python 中

    我正在使用专有的 Matlab MEX 文件在 Matlab 中导入一些仿真结果 当然没有可用的源代码 Matlab 的接口实际上非常简单 因为只有一个函数 返回一个 Matlab 结构体 我想知道是否有任何方法可以直接从Python调用M
  • 如何从 Selenium 获取元素的属性

    我正在 Python 中使用 Selenium 我想得到 val of a
  • 计算素数并附加到列表

    我最近开始尝试使用 python 解决 Euler 项目的问题 并且在尝试计算素数并将其附加到列表中时遇到了这个障碍 我编写了以下代码 但我很困惑为什么它在运行时不输出任何内容 import math primes def isPrime
  • 对 Python 的 id() 感到困惑[重复]

    这个问题在这里已经有答案了 我可以理解以下定义 每个对象都有一个身份 类型和值 对象的身份 一旦创建就永远不会改变 你可能会认为它是 对象在内存中的地址 这is操作员比较身份 两个物体 这id 函数返回一个代表其值的整数 身份 我假设上面的
  • 使用 PIL 合并图像时模式不匹配

    我正在传递 jpg 文件的名称 def split image into bands filename img Image open filename data img getdata red d 0 0 0 for d in data L
  • 使用 boto3 将 csv 文件保存到 s3

    我正在尝试写入 CSV 文件并将其保存到 s3 中的特定文件夹 存在 这是我的代码 from io import BytesIO import pandas as pd import boto3 s3 boto3 resource s3 d
  • 使用 PuLP 进行线性优化,变量附加条件

    我必须用 Pull 解决 Python 中的整数线性优化问题 我解决了基本问题 现在我必须添加额外的约束 有人可以帮助我用逻辑指示器添加条件吗 逻辑限制是 如果 A gt 20 则 B gt 5 这是我的代码 from pulp impor
  • Python中如何实现相对导入

    考虑 stuff init py mylib py Foo init py main py foo init py script py script py想要进口mylib py 这只是一个示例 但实际上我只想在父目录中进行模块的相对导入
  • 应用程序的外观 - Py2exe / wxPython

    所以我的问题是我的应用程序的外观和感觉 因为它看起来像一个旧的外观应用程序 它是一个 wxPython 应用程序 在 python 上它运行良好并且看起来不错 但是当我使用 py2exe 将其转换为 exe 时 外观很糟糕 现在我知道如果你

随机推荐