数据分析专栏记录之 -基础数学与统计知识

数据分析专栏记录之 -基础数学与统计知识

1、描述性统计

'''均值'''
data_set = [10, 20, 30, 40, 50]
mean = sum(data_set)/len(data_set)'''np  里面的函数,对二维进行操作时,   默认每一列 '''
mean1 = np.mean(data_set)
print(mean, mean1)s = 0
for i in data_set:s = s + i
print(s/len(data_set))
30.0 30.0
30.0
""" 平均数  、  加权平均数  的实现"""
import numpy as np
average = np.average(data_set)
print(average)weight_average = np.average(data_set, weights=[1, 2, 1, 2, 1])
print(weight_average)
30.0
30.0
"""标准差  /  均方差 / 欧氏距离"""
import numpy as np
std = np.std(data_set)
print(std)"""方差"""var = np.var(data_set)
print(var)def avg(var_Calculation):s = 0for i in var_Calculation:s = s+ireturn (s/len(var_Calculation))
av = avg(data_set)
sum_var = 0
for i in data_set:sum_var += ((i-av)**2)
print(sum_var/len(data_set))
14.142135623730951
200.0
200.0
"""中位数"""
print(np.median(data_set))speed = [99,86,87,88,111,86,103,87,94,78,77,85,86]
i = 0
while i<=len(speed)-2:j = i+1while j <= len(speed)-1:if speed[i] < speed[j]:t = speed[i]speed[i] = speed[j]speed[j] = tj = j+1i = i+1if len(speed)%2 ==1:print(speed[int(len(speed)/2)])
else:print((speed[int(len(speed)/2)] + speed[int(len(speed)/2)-1])/2)
30.0
87
"""众数"""
from scipy import stats
speed = [99,86,87,88,111,86,103,87,94,78,77,85,86]
x = stats.mode(speed)
print(x)zd = {}
for i in speed:zd[i]=0
print(zd)for j in speed:if j in zd.keys():zd[j] += 1
print(zd)maxkey = 0
maxvalue = 0
for key in zd.keys():if zd[key]>maxvalue:maxkey = keymaxvalue = zd[key]
print(maxkey, maxvalue)
ModeResult(mode=np.int64(86), count=np.int64(3))
{99: 0, 86: 0, 87: 0, 88: 0, 111: 0, 103: 0, 94: 0, 78: 0, 77: 0, 85: 0}
{99: 1, 86: 3, 87: 2, 88: 1, 111: 1, 103: 1, 94: 1, 78: 1, 77: 1, 85: 1}
86 3
"""
百分位数
例如:假设我们有一个数组,包含住在一条街上的人的年龄。
ages = [5,31,43,48,50,41,7,11,15,39,80,82,32,2,8,6,25,36,27,61,31]
什么是 75 百分位数?答案是 43,这意味着 75% 的人是 43 岁或以下。
"""
ages = [5,31,43,48,50,41,7,11,15,39,80,82,32,2,8,6,25,36,27,61,31]
x = np.percentile(ages, 80)
print(x)def per(sz, pe):sz.sort()slen = len(sz)return sz[int((pe * slen)/100)]
print(per(ages, 80))
48.0
48
"""
定义:偏度(skewness),是统计数据分布偏斜方向和程度的度量,或者说是统计数据分布非对称程度的数字特征。说人话:偏度或偏态系数或偏度系数(Skewness)用来度量分布是否对称,一个分布如果不对称,则被称为偏度。分布分为三种:对称分布(正态分布)、正偏分布(右偏分布)、负偏分布(左偏分布)
对称分布的特点:左右对称,均值 = 中位数 = 众数,偏度 = 0
正偏分布的特点:右侧长尾,均值 >中位数 >众数,偏度 > 0
负偏分布的特点:左侧长尾,均值 < 中位数 < 众数,偏度 < 0step
绘制图像展示
"""
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
fig, axs = plt.subplots(1, 3, figsize=(10, 4))def plot():""" 标准正态 :draw standard deviation normal distribution"""mu = 0.0  #均值sd = 1.0  #标准差x = np.linspace(mu-4*sd, mu+4*sd, 100)y = stats.norm.pdf(x)""" 正偏分布 """x1 = np.linspace(mu-3*sd, mu+5*sd, 100)y1 = stats.norm.pdf(x1)""" 负偏分布 """x2 = np.linspace(mu-5*sd, mu+3*sd, 100)y2 = stats.norm.pdf(x2)axs[0].plot(x, y, "g", linewidth=2, color='black')axs[1].plot(x1, y1, "g1", linewidth=2, color='orange')axs[2].plot(x2, y2, "g2", linewidth=2, color='green')plt.grid(True)plt.show()if __name__ == '__main__':plot()

在这里插入图片描述

"""
偏度:
根据数据, 计算均值、中位数、众数  得出偏度
"""
import pandas as pd
from scipy import stats
import numpy as np
speed_ = [1,4,6,8,10,20]# 计算公式1
mean = np.mean(speed_)
std = np.std(speed_, ddof=1)
n = len(speed_)
a1 = sum(((speed_-mean)/std)**3)
a2 = a1*(n)/((n-1)*(n-2))
print("偏度:",a2)# 计算公式2
mean = np.mean(speed_)
std = np.std(speed_, ddof=1)
n = len(speed_)
a1 = sum(((speed_-mean)/std)**3)
a2 = a1/(n)
print(a2)'''
可以看到使用不同公式计算得到的偏度不同:
公式1得到的偏度:1.2737636108819756
公式2得到的偏度:0.7076464504899865
'''# 调用函数计算
d = stats.skew(speed_, bias=False)
print("偏度:", d)
偏度: 1.2737636108819756
0.7076464504899865
偏度: 1.2737636108819756

计算公式1:
S=n(n−1)(n−2)∑i=1n[(Xi−μσ)3]S=\frac{n}{(n-1)(n-2)} \sum_{i=1}^{n}\left[\left(\frac{X_{i}-\mu}{\sigma}\right)^{3}\right]S=(n1)(n2)ni=1n[(σXiμ)3]

计算公式2:
S=1n∑i=1n[(Xi−μσ)3]S=\frac{1}{n} \sum_{i=1}^{n}\left[\left(\frac{X_{i}-\mu}{\sigma}\right)^{3}\right]S=n1i=1n[(σXiμ)3]

"""
峰度
定义:峰度(peakedness;kurtosis)又称峰态系数。表征概率密度分布曲线在平均值处峰值高低的特征数。
说人话:峰度反映了峰部的尖度,用来度量数据在中心聚集程度,峰度越大分布图越尖,峰度越小分布图越矮胖。
"""import numpy as np
import matplotlib.pyplot as plt
from scipy import statsdef plot():"""draw standard deviation normal distribution"""mu = 0.0    # meansd1 = 1.0    # stdsd2 = 2.0sd3 = 3.0# 特征:x参数一致,但是扩散开的程度不一样。y不一致,向上的程度不一样# red linex = np.linspace(mu-3*sd1, mu+3*sd1, 50)y = stats.norm.pdf(x)plt.plot(x, y , "r", linewidth=2)# green linex2 = np.linspace(mu-6*sd1, mu+6*sd1, 50)y2 = stats.norm.pdf(x2, mu, sd2)plt.plot(x2, y2, "g", linewidth=2)# blue linex3 = np.linspace(mu-10*sd1, mu+10*sd1, 50)y3 = stats.norm.pdf(x3, mu, sd3)plt.plot(x3, y3, "b", linewidth=2)plt.grid(True)  # 显示网格线plt.show()if __name__ == '__main__':plot()

在这里插入图片描述

"""
对于正态分布来说峰度=3,部分统计软件会给出超额峰度,超额峰度=峰度-3。
中锋分布的超额峰度=0, 尖峰分布的超额峰度>0,低峰分布的超额峰度<0。
"""import numpy as np
import pandas as pd
from scipy import statsarr = np.array([1,4,6,8,10,20])
#标准差
std = stats.tstd(arr, ddof=1)
# 偏度
skew_ = stats.skew(arr, bias=False)
# 峰度
e = stats.kurtosis(arr, bias=False)
print(e)"""  面对pd数据  """
data = pd.DataFrame(arr)
print(data.kurt())
2.154642470375478
0    2.154642
dtype: float64
"""一维数据   曲线图"""
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np# 读取csv文件
reviews = pd.read_csv("/content/drive/MyDrive/数据分析/HC.csv")# 第一列、第二列的数据
# print(reviews['0'], reviews['0.1'])
# 绘制曲线图
plt.plot(reviews['0'], reviews['0.1'])
plt.xlabel('Time')
plt.ylabel("Position")
plt.title("Position vs Time")
plt.tight_layout()
plt.show()# 根据速度 求 加速度,  绘制加速度曲线,【 time a 】
t = reviews['0']
s = reviews['0.1']
# 计算速度 (前向差分法)
velocity = np.diff(s)/ np.diff(t) # v = Δp / Δt
# 为了方便绘图,给速度数组添加一个最后值,与时间点对齐
velocity = np.append(velocity, velocity[-1])
# 绘制位置和速度的图像
plt.plot(reviews['0'], velocity*100)
plt.xlabel('Time')
plt.ylabel("Velocity")
plt.title("Velocity vs Time")
plt.tight_layout()
plt.show()# 根据速度 求 加速度,  绘制加速度曲线,【 time a 】
t = reviews['0']
# 计算速度 (前向差分法)
Acceleration = np.diff(velocity)/ np.diff(t) # v = Δp / Δt
# 为了方便绘图,给速度数组添加一个最后值,与时间点对齐
Acceleration = np.append(Acceleration, Acceleration[-1])
# 绘制位置和速度的图像
plt.plot(reviews['0'], Acceleration)
plt.xlabel('Time')
plt.ylabel("a")
plt.title("a vs Time")
plt.tight_layout()
plt.show()

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np# 读取 CSV 文件
reviews = pd.read_csv("/content/drive/MyDrive/数据分析/HC.csv")# 时间 (t) 和位置 (s)
t = reviews['0'].to_numpy()
s = reviews['0.1'].to_numpy()# === 使用中心差分法计算速度和加速度 ===
velocity = np.gradient(s, t)           # 速度 v = ds/dt
acceleration = np.gradient(velocity, t) # 加速度 a = dv/dt# === 绘制三个曲线 ===
plt.figure(figsize=(10, 8))# 路程-时间
plt.subplot(3, 1, 1)
plt.plot(t, s, 'b', linewidth=2)
plt.ylabel('Position')
plt.title('Position, Velocity, and Acceleration vs Time')# 速度-时间
plt.subplot(3, 1, 2)
plt.plot(t, velocity, 'g', linewidth=2)
plt.ylabel('Velocity')# 加速度-时间
plt.subplot(3, 1, 3)
plt.plot(t, acceleration, 'r', linewidth=2)
plt.xlabel('Time')
plt.ylabel('Acceleration')plt.tight_layout()
plt.show()# === 计算指定时间点的速度(例如 t=2.5s)===
target_time = 2.5
velocity_at_target = np.interp(target_time, t, velocity)
print(f"t = {target_time}s 时的速度: {velocity_at_target:.4f}")

在这里插入图片描述

致谢

靠咖啡续命的牛马,👍点赞 📁 关注 💬评论 💰打赏。


参考

[1] deepseek等ai


往期回顾

  • 无,新手上车

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

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

相关文章

《星辰建造师:C++多重继承的奇幻史诗》

&#x1f30c;&#x1f525; 《星辰建造师&#xff1a;多重继承与this指针的终极史诗》 &#x1f525;&#x1f30c;—— 一场融合魔法、科技与哲学的C奇幻冒险&#x1f320;&#x1f30c; 序章&#xff1a;代码宇宙的诞生 &#x1f30c;&#x1f320;在无尽的代码维度中&#…

云计算-OpenStack 运维开发实战:从 Restful API 到 Python SDK 全场景实现镜像上传、用户创建、云主机部署全流程

一、python-Restful Api 简介 Restful API 是一种软件架构风格,基于 HTTP 协议设计,通过统一的接口(如 URL 路径)和标准的 HTTP 方法(GET/POST/PUT/DELETE 等)实现资源(如数据、文件等)的操作,具有无状态、可缓存、客户端 - 服务器分离等特点。方法如下 用 GET 请求获…

RxJava 在 Android 中的深入解析:使用、原理与最佳实践

前言RxJava 是一个基于观察者模式的响应式编程库&#xff0c;它通过可观察序列和函数式操作符的组合&#xff0c;简化了异步和事件驱动程序的开发。在 Android 开发中&#xff0c;RxJava 因其强大的异步处理能力和简洁的代码风格而广受欢迎。本文将深入探讨 RxJava 的使用、核心…

面试实战 问题三十 HTTP协议中TCP三次握手与四次挥手详解

HTTP协议中TCP三次握手与四次挥手详解 在HTTP协议中&#xff0c;连接建立和断开依赖于底层的TCP协议。虽然HTTP本身不定义握手过程&#xff0c;但所有HTTP通信都通过TCP三次握手建立连接&#xff0c;通过四次挥手断开连接。以下是详细解析&#xff1a;一、TCP三次握手&#xff…

读《精益数据分析》:双边市场的核心指标分析

双边市场数据分析指南&#xff1a;从指标体系到实战落地&#xff08;基于《精益数据分析》框架&#xff09;在互联网平台经济中&#xff0c;双边市场&#xff08;如电商、出行、外卖、自由职业平台等&#xff09;的核心矛盾始终是"供需平衡与效率优化"。这类平台连接…

Queue参考代码

queue.c #include "queue.h" #include "stdlib.h" // 初始化循环队列 void initializeCircularQueue(CircularQueue *cq, uint8_t *buffer, uint32_t size) {cq->front 0;cq->rear 0;cq->count 0;cq->size size;cq->data buffer; }…

通过时间计算地固系到惯性系旋转矩阵

通过时间计算地固系到惯性系旋转矩阵 1. 引言 在航天工程和卫星导航领域&#xff0c;经常需要在地固坐标系(ECEF)和惯性坐标系(ECI)之间进行转换。本文将详细介绍如何根据UTC时间计算这两个坐标系之间的旋转矩阵&#xff0c;并提供完整的C语言实现。 2. 基本概念 2.1 坐标系定义…

【Datawhale AI 夏令营】金融文档分析检索增强生成系统的架构演变与方法论进展

# **金融文档分析检索增强生成系统的架构演变与方法论进展****第一部分&#xff1a;基础原则和基线系统分析****第一部分&#xff1a;金融领域检索增强生成范式的解构****第二部分&#xff1a;基线剖析&#xff1a;流水线的二分法****同步轨迹 (SimpleRAG)****异步改进 (AsyncS…

C语言相关简单数据结构:顺序表

目录 1.顺序表的概念及结构 1.1 线性表 如何理解逻辑结构和物理结构&#xff1f; 1.2 顺序表分类 顺序表和数组的区别&#xff1a; 顺序表分类&#xff1a; 静态顺序表 动态顺序表 1.3 动态顺序表的实现 初始化 尾插 头插 尾删 头删 在指定位置之前插入数据 删…

nginx配置代理服务器

Nginx 作为代理服务器时&#xff0c;主要用于反向代理&#xff08;最常用&#xff0c;转发客户端请求到后端服务&#xff09;或正向代理&#xff08;较少用&#xff0c;为客户端提供访问外部网络的代理&#xff09;。以下是两种场景的具体配置示例&#xff1a; 一、反向代理配置…

MySQL数据库知识体系总结 20250813

一、数据库的原理 1.数据库的分类 我们可以根据数据的结构类型&#xff0c;将数据分成三类&#xff0c;分别是&#xff1a;结构化数据&#xff0c;半结构化数据&#xff0c;非结构化数据。 要点&#xff1a;对于结构化数据来讲通常是先有结构再有数据。要点&#xff1a;对于半…

C++ 中构造函数参数对父对象的影响:父子控件管理机制解析

文章目录C 中构造函数参数对父对象的影响&#xff1a;父子控件管理机制解析1. Qt 中的父对象管理机制2. 构造函数传递父对象的不同方式2.1. 父控件是 QWidget parent&#xff08;通用方式&#xff09;分析&#xff1a;2.2. 父控件是 Books_Client parent&#xff08;限制父控件…

直播美颜SDK开发实战:高性能人脸美型的架构与实现

在直播行业里&#xff0c;美颜已经不再是锦上添花&#xff0c;而是标配中的标配。无论是游戏主播、带货达人&#xff0c;还是唱歌、跳舞的才艺主播&#xff0c;直播美颜SDK往往决定了用户的第一印象和停留时长。尤其是高性能人脸美型技术&#xff0c;不仅能让主播的五官更加自然…

JavaWeb(苍穹外卖)--学习笔记18(Apache POI)

前言 本篇文章是学习B站黑马程序员苍穹外卖的学习笔记&#x1f4d1;。我的学习路线是Java基础语法-JavaWeb-做项目&#xff0c;管理端的功能学习完之后&#xff0c;就进入到了用户端微信小程序的开发&#xff0c;用户端开发的流程大致为用户登录—商品浏览&#xff08;其中涉及…

OpenJDK 17 源码 安全点轮询的信号处理流程

OpenJDK 17 源码&#xff0c;安全点轮询的信号处理流程如下&#xff08;重点分析安全点轮询相关部分&#xff09;&#xff1a;核心信号处理流程信号触发&#xff1a;当线程访问安全点轮询内存页时&#xff08;SafepointMechanism::is_poll_address&#xff09;&#xff0c;会触…

InfluxDB 在工业控制系统中的数据监控案例(一)

工业控制系统数据监控的重要性**在工业领域&#xff0c;生产过程的复杂性和连续性使得数据监控成为保障生产稳定运行的关键环节。通过实时收集、处理和分析生产数据&#xff0c;企业能够及时掌握设备运行状态、产品质量信息以及生产流程的各项参数&#xff0c;从而为生产决策提…

嵌入式学习(day26)frambuffer帧缓冲

一、UI技术: User interface&#xff08;1&#xff09;framebuffer: 帧缓冲、帧缓存技术 Linux内核专门为图形化显示提供的一套应用程序接口。流程如下&#xff1a;1. 打开显示设备 (/dev/fb0) 2. 获取显示设备相关参数&#xff08;分辨率&#xff0c;像素格式&#xff09;---》…

408每日一题笔记 41-50

答案&#xff1a;A 解析&#xff1a;CSMA/CD 协议里&#xff0c;“争用期” 就是信号在总线上最远两个端点之间往返传输的时间&#xff0c;也叫冲突窗口&#xff0c;选 A。

【物联网】基于树莓派的物联网开发【26】——树莓派开启串口并配置串口助手Minicom

串口配置 &#xff08;1&#xff09;打开串口&#xff0c;终端输入命令&#xff1a; sudo raspi-config &#xff08;2&#xff09;串口设置选择Interfacing Options→Serial port→No→Yes→ok&#xff08;3&#xff09;设置开启&#xff0c;打开串口 &#xff08;4&#xff0…

考研/考公知识共享平台的设计与实现-项目分享

考研/考公知识共享平台的设计与实现-项目分享项目介绍项目摘要学生前台用例图管理员用例图系统流程图系统功能结构图实体图学生信息实体图资料信息管理实体图报考指南管理写在最后项目介绍 使用者&#xff1a;管理员、学生前台、学生后台 开发技术&#xff1a;MySQLJavaSpring…