当前位置: 首页 > news >正文

【小白学机器学习34】用python进行基础的数据统计 mean,var,std,median,mode ,四分位数等

目录

1 用 numpy 快速求数组的各种统计量:mean, var, std

1.1 数据准备

1.2 直接用np的公式求解

1.3 注意问题

1.4 用print() 输出内容,显示效果

2 为了验证公式的后背,下面是详细的展开公式的求法

2.1 均值mean的详细

2.2 方差var的详细

2.2.1 一个比较奇怪的问题

2.2 (数组-均值)→离差数组→离差平方数组→离差平方和数

2.3 方差 var

2.4 标准差std

3  各种类型的数据平均数: min, max ,mean ,median, mode() 的求法

3.1 min, max ,mean ,median

3.2 众数mode()需要间接求

4 四分位数

4.1 什么是四分位数

4.2 如何求?

5 今天的所有测试代码 和对应测试结果

5.1 测试代码

5.2 测试结果 


1 用 numpy 快速求数组的各种统计量:mean, var, std

1.1 数据准备

  • 先生成一个纯数字列表,list1=[1,2,3,4,5,6,7,8,9,10]
  • 转化为np的数组,array1=np.array(list1)

1.2 直接用np的公式求解

  • mu1=np.mean(array1)
  • var1=np.var(array1)            #默认缺省 ddof=0,方差有偏估计
  • var11=np.var(array1,ddof=1)    #ddof 无偏估计
  • std1=np.std(array1)
  • std11=np.std(array1,ddof=1)

1.3 注意问题

#  以前可以用 scipy.mean() 等方法求,现在要被取消了,所以会报错

#报错 scipy.mean is deprecated and will be removed in SciPy 2.0.0
#mu1=sp.mean(array1)   
#var1=sp.var(array1)
#std1=sp.std(array1)

import scipy as sp
import numpy as np
import pandas as pdlist1=[1,2,3,4,5,6,7,8,9,10]
array1=np.array(list1)#现在只能用numpy求这些
mu1=np.mean(array1)
var1=np.var(array1)            #默认缺省 ddof=0,方差有偏估计
var11=np.var(array1,ddof=1)    #ddof 无偏估计
std1=np.std(array1)
std11=np.std(array1,ddof=1)

1.4 用print() 输出内容,显示效果

  • 不适合的
  • print("mu1%d=" %555)  #%d %s 只适合数字,字符串,不适合变量,变量当参数会报错
  • 比较老旧的用法
  • print("var1={0}".format(var1))   #适合变量带入,不灵活,不能用参数名需要标数字对应
  • print("var11={0}".format(var11)) 
  • 好用但是比较山寨的
  • print("mu1=" ,mu1)    #比较山寨,但是可以
  • 最好用的
  • print(f"std1={std1}")   #适合变量带入,带入的是参数名,灵活
  • print(f"std11={std11}") 
     

2 为了验证公式的背后的理解,下面是详细的展开公式的求法

2.1 均值mean的详细

  • 求sum,使用np.sum
  • 求数组长度  len()
  • 求均值  mu=np.sum/len()

2.2 方差var的详细

2.2.1 一个比较奇怪的问题

#无法一步数组-数字,然后求和???
#报错  SyntaxError: invalid decimal literal
#ss=np.sum((array1-mu2)**2)
#ss=sum((array1-mu2)**2)

2.2 (数组-均值)→离差数组→离差平方数组→离差平方和数

  • (数组-均值)→离差数组→离差平方数组→离差平方和数

  • #必须得拆开求SS?
  • xx=array1-mu2       # 离差数组(数组)    
  • yy=xx**2                 # 离差平方数组(数组)
  • ss=sum(yy)            # SS就是离差平方和(数字!)
  • print("离差数组xx=",xx)
  • print("离差平方数组yy=",yy)
  • print("离差平方和ss=",ss)

2.3 方差 var

  • 我们只能得到样本方差,但是我们可以估计出总体方差
  • 样本方差=有偏(总体)方差var=ss/n
  • 无偏(总体)方差var=ss/(n-1)

2.4 标准差std

  • 样本标准差
  • 样本无偏标准差
  • 总体无偏标准差

import scipy as sp
import numpy as np
import pandas as pdlist1=[1,2,3,4,5,6,7,8,9,10]
array1=np.array(list1)# 下面是展开的求法,求数组的各种统计量------------验证上面内容
sum2=np.sum(array1)
#n=np.len(array1) 
n=len(array1)    #len()是python的基础方法
mu2=sum2/n#无法一步数组-数字,然后求和???
#报错  SyntaxError: invalid decimal literal
#ss=np.sum((array1-mu2)**2)
#ss=sum((array1-mu2)**2)
#必须得拆开求SS?
xx=array1-mu2       # 离差数组(数组)    
yy=xx**2            # 离差平方数组(数组)
ss=sum(yy)          # SS就是离差平方和(数字!)
print("离差数组xx=",xx)
print("离差平方数组yy=",yy)
print("离差平方和ss=",ss)var2=ss/n
var22=ss/(n-1)std2=np.sqrt(var2)
std22=np.sqrt(var22)#结果和上面是相同的
print("mu2=" ,mu2)   
print("var2={0}".format(var2))   
print("var22={0}".format(var22))   
print(f"std2={std2}")   
print(f"std22={std22}") 

3  各种类型的数据平均数: min, max ,mean ,median, mode() 的求法

3.1 min, max ,mean ,median

#其他统计内容

  • print(np.min(array1))
  • print(np.max(array1))
  • print(np.mean(array1))
  • print(np.median(array1))
#其他统计内容
print(np.min(array1))
print(np.max(array1))
print(np.mean(array1))
print(np.median(array1))countList = np.bincount(np.array(array1))
mode = np.argmax(countList)
print(mode)

3.2 众数mode()需要间接求

numpy无法直接求众数,这个方法是网上查的

  • 主要思路就是求每个数的出现次数,然后去查对应出现次数最多的元素就是众数。
  • countList = np.bincount(np.array(array1))
  • #np.bincount用于统计输入数组中每个数值出现的次数
  • #np.argmax是用于取得数组中每一行或者每一列的的最大值
  • mode = np.argmax(countList)
  • print(mode)

4 四分位数

4.1 什么是四分位数

  • 其实四分位数,就是 0%,25% ,50%,75%,100% 这5个点组成的四个均等1/4长线段
  • 本身0%,100% 就是min 和 max
  • 新加25% ,50%,75% 即可区分4个1/4四分位的线段

4.2 如何求?

  • sp.stats.scoreatpercentile(array1,25)  即25%,即1/4分位的数
print("#四分位数")
#四分位数
print(sp.stats.scoreatpercentile(array1,0))
print(sp.stats.scoreatpercentile(array1,25))
print(sp.stats.scoreatpercentile(array1,50))
print(sp.stats.scoreatpercentile(array1,75))
print(sp.stats.scoreatpercentile(array1,100))

5 今天的所有测试代码 和对应测试结果

5.1 测试代码

import scipy as sp
import numpy as np
import pandas as pdlist1=[1,2,3,4,5,6,7,8,9,10]
array1=np.array(list1)print("#日常用法----用numpy 快速求数组的各种统计量")
# 用numpy 快速求数组的各种统计量----------日常用法
#报错 scipy.mean is deprecated and will be removed in SciPy 2.0.0
#mu1=sp.mean(array1)   
#var1=sp.var(array1)
#std1=sp.std(array1)#现在只能用numpy求这些
mu1=np.mean(array1)
var1=np.var(array1)            #默认缺省 ddof=0,方差有偏估计
var11=np.var(array1,ddof=1)    #ddof 无偏估计
std1=np.std(array1)
std11=np.std(array1,ddof=1)print("mu1%d=" %555)  #%d %s 只适合数字,字符串,不适合变量,变量当参数会报错
print("mu1=" ,mu1)    #比较山寨,但是可以
print("var1={0}".format(var1))   #适合变量带入,不灵活,不能用参数名需要标数字对应
print("var11={0}".format(var11)) 
print(f"std1={std1}")   #适合变量带入,带入的是参数名,灵活
print(f"std11={std11}") print()
print("# 下面是详细的展开公式的求法,求数组的各种统计量----------验证上面内容")
# 下面是展开的求法,求数组的各种统计量------------验证上面内容
sum2=np.sum(array1)
#n=np.len(array1) 
n=len(array1)    #len()是python的基础方法
mu2=sum2/n#无法一步数组-数字,然后求和???
#报错  SyntaxError: invalid decimal literal
#ss=np.sum((array1-mu2)**2)
#ss=sum((array1-mu2)**2)
#必须得拆开求SS?
xx=array1-mu2       # 离差数组(数组)    
yy=xx**2            # 离差平方数组(数组)
ss=sum(yy)          # SS就是离差平方和(数字!)
print("离差数组xx=",xx)
print("离差平方数组yy=",yy)
print("离差平方和ss=",ss)var2=ss/n
var22=ss/(n-1)std2=np.sqrt(var2)
std22=np.sqrt(var22)#结果和上面是相同的
print("mu2=" ,mu2)   
print("var2={0}".format(var2))   
print("var22={0}".format(var22))   
print(f"std2={std2}")   
print(f"std22={std22}") print("")
print("#其他统计内容")
#其他统计内容
print(np.min(array1))
print(np.max(array1))
print(np.mean(array1))
print(np.median(array1))countList = np.bincount(np.array(array1))
mode = np.argmax(countList)
print(mode)print("")
print("#四分位数")
#四分位数
print(sp.stats.scoreatpercentile(array1,0))
print(sp.stats.scoreatpercentile(array1,25))
print(sp.stats.scoreatpercentile(array1,50))
print(sp.stats.scoreatpercentile(array1,75))
print(sp.stats.scoreatpercentile(array1,100))

5.2 测试结果 

相关文章:

【小白学机器学习34】用python进行基础的数据统计 mean,var,std,median,mode ,四分位数等

目录 1 用 numpy 快速求数组的各种统计量:mean, var, std 1.1 数据准备 1.2 直接用np的公式求解 1.3 注意问题 1.4 用print() 输出内容,显示效果 2 为了验证公式的后背,下面是详细的展开公式的求法 2.1 均值mean的详细 2.2 方差var的…...

安装 Docker(使用国内源)

一、安装Docker-ce 1、下载阿里云的repo源 [rootlocalhost ~]# yum install yum-utils -y && yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && yum makecache # 尝试列出 docker-ce 的版本 [rootlocalh…...

Ajax学习笔记,第一节:语法基础

Ajax学习笔记,第一节:语法基础 一、概念 1、什么是Ajax 使用浏览器的 XMLHttpRequest 对象 与服务器通信2、什么是axios Axios是一个基于Promise的JavaScript库,支持在浏览器和Node.js环境中使用。相较于Ajax,Axios提供了更多…...

《用Python画蔡徐坤:艺术与编程的结合》

简介 大家好!今天带来一篇有趣的Python编程项目,用代码画出知名偶像蔡徐坤的形象。这个项目使用了Python的turtle库,通过简单的几何图形和精心设计的代码来展示艺术与编程的结合。 以下是完整的代码和效果介绍,快来试试看吧&…...

Unity中动态生成贴图并保存成png图片实现

实现原理&#xff1a; 要生成长x宽y的贴图&#xff0c;就是生成x*y个像素填充到贴图中&#xff0c;如下图&#xff1a; 如果要改变局部颜色&#xff0c;就是从x1到x2(x1<x2),y1到y2(y1<y2)这个范围做处理&#xff0c; 或者要想做圆形就是计算距某个点&#xff08;x1,y1&…...

Mac配置maven环境及在IDEA中配置Maven

Mac配置maven环境及在IDEA中配置Maven 1. 介绍 Maven是一款广泛用于Java等JVM语言项目的工具&#xff0c;它以项目对象模型&#xff08;POM&#xff09;为基础进行项目管理&#xff0c;通过POM文件来定义项目信息和依赖关系。同时&#xff0c;它也是构建自动化工具&#xff0…...

Reactor 模式的理论与实践

1. 引言 1.1 什么是 Reactor 模式&#xff1f; Reactor 模式是一种用于处理高性能 I/O 的设计模式&#xff0c;专注于通过非阻塞 I/O 和事件驱动机制实现高并发性能。它的核心思想是将 I/O 操作的事件分离出来&#xff0c;通过事件分发器&#xff08;Reactor&#xff09;将事…...

vim 一次注释多行 的几种方法

在 Vim 中一次注释多行是一个常见操作。可以使用以下方法根据你的具体需求选择合适的方式&#xff1a; 方法 1&#xff1a;手动插入注释符 进入正常模式&#xff1a; 按 Esc 确保进入正常模式。 选择需要注释的多行&#xff1a; 移动到第一行&#xff0c;按下 Ctrlv 进入可视块…...

问题记录-Java后端

问题记录 目录 问题记录1.多数据源使用事务注意事项&#xff1f;2.mybatis执行MySQL的存储过程&#xff1f;3.springBoot加载不到nacos配置中心的配置问题4.服务器产生大量close_wait情况 1.多数据源使用事务注意事项&#xff1f; 问题&#xff1a;在springBoot项目中多表处理数…...

李春葆《数据结构》-课后习题代码题

一&#xff1a;假设不带权有向图采用邻接矩阵 g 存储&#xff0c;设计实现以下功能的算法&#xff1a; &#xff08;1&#xff09;求出图中每个顶点的入度。 代码&#xff1a; void indegree(MatGraph g){int i,j,n;printf("各个顶点的入度&#xff1a;\n");for(i…...

51c~C语言~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/12652943 一、嵌入式开发中的C语言编译器 如果你和一个优秀的程序员共事&#xff0c;你会发现他对他使用的工具非常熟悉&#xff0c;就像一个画家了解他的画具一样。----比尔.盖茨1 不能简单的认为是个工具 嵌入式程序开发…...

【Python】构建事件驱动架构:用Python实现实时应用的高效系统

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 事件驱动架构(Event-Driven Architecture,EDA)是一种基于事件流动进行系统设计的模式,广泛应用于游戏开发、实时监控和分布式系统中。它通过解耦事件的生产者和消费者,提升系统的可扩展性和灵活性。本文章从…...

Git(一)基本使用

目录 一、使用git -v 查看安装git版本 二、使用mkdir 创建一个文件&#xff0c;并使用 git init 在该目录下创建一个本地仓库&#xff0c; 三、通过git clone命令接入线上仓库 四、使用git status查看仓库状态信息 五、利用echo写入一个文件 并使用cat进行查看 【Linux】e…...

HarmonyOS应用开发者基础认证,Next版本发布后最新题库(10月8日更新题库未收录)

笔者会尽量找到答案的出处&#xff0c;力求答案准确无误。有些题目答案可能有错&#xff0c;也有一些笔者实在找不到出处&#xff0c;也不知道答案的&#xff0c;如果读者发现错误或有补充建议&#xff0c;欢迎评论或私信笔者。您的每一条反馈都是宝贵的&#xff0c;能够帮助笔…...

【PGCCC】Postgresql BRIN 索引原理

前言 postgresql 提供了块级索引&#xff08;简称 BRIN&#xff09;&#xff0c;主要适用于类似时序数据之类的&#xff0c;有着天然的顺序&#xff0c;而且都是添加写的场景。相比于 btree 索引&#xff0c;它的体积小得多&#xff0c;非常适用于大数据量的场景。 原理 pos…...

腾讯云 AI 代码助手:产品研发过程的思考和方法论

一、文章摘要 本文将详细阐述 腾讯云 AI 代码助手的历史发展形态与产品整体架构&#xff0c;并从技术、研发方法论的角度分别阐述了产品的研发过程。 全文阅读约 5&#xff5e;8 分钟。 二、产品布局 AI 代码助手产品经历了三个时代的发展 第一代诸如 Eclipse、Jetbrains、V…...

Matlab 深度学习 PINN测试与学习

PINN 与传统神经网络的区别 与传统神经网络的不同之处在于&#xff0c;PINN 能够以微分方程形式纳入有关问题的先验专业知识。这些附加信息使 PINN 能够在给定的测量数据之外作出更准确的预测。此外&#xff0c;额外的物理知识还能在存在含噪测量数据的情况下对预测解进行正则…...

【Angular】async详解

在 Angular 中&#xff0c;async 关键字用于定义异步函数&#xff0c;通常与 await 一起使用来处理 Promise。这使得异步代码看起来更像同步代码&#xff0c;从而更容易理解和维护。 基本用法 定义异步函数&#xff1a;使用 async 关键字。等待 Promise 解析&#xff1a;使用…...

抖音SEO矩阵系统:开发技术分享

市场环境剖析 短视频SEO矩阵系统是一种策略&#xff0c;旨在通过不同平台上的多个账号建立联系&#xff0c;整合同一品牌下的各平台粉丝流量。该系统通过遵循每个平台的规则和内容要求&#xff0c;输出企业和品牌形象&#xff0c;以矩阵形式增强粉丝基础并提升商业价值。抖音作…...

SpringBoot集成minio,并实现文件上传

SpringBoot集成minio 什么是minioSpringBoot集成minio1、引入minio依赖2、配置Minio相关参数3、在代码里读取自定义的minio配置4、在minio配置类里,注册ConfigurationProperties实现文件上传到minio1、利用SpringMVC实现接口的异常全局处理2、返回文件路径给前端3、返回文件流…...

centos为用户赋予sudo权限

在CentOS系统中&#xff0c;要为用户test赋予sudo权限&#xff0c;你需要按照以下步骤操作&#xff1a; 确保sudo包已安装&#xff1a; 如果系统中没有安装sudo&#xff0c;你可以通过yum&#xff08;CentOS 7及以下&#xff09;或dnf&#xff08;CentOS 8及以上&#xff09;来…...

SAP 零售方案 CAR 系统的介绍与研究

前言 当今时代&#xff0c;零售业务是充满活力和活力的业务领域之一。每天&#xff0c;由于销售运营和客户行为&#xff0c;它都会生成大量数据。因此&#xff0c;公司迫切需要管理数据并从中检索见解。它将帮助公司朝着正确的方向发展他们的业务。 这就是为什么公司用来处理…...

Android Framework AudioFlinge 面试题及参考答案

目录 请解释什么是 AudioFlinger? AudioFlinger 在 Android 系统中的位置是什么? AudioFlinger 的主要职责有哪些? AudioFlinger 如何管理音频流? 在 AudioFlinger 中,什么是音频会话? 请简述 AudioFlinger 的工作流程。 AudioFlinger 是如何与硬件交互的? 在 A…...

嵌入式系统与单片机工作原理详解

随着现代科技的发展&#xff0c;嵌入式系统已经深入到我们日常生活中的方方面面。无论是智能家居、汽车电子&#xff0c;还是工业控制、医疗设备&#xff0c;都离不开嵌入式系统的支持。而单片机作为嵌入式系统的核心组件&#xff0c;是实现这些功能的关键之一。本文将详细介绍…...

Diving into the STM32 HAL-----Timers笔记

嵌入式设备会按时间执行某些活动。对于真正简单且不准确的延迟&#xff0c;繁忙的循环可以执行任务&#xff0c;但是使用 CPU 内核执行与时间相关的活动从来都不是一个聪明的解决方案。因此&#xff0c;所有微控制器都提供专用的硬件外设&#xff1a;定时器。定时器不仅是时基生…...

对比 MyBatis 批处理 BATCH 模式与 INSERT INTO ... SELECT ... UNION ALL 进行批量插入

前言 在开发中&#xff0c;我们经常需要批量插入大量数据。不同的批量插入方法有不同的优缺点&#xff0c;适用于不同的场景。本文将详细对比两种常见的批量插入方法&#xff1a; MyBatis 的批处理模式。使用 INSERT INTO ... SELECT ... UNION ALL 进行批量插入。 MyBatis …...

AI大模型如何重塑软件开发流程与模式

AI大模型如何重塑软件开发流程与模式 随着人工智能技术的不断发展&#xff0c;AI大模型正在逐步改变软件开发的方式。传统的软件开发流程&#xff0c;尽管经过多年的演进&#xff0c;使得许多企业能够顺利进行软件开发&#xff0c;但仍然面临着许多挑战&#xff0c;例如开发周…...

NUXT3学习日记五(composables、$fetch和useAsyncData、useFetch,lazy,refresh)

composables 在 Nuxt 3 中&#xff0c;composables&#xff08;组合式函数&#xff09;是一种用于封装和复用有状态逻辑的机制。它类似于 Vue 3 中的组合式 API&#xff0c;允许你将相关的逻辑&#xff08;如数据获取、状态管理等&#xff09;提取到独立的函数中&#xff0c;然…...

MySQL原理简介—10.SQL语句和执行计划

大纲 1.什么是执行计划 2.执行计划包含哪些内容 3.SQL语句和执行计划的总结 4.SQL语句使用多个二级索引 5.多表关联的SQL语句如何执行 6.全表扫描执行计划的成本计算方法 7.索引的成本计算方法 8.MySQL如何优化执行计划 9.explain的参数说明 1.什么是执行计划 (1)什么…...

wordpress二开-WordPress新增页面模板-说说微语

微语说说相当于一个简单的记事本&#xff0c;使用还是比较方便的。这个版本的说说微语CSS样式不兼容&#xff0c;可能有些主题无法适配&#xff0c;但是后台添加内容&#xff0c;前端显示的逻辑已经实现。可以当作Word press二开中自定义页面模板学习~ 一、后台添加说说微语模…...