暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何用PolarDB for PostgreSQL做数据分析(3)

Kellen 2023-07-25
348

3、其他预置数据

如前文演示中看到的,dataset目录下面还有其他预先准备好的CSV数据,都可以手工创建表,然后用COPY命令把数据导进来。为了方便使用,PolarDB的插件其实还额外提供了一批以load开头的函数,执行这些函数就能自动创建数据库的表,并把CSV的数据导入到表中。如下图所示:


image.png


目前插件里包含了这5份数据,分别是波士顿房价数据、鸢尾花数据、糖尿病数据、手写数字数据,以及苹果公司股价数

据。其中房价数据、糖尿病数据和股价数据可以用来做回归分析,另外两份数据可以用来做分类分析。


(二)处理数据


1、定义缺失值


鸢尾花这150条数据是非常完整并且干净的数据,如前文所说,现实工作中的数据往往会有许多缺失值或者异常值,需要

先对数据做清洗。比方说,如果我们现在插入一条新的鸢尾花的样本,但部分的数据缺失了,希望分析工具在数据缺失的

时候自动填充上默认值(例如0)。PolarDB里面有一个数据库字段默认值的功能,在数据库字段缺失的时候,就会自动

使用默认值来填充。


image.png


如上图所示,给字段加默认值有两种方法:第一种是在表还不存在的时候,创建表的时候直接定义字段的默认值,就像

图中左边的代码一样,也用到了CREATE TABLE;第二种是表已经创建好了,想给已经存在的字段添加默认值或者修改默认值,这时候就需要用到另一个命令,ALTER TABLE,代码就像图中右边一样,给刚刚创建的表前4个字段全部加上默认值。


2、使用缺失值


定义好了默认值,接下来就可以通过INSERT命令来插入默认值了。


image.png


如上图所示,PolarDB中有两种INSERT方式可以用到默认值:第一种就像左边的代码,在INSERT的时候,不指定有默认值的列;第二种,指定了列,但values里面用default关键字。这两种方式都能用上默认值,但用COPY导入数据的话,能

不能用上默认值呢?我们来测试一下。

再看一下flower表的定义:


image.png


其中每个字段的默认值是空(即null)。尝试插入一行脏数据,除了品类,其他的字段都不指定:


image.png


可以看到现在插进来的这行数据里面,其他字段的值都是空的。接着用Alter Table去添加数据库字段的默认值:`alter table flowers alter column sepal_length set default 0, alter column sepal_width set default 0, alter column patal_length set default 0, alter column patal_width set default 0`。再次查看flowers表的定义:


image.png


现在字段的默认值都已经有了,全部都是0。然后再试试重新insert一条bad2的脏数据:


image.png


此时,bad2的其他字段都是0。可以再试试另外一种用default关键词的insert的方式:


image.png


可以看到bad2与bad3都使用了默认值0。最后再测试一下COPY命令是否可以用到默认值。首先清空数据:


image.png


然后编辑test.csv,手工加入3行脏数据。最后通过COPY命令,把test.csv的数据导进来:


image.png


一共导入了153行,但脏数据的字段依然为空:


image.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论