【小白学机器学习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图片实现
实现原理: 要生成长x宽y的贴图,就是生成x*y个像素填充到贴图中,如下图: 如果要改变局部颜色,就是从x1到x2(x1<x2),y1到y2(y1<y2)这个范围做处理, 或者要想做圆形就是计算距某个点(x1,y1&…...
Mac配置maven环境及在IDEA中配置Maven
Mac配置maven环境及在IDEA中配置Maven 1. 介绍 Maven是一款广泛用于Java等JVM语言项目的工具,它以项目对象模型(POM)为基础进行项目管理,通过POM文件来定义项目信息和依赖关系。同时,它也是构建自动化工具࿰…...
Reactor 模式的理论与实践
1. 引言 1.1 什么是 Reactor 模式? Reactor 模式是一种用于处理高性能 I/O 的设计模式,专注于通过非阻塞 I/O 和事件驱动机制实现高并发性能。它的核心思想是将 I/O 操作的事件分离出来,通过事件分发器(Reactor)将事…...
vim 一次注释多行 的几种方法
在 Vim 中一次注释多行是一个常见操作。可以使用以下方法根据你的具体需求选择合适的方式: 方法 1:手动插入注释符 进入正常模式: 按 Esc 确保进入正常模式。 选择需要注释的多行: 移动到第一行,按下 Ctrlv 进入可视块…...
问题记录-Java后端
问题记录 目录 问题记录1.多数据源使用事务注意事项?2.mybatis执行MySQL的存储过程?3.springBoot加载不到nacos配置中心的配置问题4.服务器产生大量close_wait情况 1.多数据源使用事务注意事项? 问题:在springBoot项目中多表处理数…...
李春葆《数据结构》-课后习题代码题
一:假设不带权有向图采用邻接矩阵 g 存储,设计实现以下功能的算法: (1)求出图中每个顶点的入度。 代码: void indegree(MatGraph g){int i,j,n;printf("各个顶点的入度:\n");for(i…...
51c~C语言~合集2
我自己的原文哦~ https://blog.51cto.com/whaosoft/12652943 一、嵌入式开发中的C语言编译器 如果你和一个优秀的程序员共事,你会发现他对他使用的工具非常熟悉,就像一个画家了解他的画具一样。----比尔.盖茨1 不能简单的认为是个工具 嵌入式程序开发…...
【Python】构建事件驱动架构:用Python实现实时应用的高效系统
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 事件驱动架构(Event-Driven Architecture,EDA)是一种基于事件流动进行系统设计的模式,广泛应用于游戏开发、实时监控和分布式系统中。它通过解耦事件的生产者和消费者,提升系统的可扩展性和灵活性。本文章从…...
Git(一)基本使用
目录 一、使用git -v 查看安装git版本 二、使用mkdir 创建一个文件,并使用 git init 在该目录下创建一个本地仓库, 三、通过git clone命令接入线上仓库 四、使用git status查看仓库状态信息 五、利用echo写入一个文件 并使用cat进行查看 【Linux】e…...
HarmonyOS应用开发者基础认证,Next版本发布后最新题库(10月8日更新题库未收录)
笔者会尽量找到答案的出处,力求答案准确无误。有些题目答案可能有错,也有一些笔者实在找不到出处,也不知道答案的,如果读者发现错误或有补充建议,欢迎评论或私信笔者。您的每一条反馈都是宝贵的,能够帮助笔…...
【PGCCC】Postgresql BRIN 索引原理
前言 postgresql 提供了块级索引(简称 BRIN),主要适用于类似时序数据之类的,有着天然的顺序,而且都是添加写的场景。相比于 btree 索引,它的体积小得多,非常适用于大数据量的场景。 原理 pos…...
腾讯云 AI 代码助手:产品研发过程的思考和方法论
一、文章摘要 本文将详细阐述 腾讯云 AI 代码助手的历史发展形态与产品整体架构,并从技术、研发方法论的角度分别阐述了产品的研发过程。 全文阅读约 5~8 分钟。 二、产品布局 AI 代码助手产品经历了三个时代的发展 第一代诸如 Eclipse、Jetbrains、V…...
Matlab 深度学习 PINN测试与学习
PINN 与传统神经网络的区别 与传统神经网络的不同之处在于,PINN 能够以微分方程形式纳入有关问题的先验专业知识。这些附加信息使 PINN 能够在给定的测量数据之外作出更准确的预测。此外,额外的物理知识还能在存在含噪测量数据的情况下对预测解进行正则…...
【Angular】async详解
在 Angular 中,async 关键字用于定义异步函数,通常与 await 一起使用来处理 Promise。这使得异步代码看起来更像同步代码,从而更容易理解和维护。 基本用法 定义异步函数:使用 async 关键字。等待 Promise 解析:使用…...
抖音SEO矩阵系统:开发技术分享
市场环境剖析 短视频SEO矩阵系统是一种策略,旨在通过不同平台上的多个账号建立联系,整合同一品牌下的各平台粉丝流量。该系统通过遵循每个平台的规则和内容要求,输出企业和品牌形象,以矩阵形式增强粉丝基础并提升商业价值。抖音作…...
SpringBoot集成minio,并实现文件上传
SpringBoot集成minio 什么是minioSpringBoot集成minio1、引入minio依赖2、配置Minio相关参数3、在代码里读取自定义的minio配置4、在minio配置类里,注册ConfigurationProperties实现文件上传到minio1、利用SpringMVC实现接口的异常全局处理2、返回文件路径给前端3、返回文件流…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
