当前位置: 首页 > news >正文

可视化数据

数据科学家会直观呈现数据,以更好地理解数据。 他们可以扫描原始数据、检查摘要度量值(如平均值)或绘制数据图表。 图表是一种可视化数据的强有力方式,数据科学家经常使用图表快速了解适度复杂的模式。

直观地表示数据

绘制图表是为了提供对数据的快速定性评估,这有助于理解结果、查找离群值、了解数字的分布方式等。

尽管有时候我们提前知道哪种图表最有用,但其他时候我们以探索性的方式使用图表。 若要了解数据可视化效果的强大功能,请考虑以下数据:无人驾驶汽车的位置 (x,y)。 在数据的原始形式下,很难看到任何真实的模式。 平均值告诉我们,汽车的路径以 x = 0.2 和 y = 0.3 为中心,数值范围似乎介于 -2 和 2 之间。

使用Matplotlib直观呈现数据

加载上一次的数据,在这次尝试图形化

DataFrames提供了一种探索和分析表格数据的好方法,但有时一张图片胜过一千行和一千列。Matplotlib库提供了绘制数据可视化的基础,可以大大增强您分析数据的能力。
让我们从一个简单的条形图开始,它显示了每个学生的成绩。

 

好吧,这是有效的,但图表可以使用一些改进,使它更清楚我们正在看什么。
请注意,您使用了Matplotlib中的pyplot类来绘制图表。这个类提供了许多方法来改进绘图的视觉元素。例如,下面的代码:

Specifies the color of the bar chart.
指定条形图的颜色。
Adds a title to the chart (so we know what it represents)
在图表中添加标题(以便我们知道它代表什么)
Adds labels to the X and Y axes (so we know which axis shows which data)
向X和Y轴添加标签(以便我们知道哪个轴显示哪个数据)
Adds a grid (to make it easier to determine the values for the bars)
添加网格(以便于确定条形图的值)
Rotates the X markers (so we can read them)
旋转X标记(以便我们可以读取它们)

我们可以通过figure()方法,来控制图形的大小

一个图形可以包含多个子图,每个子图都在自己的轴上。
例如,下面的代码创建一个具有两个子图的图形:一个是显示学生成绩的条形图,另一个是比较及格与不及格成绩的饼图。

 到目前为止,您一直使用Matplotlib.pyplot对象的方法绘制图表。然而,Matplotlib是Python中图形的基础,许多包,包括Pandas,提供了抽象底层Matplotlib函数和简化绘图的方法。例如,DataFrame提供了自己的方法来绘制数据,如下面的示例所示,该示例绘制了学习时数的条形图。

统计分析入门 

现在你已经知道如何使用Python来操作和可视化数据,你可以开始分析它了。
许多数据科学都植根于统计学,因此我们将探索一些基本的统计技术。

(仅仅是一些统计概念和技术)

描述性统计和数据分布

在检查变量(例如,学生成绩样本)时,数据科学家对其分布特别感兴趣(换句话说,所有不同的成绩值如何在样本中分布)。这种探索的起点通常是将数据可视化为直方图,并查看变量的每个值出现的频率。

 等级的直方图是对称的形状,其中最常出现的等级往往在范围的中间(大约50),在尺度的极端处的等级较少。

集中量数

为了更好地理解分布,我们可以研究所谓的集中趋势的度量,这是一种描述代表数据“中间”的统计数据的奇特方式。这种分析的目的是试图找到一个“典型”值。定义数据中间的常见方法包括:

The mean: A simple average based on adding together all of the values in the sample set and then dividing the total by the number of samples.
平均值:将样本集中的所有值相加,然后将总和除以样本数得到的简单平均值。
The median: The value in the middle of the range of all of the sample values.
中位数:所有样本值范围中间的值。
The mode: The most commonly occurring value in the sample set*.
众数:样品组*中最常出现的值。

让我们计算这些值,沿着最小值和最大值以进行比较,并将它们显示在直方图上。

 

箱形图以不同于直方图的格式显示坡率值的分布。图的方框部分显示数据的内部两个四分位数所在的位置。在这种情况下,一半的等级在大约36到63之间。从方框中延伸出来的胡须显示了外部的两个四分位数,因此本例中的另一半等级介于0和36之间或63和100之间。框中的线表示中值。
对于学习,将直方图和箱线图结合起来是很有用的,其中箱线图的方向被改变以使其与直方图对齐。(在某些方面,将直方图视为分布的“正视图”,将箱形图视为分布的“平面图”是有帮助的。

 

 

所有集中趋势的测量值都位于数据分布的中间,这是对称的,从中间开始,值在两个方向上逐渐变低。
为了更详细地探索这种分布,您需要了解统计学的基本原理是获取数据样本并使用概率函数来推断有关整个数据总体的信息。
这是什么意思呢?样本指的是我们手头上的数据,比如这22名学生的学习习惯和成绩等信息。人口是指我们可以收集的所有可能的数据,例如历史上每个教育机构的每个学生的成绩和学习习惯。通常,我们感兴趣的是人口,但收集所有这些数据是不切实际的。相反,我们需要尝试从我们拥有的少量数据(样本)中估计人口是什么样的。
如果我们有足够的样本,我们可以计算一个称为概率密度函数的东西,它估计了整个人口的等级分布。
Matplotlib中的pyplot类提供了一个有用的plot函数来显示这个密度。

 真实世界的数据分布

现在让我们来看看学习时间数据的分布

 学习时间数据的分布与年级的分布有显著差异。
请注意,箱形图的须线仅从6. 0左右开始开始,这表明第一季度的绝大多数数据都高于此值。最小值用o标记,表明它在统计上是一个离群值:一个显著位于分布其余部分范围之外的值。
异常值的出现有多种原因。也许一个学生打算记录“10”小时的学习时间,但输入了“1”,错过了“0”。又或者,这学生平时学习的时候,就是异常的懒!无论哪种方式,这是一个统计异常,并不代表一个典型的学生。让我们看看没有它的分布是什么样的。

 出于学习的目的,我们只是将值1视为真正的离群值并将其排除在外。在真实的世界中,当我们的样本量如此之小时,在没有更多理由的情况下排除极端数据是不寻常的。这是因为我们的样本量越小,我们的抽样越有可能代表整个人口。(Here,人口意味着所有学生的成绩,而不仅仅是我们的22。例如,如果我们对另外1,000名学生的学习时间进行抽样,我们可能会发现,学习不多实际上是很常见的!
当我们有更多的数据可用时,我们的样本变得更可靠。这使得更容易将离群值视为低于或高于大多数数据所在的范围的值。例如,以下代码使用Pandas分位数函数排除低于第0.01百分位数(99%的数据位于该值之上)的观测。

提示:可以通过在高百分位值处定义阈值来消除分布上端的离群值。例如,你可以使用分位数函数来查找0.99百分位数,99%的数据位于该百分位数以下。

去除离群值后,箱形图显示了四个四分位数内的所有数据。请注意,该分布不像坡度数据那样对称。有些学生的学习时间非常长,大约为16小时,但大部分数据都在7到13小时之间。少数极高的值将平均值拉向量表的高端。
让我们看看这个分布的密度。

这种分布称为右偏分布。大量数据位于分布的左侧,由于极端高端的值将均值拉到右侧,因此向右创建了一个长尾。 

方差度量

所以现在我们有一个很好的想法,在年级和学习时间数据分布的中间。然而,我们应该检查分布的另一个方面:数据中有多少可变性?
衡量数据可变性的典型统计量包括:

Range: The difference between the maximum and minimum. There's no built-in function for this, but it's easy to calculate using the min and max functions.
范围:最大值和最小值之间的差值。没有内置的函数,但使用min和max函数很容易计算。
Variance: The average of the squared difference from the mean. You can use the built-in var function to find this.
方差:与平均值的平方差的平均值。您可以使用内置的var函数来找到它。
Standard Deviation: The square root of the variance. You can use the built-in std function to find this.
标准差:方差的平方根。你可以使用内置的std函数来找到它。

 在这些统计数据中,标准差通常是最有用的。它以与数据本身相同的尺度提供数据方差的度量(因此,等级分布的等级点和学习时间分布的小时数)。标准差越高,将分布中的值与分布均值进行比较时的方差就越大;换句话说,数据更加分散。
当使用正态分布时,标准差与正态分布的特定特征一起使用,以提供更好的洞察力。运行以下单元格以查看标准差与正态分布中的数据之间的关系。

 

 

水平线显示在平均值的一个、两个和三个标准差(正或负)内的数据的百分比。
在任何正态分布中:.
大约68.26%的值在平均值的一个标准差内。
大约95.45%的值落在平均值的两个标准差内。
大约99.73%的值落在平均值的三个标准差内。
所以,因为我们知道平均成绩是49.18,标准差是21.74,成绩分布近似正态分布,我们可以计算出68.26%的学生应该达到27.44和70.92之间的成绩。
我们用来了解学生数据变量分布的描述性统计是统计分析的基础。因为它们是探索数据的重要部分,所以DataFrame对象有一个内置的describe方法,它返回所有数值列的主要描述性统计信息。

比较数据 

现在您已经了解了数据集中数据的统计分布,可以检查数据以确定变量之间的任何明显关系。
首先,让我们删除任何包含离群值的行,以便我们拥有代表典型学生班级的样本。我们发现StudyHours列包含一些值极低的离群值,因此我们将删除这些行。

比较数据和分类变量

数据包括两个数值变量(学习时间和成绩)和两个分类变量(姓名和通过)。让我们首先将数值StudyHours列与分类Pass列进行比较,以查看学习的小时数与及格分数之间是否存在明显的关系。
为了进行这种比较,让我们创建箱形图,显示每个可能的Pass值(true和false)的StudyHours分布。

比较数值变量 

现在让我们比较两个数值变量。我们将首先创建一个显示成绩和学习时间的条形图。

图表显示了每个学生的成绩和学习时间,但由于数值在不同的尺度上,因此不容易进行比较。一个等级是以等级点来衡量的(范围从3到97),学习时间以小时来衡量(范围从1到16)。
在处理不同尺度的数值数据时,一种常见的技术是对数据进行归一化,以便值保持其比例分布,但在相同的尺度上进行测量。为了实现这一点,我们将使用一种称为MinMax缩放的技术,该技术将值按比例分布在0到1的范围内。你可以编写代码来应用这种转换,但Scikit-Learn库提供了一个缩放器来为你做这件事。

 将数据标准化后,更容易看到成绩和学习时间之间的明显关系。这不是一个完全匹配的结果,但看起来分数高的学生学习得更多。
因此,学习时间和成绩之间似乎存在相关性。事实上,我们可以使用统计相关性度量来量化这些列之间的关系。

 相关性统计量是一个介于-1和1之间的值,表示关系的强度。大于0的值表示正相关(一个变量的高值往往与另一个变量的高值一致),而小于0的值表示负相关(一个变量的高值往往与另一个变量的低值一致)。在这种情况下,相关值接近于1,显示出学习时间和成绩之间的强正相关。

可视化两个数字列之间明显相关性的另一种方法是使用散点图

 再次,看起来有一个明显的模式,学习时间最长的学生也是成绩最高的学生。
我们可以通过在显示数据总体趋势的图中添加回归线(或最佳拟合线)来更清楚地看到这一点。为此,我们将使用一种称为最小二乘回归的统计技术。
还记得你在学校学习如何解线性方程组的时候,记得线性方程的斜率截距形式看起来像这样:
在这个等式中,y和x是坐标变量,m是直线的斜率,B是y轴截距(直线通过Y轴的位置)。

在学生数据的散点图中,我们已经有了x(StudyHours)和y(Grade)的值,所以我们只需要计算最接近这些点的直线的截距和斜率。然后,我们可以形成一个线性方程,为我们的每个x(StudyHours)值计算该线上的新y值。为了避免混淆,我们将这个新的y值称为f(x)(因为它是基于x的线性方程函数的输出)。原始y(等级)值和f(x)值之间的差是我们的回归线和学生实际等级之间的误差。我们的目标是计算具有最低总体误差的直线的斜率和截距。
具体来说,我们通过对每个点的误差进行平方,并将所有平方误差相加来定义总误差。最佳拟合线是为我们提供平方误差之和的最低值的线,因此称为最小二乘回归。
幸运的是,您不需要自己编写回归计算代码。SciPy包包括一个stats类,它提供了一个linregress方法来为您完成这项艰巨的工作。这将返回斜率方程所需的系数:基于要比较的给定变量样本对的斜率(m)和截距(B)。

  

 

请注意,这一次,代码绘制了两个不同的东西:像以前一样绘制了样本学习时间和成绩的散点图,然后绘制了基于最小二乘回归系数的最佳拟合线。
图上方显示了回归线计算的斜率和截距系数。
该线基于为每个StudyHours值计算的f(x)值。运行以下单元格以查看包含以下值的表:
每个学生的学习时间
每个学生取得的成绩
使用回归线系数计算的f(x)值
计算的f(x)值与实际坡率值之间的误差
有些错误,特别是在极端情况下,是相当大的(高达17.5级以上)。但是,总的来说,这条线非常接近实际成绩。

使用回归系数预测 

 

 

 

 

 

 

 

 

相关文章:

可视化数据

数据科学家会直观呈现数据,以更好地理解数据。 他们可以扫描原始数据、检查摘要度量值(如平均值)或绘制数据图表。 图表是一种可视化数据的强有力方式,数据科学家经常使用图表快速了解适度复杂的模式。 直观地表示数据 绘制图表…...

【Redis】Redis缓存击穿

1. 概述 缓存击穿:缓存击穿问题也叫热点key问题,一个高并发的key或重建缓存耗时长(复杂)的key失效了,此时大量的请求给数据库造成巨大的压力。如下图,线程1还在构建缓存时,线程2,3&…...

厦门凯酷全科技有限公司深耕抖音电商运营

在数字经济飞速发展的今天,抖音电商平台以其独特的社交属性和庞大的用户基础,迅速成为众多品牌和商家的新战场。在这个充满机遇与挑战的市场中,厦门凯酷全科技有限公司凭借其专业的服务、创新的理念和卓越的执行力,成为了抖音电商…...

六西格玛DMAIC在企业得项目管理中有什么作用

六西格玛(Six Sigma)是一种以数据为基础的管理方法,旨在通过减少缺陷和变异来提高过程质量和效率。DMAIC 是六西格玛中一种常用的改进方法论,适用于现有过程的改进。DMAIC 代表五个阶段:定义(Define&#x…...

vscode借助插件调试OpenFoam的正确的.vscode配置文件

正确的备份文件位置: /home/jie/桌面/理解openfoam/正确的调试爆轰单进程案例/mydebugblastFoam 调试爆轰案例流体 并且工作区和用户区都是openfoam-7版本 问题:F5以debug模式启动后不停在断点 解决方法: 这里备份一下.vsode正确的配置&…...

SpringBoot整合JWT(JSON Web Token)生成token与验证

目录 JWT 什么是JWT JWT使用流程 确定要传递的信息: 生成JWT: JWT传输: 客户端保存JWT: 客户端发送JWT: 服务器验证JWT: 服务器响应: Token的使用示例: 工具类 R结果集 返回一个生成的token 创建拦截器 JWT 什么是JWT JWT(JSON Web Token)是是目前最…...

把帕拉丁需要的.rom文件转成.bin

# 输入文件名 input_file_name = fw_payload.bin.rom # 输出文件名 output_file_name = fw_payload.bin.rom2 # 打开输出文件,准备写入翻转后的十六进制字符串 with open(output_file_name, w) as output_file: # 打开输入文件读取十六进制字符串 with open(input_f…...

Nginx 缓存那些事儿:原理、配置和最佳实践

Nginx 缓存那些事儿:原理、配置和最佳实践 在当今的互联网世界,网站的访问量和数据处理量不断攀升,如何确保用户能够快速、稳定地访问我们的网站,已经成为每个运维工程师面临的挑战。幸运的是,Nginx 作为一款高性能的…...

vue发展史

Vue.js发展史 Vue.js是一个渐进式JavaScript框架,自发布以来受到了广泛的关注和喜爱。以下是Vue.js的发展史: 1. 起源(2013年) Vue.js的创始人尤雨溪(Evan You)在2013年开始构思这个项目。当时&#xff0…...

基于Java和Vue开发的校园跑腿软件校园跑腿小程序系统源码

市场前景 学生需求多样化: 随着校园生活节奏的加快和学生需求的多样化,跑腿服务逐渐成为一种新兴的商业模式。学生群体对于便捷、高效的日常服务需求不断增加,如外卖送餐、快递代取、文件传递等。市场规模持续增长: 大学校园作为…...

MySQL(五)--- 事务

1、CURD操作不加控制时,可能会出现什么问题 即:类似于线程安全问题,可能会导致数据不一致问题。 因为,MySQL内部本身就是多线程服务。 1.1、CURD满足什么属性时,才能避免上述问题 1、买票的过程得是原子的吧。 2、买票互相应该不能影响吧。 3、买完票应该要永久有效吧。…...

llm chat场景下的数据同步

背景 正常的chat/im通常是有单点登录或者利用类似广播的机制做多设备间内容同步的。而且由于长连接的存在,数据同步(想起来)相对简单。而llm的chat在缺失这两个机制的情况下,没见到特别好的做到了数据同步的产品。 llm chat主要两…...

机器学习经典算法

机器学习经典算法学习和分享。 k近邻算法 线性回归 梯度下降法 PCA主成分分析法 多项式回归 逻辑回归 支撑向量机SVM 决策树 随机森林 评价分类指标...

Scala中的泛型

类型参数 ---- 泛型(数据类型是变化的) (1) 可以有多个 (2) 名称合法就行&#xff0c;没有固定的&#xff0c;一般用T(Type) 在Scala中&#xff0c;用[]表示。在Java中用<>表示 1. 与数据类型的区别 List是数据类型&#xff0c;表示一个列表。[Int]表示泛型&#xff0c;它…...

数据分析特征标准化方法及其Python实现

数据分析特征标准化方法及其Python实现 1、概述 在数据分析中,对特征进行标准化主要是: 1、消除量纲影响 不同特征可能具有不同的量纲和数量级。 例如,一个特征可能是以米为单位的长度,而另一个特征可能是以秒为单位的时间。直接使用这些具有不同量纲的原始数据进行分析…...

UnityShaderLab 实现程序化形状(一)

1.实现一个长宽可变的矩形&#xff1a; 代码&#xff1a; fixed4 frag (v2f i) : SV_Target{return saturate(length(saturate(abs(i.uv - 0.5)-0.13)))/0.03;} 2.实现一个半径可变的圆形&#xff1a; 代码&#xff1a; fixed4 frag (v2f i) : SV_Target{return (distance(a…...

前端数据安全防护(控制台)

目录 前言 禁用右键菜单 禁用快捷键 监控控制台 完整逻辑 前言 前端的数据在浏览器中一直处于一个裸奔的状态&#xff0c;只要是稍微懂一点计算机的人&#xff0c;都可以在浏览器的控制台中拿到前端页面的所有数据&#xff0c;包括和后端的交互数据。为了…...

自己玩虚拟机:vagrant,virtual box,centos

vagrant 访问Vagrant官网 https://www.vagrantup.com/ 点击Download Windows&#xff0c;MacOS&#xff0c;Linux等 选择对应的版本 AMD64 (x86_64) I686 (x86) 傻瓜式安装 命令行输入vagrant&#xff0c;测试是否安装成功 vagrant -v 可以查看当前版本 virtual box 访…...

Frida框架HOOK RegisterNatives函数

使用Frida框架HOOK RegisterNatives函数&#xff0c;获取动态注册的函数地址、名称、签名、class名称、所属的so文件名称、so文件加载基址、函数在so文件中的地址。 废话不多说&#xff0c;上代码&#xff1a; 运行命令&#xff1a;frida -U -f in.****** -l RegisterNatives…...

[创业之路-189]:《华为战略管理法-DSTE实战体系》-2- 生存与发展的双重旋律:短期与长期、战术与战略的交响乐章

目录 生存与发展的双重旋律&#xff1a;短期与长期、战术与战略的交响乐章 一、生存&#xff1a;短期视角下的战术布局 二、发展&#xff1a;长期视角下的战略规划 三、短期与长期、战术与战略的融合与平衡 四、结语&#xff1a;在生存与发展的交响曲中奏响辉煌 生存与发展…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...