【小白学机器学习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、返回文件流…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...