【小白学机器学习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、返回文件流…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...