像Excel一样使用SQL进行数据分析(1)

Excel是数据分析中最常用的工具,本篇文章通过mysql与excel的功能对比介绍如何使用mysql完成excel中的数据生成,数据清洗,预处理,以及最常见的数据分类,数据筛选,分类汇总,以及数据透视等操作。这里我们使用SQLyog工具进行操作。

mysql-logo

在开始之前先介绍几个先介绍几个需要了解的命令,包括显示数据库列表,选定数据库,显示数据库中的表以及创建视图。其中前三个命令可以浏览和定位要操作的数据库和数据表。第四个命令可以保持查询操作的结果。

#显示数据库
SHOW DATABASES;
 
#选定数据库
USE 数据库名称;
 
#显示数据表
SHOW TABLES FROM 数据库名称;
 
#创建视图
CREATE VIEW 数据库名称 AS (SELECT * FROM ...);

 

1,生成数据表

第一部分是生成数据表,常见的生成方法有两种,第一种是导入外部数据,第二种是直接写入数据。 Excel中的文件菜单中提供了获取外部数据的功能,支持数据库和文本文件和页面的多种数据源导入。Mysql中同样支持导入外部数据和直接写入数据。

获取外部数据

导入外部数据
SQLyog提供导入数据的向导,按照界面的提示信息可以快速完成数据的导入工作。

导入外部数据

创建数据表

另一种方法是通过直接写入数据来生成数据表,excel中直接在单元格中输入数据就可以,mysql中通过下面的代码来实现。生成数据表包含两步操作,第一步创建字段,第二步输入数据。新生成的数据表一共有6行数据,每行有6个字段。在数据中我们特意设置了一些空值和有问题的字段,例如包含空格等。后面将在数据清洗步骤进行处理。

#创建数据表字段
CREATE TABLE data1(id INT(10), Record_date DATE, city VARCHAR(255),age VARCHAR(255), category VARCHAR(255), price FLOAT(10));
 
SELECT * FROM data1;

创建图表1表头

#插入数据
INSERT INTO 
data1(id, Record_date, city ,age, category, price)
VALUES 
(1001, 20130102, 'Beijing ',23, '100-A', 1200),
(1002, 20130203, 'SH', 44,'100-B', 'null'),
(1003, 20130305, 'guangzhou', 54,'110-A', 2133),
(1004, 20130403, 'Shenzhen', 32,'110-C', 5433),
(1005, 20130501, 'shanghai', 34,'210-A', ''),
(1006, 20130603, 'BEIJING', 32,'130-F', 4432);
 
SELECT * FROM data1;

表1

#创建数据表data2
CREATE TABLE data2(id INT(10),gender VARCHAR(255),pay VARCHAR(255), mp VARCHAR(255));
 
SELECT * FROM data2;

创建图表2表头

#插入值
INSERT INTO 
data2(id, gender,pay, mp)
VALUES 
(1001, 'male', 'Y',10),
(1002, 'female', 'N', 12),
(1003, 'male', 'Y', 20),
(1004, 'female', 'Y', 40),
(1005, 'male', 'N', 40),
(1006, 'female', 'Y', 40),
(1007, 'male', 'N', 30),
(1008, 'female', 'Y', 20);
 
SELECT * FROM data2;

表2

2,数据表检查

第二部分是对数据表进行检查,mysql中处理的数据量通常会比较大,我们无法一目了然的了解数据表的整体情况,必须要通过一些方法来获得数据表的关键信息。数据表检查的另一个目的是了解数据的概况,例如整个数据表的大小,数据格式和具体的数据内容。为后面的清洗和预处理做好准备。

数据维度(行列)

Excel中可以通过CTRL+向下的光标键,和CTRL+向右的光标键来查看行号和列号。mysql中使用特定的函数来查看数据表的维度,也就是行数和列数。下面是具体的代码。

#查看数据条数
SELECT COUNT(*) FROM data1;

查看行数

#查看数据表2的字段数量
SELECT COUNT(*) AS column_num FROM information_schema.`COLUMNS` WHERE TABLE_NAME='data2';

查看数据表2的字段数量

数据表信息

使用DESC命令查看数据表的整体信息,这里返回的信息比较多,包括列名称,数据格式和是否允许为空等信息。

#查看数据表信息
DESC data1;

查看数据表信息

查看空值

Excel中查看空值的方法是使用“定位条件”功能对数据表中的空值进行定位。“定位条件”在“开始”目录下的“查找和选择”目录中。

查看空值

Mysql中可以使用IS NULL来判断空值。在我们的数据表中要判断price为0的字段,下面我们分别给出判断数据表空值和0值的代码。

#查看price为空的数据
SELECT * FROM data1 WHERE price IS NULL;
#查看price为0的数据
SELECT * FROM data1 WHERE price=0;

查看price为0的数据

查看唯一值

Excel中查看唯一值的方法是使用“条件格式”对唯一值进行颜色标记。mysql中通过在字段前使用DISTINCT函数查看唯一值。

查看唯一值

#查询单列唯一值
SELECT DISTINCT (city)FROM data1;

查询单列唯一值

查看列名称

Mysql中使用COLUMNS函数用来单独查看数据表中的列名称。

#查看数据表列名称
SHOW COLUMNS FROM data1;

 

查看前3行数据

Mysql中LIMIT用来限定查询结果的输出行数,我们可以自己设置值来确定查看的行数。下面的代码中设置查看数据表的前3行数据。

#查看数据表前3行
SELECT * FROM data1 LIMIT 3;

查看数据表前3行

下一篇文章,我们将介绍第3,4部分的内容,分别为请忽视清洗及数据预处理。请朋友们继续关注。

—【所有文章及图片版权归 蓝鲸(王彦平)所有。欢迎转载,但请注明转自“蓝鲸网站分析博客”。】—

Comments

  1. duohappy says:

    谢谢分享这么好的文章!

duohappy进行回复 取消回复

*