【数据科学】一文彻底理清数据、数据类型、数据结构的概念

一、什么是数据?

       入门数据学科,首先第一步要认识数据什么,可能大多数人都无法对数据做一个准确的定义,在我们印象中,提到数据首先头脑浮现的是数据表格,是一堆堆数字,那么数据就是数字吗?显然二者不能完全划等号,我们来看一下度娘对数据定义的解读。

       数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的的原始素材。

      数据是信息的表现形式和载体,可以是文字、符号、数字、语音、图像、视频等。数据和信息是不可分离的,数据是信息的表达,信息是数据的内涵,数据本身没有意义,数据只有对实体行为产生影响时才成为信息。

       数据可以是连续的值,比如声音、图像,称为模拟数据(连续数据)。也可以是离散的,如符号、文字,称为数字数据(离散数据)。

       在计算机系统中,数据以二进制信息单元0、1的形式表示。

图片

       通过以上解读,我们可以发现,我们印象中的数字只是数据的一种形式,广义的数据包含的内容很多,文字,语音,图像,视频都是数据定义的范畴,因为无论哪种形式,它们到计算机里面都是0和1,只是编码的形式有差别,这样说来,数据挖据,计算机视觉,自然语言处理等都是数据科学的范畴。

二、什么是数据类型?

        在学任何一门编程语言的开始,我们都要学习相关的数据类型,那么数据类型究竟又是如何定义的呢?

        数据类型在数据结构中的定义是一组性质相同的值的集合以及定义在这个值集合上的一组操作的总称。

       变量是用来存储值的所在处,它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。在声明变量时也可指定它的数据类型,所有变量都具有数据类型,以决定能够存储哪种数据。

       在学python语言时,有一个问题一直困扰着我,列表元组这些到底是数据类型还是数据结构呢?后来读了一些博客,发现数据类型主要包括原子类型和结构类型:

        原子类型是指一种值的集合以及定义在值上的一组操作,比如在python中,有整数型(int),浮点数型(float),布尔型(bool),字符串(str)等,这是我们印象中的常规表现形式; 

       结构类型(复合类型)是指一种数据结构以及定义在结构上的一种操作,是数据类型的另一种表现形式,是通过原子类型封装的更复杂的数据类型,比如在面向对象的编程语言python中,列表(List),字典(Dict),元组(Tuple)等都是这种类型。

图片

        因此,严格意义上来讲,列表元组这些应该是python内置的复合数据类型。

三、什么是数据结构?

       从我的困惑可以看出,数据类型和数据结构之间存在联系但也有一定的区别。

       数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。包括逻辑结构和物理结构。

       逻辑结构描述数据之间的相互关系,按照逻辑结构划分,主要分为线性结构和非线性结构,线性结构数据元素是一对一的关系,非线性结构数据元素是一对多和多对多的关系。

      常见的线性结构有数组(Array)、链表(Linked List)、栈(Stack)、队列(Queue),常见的非线性结构有树(Tree),堆(Heap),图(Graph),散列表(Hash)。

图片

      物理结构描述数据具体在内存中的存储(如:顺序结构、链式结构、索引结构、哈希结构)等。

       最后需要指出的是,数据类型和数据结构是基于某种编程语言的,不同的计算机语言(C、python、C#等)它们的数据类型和数据结构略有不同,但本质差异不大。

四、小结

      入门数据科学,第一步就是认识数据,了解数据类型和数据结构,数据类型和数据结构是依赖于编程语言的,对数据类型和数据结构有充分的认识,对以后数据分析和挖掘非常有帮助。

本期内容就到这里,我们下期再见!需要数据集和源码的小伙伴可以关注私信作者或者底部公众号添加作者微信!

作者简介:

读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。

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

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

相关文章

SpringBoot 2.0 中默认 HikariCP 数据库连接池原理解析

作为后台服务开发,在日常工作中我们天天都在跟数据库打交道,一直在进行各种CRUD操作,都会使用到数据库连接池。按照发展历程,业界知名的数据库连接池有以下几种:c3p0、DBCP、Tomcat JDBC Connection Pool、Druid 等&am…

阿里云服务器记录

阿里云服务器记录 CentOS 8.4 64位 SCC版 CentOS 7.9 64位 SCC版 CentOS 7.9 64位 CentOS 7.9 64位 UEFI版 Alibaba Cloud Linux Anolis OS CentOS Windows Server Ubuntu Debian Fedora OpenSUSE Rocky Linux CentOS Stream AlmaLinux 阿里云服务器有个scc版,这个…

Flask+Mysql项目docker-compose部署(Pythondocker-compose详细步骤)

一、前言 环境: Linux、docker、docker-compose、python(Flask)、Mysql 简介: 简单使用Flask框架写的查询Mysql数据接口,使用docker部署,shell脚本启动 优势: 采用docker方式部署更加便于维护,更加简单快…

如何在Go中使用模板

引言 您是否需要以格式良好的输出、文本报告或HTML页面呈现一些数据?你可以使用Go模板来做到这一点。任何Go程序都可以使用text/template或html/template包(两者都包含在Go标准库中)来整齐地显示数据。 这两个包都允许你编写文本模板并将数据传递给它们,以按你喜欢的格式呈…

“C语言“——scanf()、getchar() 、putchar()、之间的关系

scanf函数说明 scanf函数是对来自于标准输入流的输入数据作格式转换,并将转换结果保存至format后面的实参所指向的对象。 而const char*format 指向的字符串为格式控制字符串,它指定了可输入的字符串以及赋值时转换方法。 简单来说给一个打印格式(输入…

【并发编程篇】源码分析,手动创建线程池

文章目录 🛸前言🌹Executors的三大方法 🍔简述线程池🎆手动创建线程池⭐源码分析✨代码实现,手动创建线程池🎈CallerRunsPolicy()🎈AbortPolicy()🎈DiscardPolicy()🎈Dis…

LNPMariadb数据库分离|web服务器集群

LNP&Mariadb数据库分离|web服务器集群 网站架构演变单机版LNMP独立数据库服务器web服务器集群与Session保持 LNP与数据库分离1. 准备一台独立的服务器,安装数据库软件包2. 将之前的LNMP网站中的数据库迁移到新的数据库服务器3. 修改wordpress网站配置…

2023.12.24 关于 Redis 中 String 类型内部编码 及 应用场景

目录 String 类型内部编码 3 种内部编码方式 String 类型应用场景 Cache 缓存 键名命名规则 计数(Counter) 共享会话(Session ) 手机验证码 总结 String 类型内部编码 3 种内部编码方式 int:用来表示 64 位 —…

vue3菜单权限管理实现

前提 你的菜单是根据路由动态生成的,具体可以参考这篇博客对el-menu组件进行递归封装(根据路由配置动态生成) 描述 首先将路由分为常量路由constantRoute(所有用户都有的路由)和异步路由asyncRoute(需要动…

Gradle 插件

自定义Gradle插件 - 简书

小天使的小难题:新生儿疝气的关注与温馨呵护

引言: 新生儿疝气是一种在出生后可能出现的常见情况,虽然通常不会造成长期影响,但对于家长而言,了解如何正确应对新生儿疝气是至关重要的。本文将深入探讨新生儿疝气的原因、症状,以及家长在面对这一问题时应该采取的…

1224. 交换瓶子(蓝桥杯/图论)

题目: 1224. 交换瓶子 - AcWing题库 输入样例1: 5 3 1 2 5 4输出样例1: 3输入样例2: 5 5 4 3 2 1输出样例2: 2 思路:图论 1.将对应的位置与当前的瓶子序列相连形成环。 2.最少交换次数能形成的最多…

Vue中的事件委托(事件代理)使用方法介绍

事件委托(事件代理) 将原本需要绑定在子元素上的事件监听器委托在父元素上,让父元素充当事件监听的职务。 事件委托是一种利用事件冒泡的特性,在父节点上响应事件,而不是在子节点上响应事件的技术。它能够改善性能&a…

如何理解JDK、JRE、JVM区别与联系

摘要:JDK是 Java 语言的软件开发工具包(SDK)。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。 一、JDK JDK(Ja…

【【迭代16次的CORDIC算法-verilog实现】】

迭代16次的CORDIC算法-verilog实现 -32位迭代16次verilog代码实现 CORDIC.v module cordic32#(parameter DATA_WIDTH 8d32 , // we set data widthparameter PIPELINE 5d16 // Optimize waveform)(input …

第十四章Java博客

lambda就是数学中的“λ”的读音,lambda表达式是基于λ演算而得名的,因为lambda抽象(lambda abstraction)表示一个匿名的函数,于是开发语言也将lambda表达式用来表示匿名函数,也就是没有函数名字的函数。C#…

maven管理工具使用package打包的时候无法将lib文件夹下的第三方jar包打入,上线打jar包后运行异常问题

问题描述&#xff1a; 调用第三方接口的时候通过手动引入了第三方的两个jar包到我本项目的lib文件夹下&#xff0c;并在pom文件添加入下配置&#xff1a; <dependency><groupId>cn.xxxx.xxxx.core</groupId><artifactId>xxxx-core</artifactId>…

Spring Boot 中实现跨域的几种方式

前言 在现代Web应用中&#xff0c;由于安全性和隐私的考虑&#xff0c;浏览器限制了从一个域向另一个域发起的跨域HTTP请求。解决这个问题的一种常见方式是实现跨域资源共享&#xff08;CORS&#xff09;。Spring Boot提供了多种方式来处理跨域请求&#xff0c;本文将介绍其中的…

C语言字符串处理提取时间(ffmpeg返回的时间字符串)

【1】需求 需求&#xff1a;有一个 “00:01:33.90” 这样格式的时间字符串&#xff0c;需要将这个字符串的时间值提取打印出来&#xff08;提取时、分、秒、毫秒&#xff09;。 这个时间字符串从哪里来的&#xff1f; 是ffmpeg返回的时间&#xff0c;也就是视频的总时间。 下…

vs快捷键

ctrlMo 折叠代码块 ctrlML 打开代码块