【小白学机器学习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 测试结果 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/478768.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频推拉流EasyDSS互联网直播点播平台技术特点及应用场景剖析

在数字科技日新月异的今天,视频直播和点播已经成为互联网内容传播的重要方式之一。而互联网直播点播平台EasyDSS作为功能强大的流媒体直播点播视频能力平台,提供了一站式的视频推拉流、转码、直播、点播、时移回放、存储等视频服务,广泛应用于…

【测试工具JMeter篇】JMeter性能测试入门级教程(一)出炉,测试君请各位收藏了!!!

一、前言 Apache JMeter是纯Java的开源软件,最初由Apache软件基金会的Stefano Mazzocchi开发,旨在加载测试功能行为和测量性能。可以使用JMeter进行性能测试,即针对重负载、多用户和并发流量测试Web应用程序。 我们选择JMeter原因 是否测试过…

ffmpeg视频滤镜:提取缩略图-framestep

滤镜描述 官网地址 > FFmpeg Filters Documentation 这个滤镜会间隔N帧抽取一帧图片&#xff0c;因此这个可以用于设置视频的缩略图。总体上这个滤镜比较简单。 滤镜使用 滤镜参数 framestep AVOptions:step <int> ..FV....... set frame st…

Spring源码(十三):Spring全系列总结

Spring总结篇,不同于之前抽丝剥茧式地纵向深入源码,本次从横向的角度出发,希望可以带个读者一个完全不同的Spring视角。 2024年重置版,搞点不一样的东西。希望通过本篇的内容,将之前的文章全部给串起来。 相关前文: Spring Boot启动加载Spring Web请求处理流程Spring上…

【AIGC】如何准确引导ChatGPT,实现精细化GPTs指令生成

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | 提示词Prompt应用实例 文章目录 &#x1f4af;前言&#x1f4af;准确引导ChatGPT创建爆款小红书文案GPTs指令案例&#x1f4af; 高效开发GPTs应用的核心原则明确应用场景和目标受众构建多样化风格模板提问与引…

电影风格城市夜景旅拍Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 电影风格城市夜景旅拍通过 Lightroom 调色&#xff0c;将城市夜晚的景色打造出如同电影画面般的质感和氛围。以独特的色彩和光影处理&#xff0c;展现出城市夜景的魅力与神秘。 预设信息 调色风格&#xff1a;电影风格预设适合类型&#xff1a;人像&#xff0c;街拍…

拥抱极简主义前端开发:NoCss.js 引领无 CSS 编程潮流

在前端开发的世界里&#xff0c;我们总是在不断追寻更高效、更简洁的方式来构建令人惊艳的用户界面。而今天&#xff0c;我要向大家隆重介绍一款具有创新性的工具 ——NoCss.js&#xff0c;它将彻底颠覆你对传统前端开发的认知&#xff0c;引领我们进入一个全新的无 CSS 编程时…

【JavaEE初阶】多线程初阶下部

文章目录 前言一、volatile关键字volatile 能保证内存可见性 二、wait 和 notify2.1 wait()方法2.2 notify()方法2.3 notifyAll()方法2.4 wait 和 sleep 的对比&#xff08;面试题&#xff09; 三、多线程案例单例模式 四、总结-保证线程安全的思路五、对比线程和进程总结 前言…

使用 前端技术 创建 QR 码生成器 API1

前言 QR码&#xff08;Quick Response Code&#xff09;是一种二维码&#xff0c;于1994年开发。它能快速存储和识别数据&#xff0c;包含黑白方块图案&#xff0c;常用于扫描获取信息。QR码具有高容错性和快速读取的优点&#xff0c;广泛应用于广告、支付、物流等领域。通过扫…

vxe-modal VxeUI 窗口组件弹窗多窗口模式

VxeUI 实现在 vue 中使用弹窗组件&#xff0c;弹窗多个窗口可叠加&#xff0c;实现多实例的窗口组件。 npm install vxe-pc-ui4.3.6// ...import VxeUI from vxe-pc-uiimport vxe-pc-ui/lib/style.css// ...createApp(App).use(VxeUI).mount(#app)// ...官网&#xff1a;https…

无人机探测:光电侦测核心技术算法详解!

核心技术 双光谱探测跟踪&#xff1a; 可见光成像技术&#xff1a;利用无人机表面反射的自然光或主动光源照射下的反射光&#xff0c;通过高灵敏度相机捕捉图像。该技术适用于日间晴朗天气下的无人机探测&#xff0c;具有直观、易于识别目标的特点。 红外成像技术&#xff1…

【ArcGISPro】Sentinel-2数据处理

错误 默认拉进去只组织了4个波段,但是实际有12个波段 解决方案 数据下载 Sentinel-2 数据下载-CSDN博客 数据处理 数据查看 创建镶嵌数据集 在数据管理工具箱中找到创建镶嵌数据集

现代密码学

概论 计算机安全的最核心三个关键目标&#xff08;指标&#xff09;/为&#xff1a;保密性 Confidentiality、完整性 Integrity、可用性 Availability &#xff0c;三者称为 CIA三元组 数据保密性&#xff1a;确保隐私或是秘密信息不向非授权者泄漏&#xff0c;也不被非授权者使…

Python绘制太极八卦

文章目录 系列目录写在前面技术需求1. 图形绘制库的支持2. 图形绘制功能3. 参数化设计4. 绘制控制5. 数据处理6. 用户界面 完整代码代码分析1. rset() 函数2. offset() 函数3. taiji() 函数4. bagua() 函数5. 绘制过程6. 技术亮点 写在后面 系列目录 序号直达链接爱心系列1Pyth…

uniapp vue2项目迁移vue3项目

uniapp vue2项目迁移vue3项目&#xff0c;必须适配的部分 一、main.js 创建应用实例 // 之前 - Vue 2 import Vue from vue import App from ./App Vue.config.productionTip false // vue3 不再需要 App.mpType app // vue3 不再需要 const app new Vue({ ...App }) …

卷积神经网络学习记录

目录 神经网络基础定义&#xff1a; 基本组成部分 工作流程 卷积层&#xff08;卷积定义&#xff09;【CONV】&#xff1a; 卷积层&#xff08;Convolutional Layer&#xff09; 特征提取&#xff1a;卷积层的主要作用是通过卷积核&#xff08;或滤波器&#xff09;运算提…

element-ui 中el-calendar 日历插件获取显示的第一天和最后一天【原创】

需要获取el-calendar 日历组件上的第1天和最后一天。可以通过document.querySelector()方法进行获取dom元素中的值&#xff0c;这样避免计算问题。 获取的过程中主要有两个难点&#xff0c;第1个是处理上1月和下1月的数据&#xff0c;第2个是跨年的数据。 直接贴代码&#xff…

一个高度可扩展的 Golang ORM 库【GORM】

GORM 是一个功能强大的 Golang 对象关系映射&#xff08;ORM&#xff09;库&#xff0c;它提供了简洁的接口和全面的功能&#xff0c;帮助开发者更方便地操作数据库。 1. 完整的 ORM 功能 • 支持常见的关系模型&#xff1a; • Has One&#xff08;一对一&#xff09; • …

【大数据学习 | Spark-Core】Spark的改变分区的算子

当分区由多变少时&#xff0c;不需要shuffle&#xff0c;也就是父RDD与子RDD之间是窄依赖。 当分区由少变多时&#xff0c;是需要shuffle的。 但极端情况下&#xff08;1000个分区变成1个分区)&#xff0c;这时如果将shuffle设置为false&#xff0c;父子RDD是窄依赖关系&…

IDEA2024如何创建Web项目以及配置Tomcat

在Web项目的开发过程中&#xff0c;Tomcat作为一款开源的Servlet容器&#xff0c;扮演着至关重要的角色。它不仅能够提供稳定的运行环境&#xff0c;还支持多种Java EE规范&#xff0c;为开发者提供了丰富的功能支持。因此&#xff0c;正确配置Tomcat服务器对于确保Web项目的顺…