全栈 - 6 数据 解读数据结构和类型
这是全栈数据工程师养成攻略系列教程的第六期:6 数据 解读数据结构和类型。
数据的结构
在DT时代,我们的生活中随处都会接触到各种各样的数据。以地铁数据为例,可以分为静态数据和动态数据两大类。
- 静态数据:包括线路信息和站点信息等,例如一共有多少条线路,每条线路包含哪些站点,各个站点的名称、首末班车时间等信息。这类数据一般不包含时间戳,更新频率较低,数据量整体较少;
- 动态数据:主要是地铁的刷卡记录,乘客在进站和出站时的刷卡操作都会产生一条刷卡记录。这类数据一般包含时间戳,用于说明数据产生的时间,并且是不断产生的。
时间戳是指从1970年1月1日0时0分0秒到某一时刻所经历的秒数。对于同一个时刻,不同的人会有不同的表述方式,即不同格式的时间文本。通过时间戳,我们可以用整数或浮点数来表示任意一个时刻,从而便于代码表示和计算。
大多数数据是以行和列的结构表示的。每一行表示一条记录,或者称为一条观测,例如在地铁线路数据里,每一行就表示一条线路的信息。每一列表示一个字段,或者称为一项属性,例如在地铁线路数据里,可能包含“线路名称”、“运营时间”、“线路颜色”等列。
因此可以用二维数组或二维表的概念来表示大多数数据,就像Excel中的表格,以及关系型数据库中的数据表等。
数据的类型
TXT
是最常见的文本数据,里面存放的是纯文本,可以记录任意内容,每行的长度是可变的,文件的总行数也是任意的,因此非常自由。
CSV
是Comma Seperated Value,即逗号分隔值。可以将CSV理解为一种文本形式表示的二维表,每一行代表一条记录,每条记录的字段数量是一致的,字段之间以逗号分隔。CSV可以包含一行表头,用于说明每个字段的名称,因此CSV和Excel中的表格、关系型数据库中的数据表都是类似的,以下就是一个简单的例子。
id,name,gender,age
1,Honlan,male,24
2,Baby,female,22
JSON
是一种非常通用的数据类型,本质上是一种键值对字符串,在前端、后端等多种场景多门语言中都可以加载使用。如果将CSV理解为Python中的二维数组即嵌套的列表,那么就可以将JSON理解为Python中的字典,以下就是一个简单的例子。
{"id": 1, "name": "Honlan", "gender": "male", "age": 24}
总的来说,TXT、CSV和JSON里存的都是文本,不同的只是文本的组织结构,以及文件命名时分别使用 .txt
、 .csv
和 .json
作为后缀名。
SQL
是关系型数据库文件,以最常用的 MySQL
数据库为例,MySQL中的数据库和数据表都可以导出为 .sql
文件用于数据备份,而 .sql
文件也可以导入已有的数据库和数据表中用于数据恢复。
后续章节中会介绍如何使用MAMP和WAMP在个人电脑上搭建Web环境,并详细讲解和MySQL数据库相关的内容。
视频链接:解读数据结构和类型