使用Mysql工具进行数据清洗

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 使用Mysql工具进行数据清洗

数据资源


https://gitee.com/pingfanrenbiji/resource/blob/master/%E9%87%91%E8%9E%8D%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/%E7%AC%AC%E4%B8%80%E7%AB%A0/database1/transaction_info.csv


将csv导入数据库


image.png


image.png


image.png


image.png


image.png


有一份追加数据


https://gitee.com/pingfanrenbiji/resource/blob/master/%E9%87%91%E8%9E%8D%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/%E7%AC%AC%E4%B8%80%E7%AB%A0/database1/insert.csv


insert.csv数据字段和transaction_info.csv数据字段一致


将insert.csv里面的数据追加到transaction_info表中


同样的导入方式 导入insert.csv


image.png


image.png


image.png


数据清洗


删除重复数据


分析:
先分组、再计数、再筛选、再去重
select Transaction_index from transaction_info GROUP BY Transaction_index  HAVING count(Transaction_index)>1;
delete from transaction_info where Transaction_index='2009-01-02_0039';


修改null值为0


# 更新的逻辑是 先查找 再更新
update transaction_info set Amount=0,Last_Amount=0 where Amount is null;
update transaction_info set Amount=0,Last_Amount=0 where Last_Amount is null;


修正异常值


# 查询国家的异常值 对国家进行分组 然后统计个数 
select Country,count(Country) from transaction_info GROUP BY Country;
# 从而可以找到异常值
Country in (1,2,3)
select * from transaction_info where Country in (1,2,3);
# 获取城市为Houston的国家信息 查看该城市属于哪个国家
SELECT DISTINCT Country FROM transaction_info WHERE City = 'Houston';
# 将异常值更新为正常的国家名称
UPDATE transaction_info SET Country = 'United States' WHERE City = 'Houston' AND Country = '3';


熟练使用mysql常用句式


  • 数据


https://gitee.com/pingfanrenbiji/resource/tree/master/%E9%87%91%E8%9E%8D%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/%E7%AC%AC%E4%B8%80%E7%AB%A0/database2


  • 案例


需求:


1、购买了产品1的用户数据 标是查询用户信息 所以用户表是基础表
2、Trans_Account_age(交易日期距离注册日期的自然月间隔)、days_since_last_login(交易距离上次登录的天数)
3、分组 在agegroup字段准确分组Trans_Account_age数据,以 “0~1”表示0至1(包含1), “1~12”表示1至12(包含12), “12+”表示12以上


SQL:


SELECT U.* ,T.*
, TimeStampDiff (MONTH, U.Account_Created, T.Transaction_date) AS Trans_Account_age #交易日期距离注册日期的自然月间隔
, TimeStampDiff (DAY, T.Last_login, T.Transaction_date) AS days_since_last_login #交易距离上次登录的天数
, CASE 
 WHEN TimeStampDiff (MONTH, U.Account_Created, T.Transaction_date) IN (0,1) THEN '0~1'
 WHEN TimeStampDiff (MONTH, U.Account_Created, T.Transaction_date) > 1 AND TimeStampDiff (MONTH, U.Account_Created, T.Transaction_date) <= 12 THEN '1~12'
 WHEN TimeStampDiff (MONTH, U.Account_Created, T.Transaction_date) > 12 THEN '12+'
 ELSE ''
 END AS agegroup
FROM user_info AS U
LEFT JOIN transaction_info AS T ON T.ID = U.ID
WHERE T.Product = 'Product1'
;
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
5月前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
1039 4
|
2月前
|
SQL 关系型数据库 MySQL
MySQL 窗口函数详解:分析性查询的强大工具
MySQL 窗口函数从 8.0 版本开始支持,提供了一种灵活的方式处理 SQL 查询中的数据。无需分组即可对行集进行分析,常用于计算排名、累计和、移动平均值等。基本语法包括 `function_name([arguments]) OVER ([PARTITION BY columns] [ORDER BY columns] [frame_clause])`,常见函数有 `ROW_NUMBER()`, `RANK()`, `DENSE_RANK()`, `SUM()`, `AVG()` 等。窗口框架定义了计算聚合值时应包含的行。适用于复杂数据操作和分析报告。
157 11
|
8月前
|
SQL 关系型数据库 MySQL
MySQL数据库-概括与常用图形管理工具
MySQL数据库-概括与常用图形管理工具
|
4月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
149 3
|
5月前
|
SQL 缓存 关系型数据库
MySQL高级篇——性能分析工具
MySQL的慢查询日志,用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long-query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为 10,意思是运行10秒以上(不含10秒)的语句,认为是超出了我们的最大忍耐时间值。它的主要作用是,帮助我们发现那些执行时间特别长的 SOL 查询,并且有针对性地进行优化,从而提高系统的整体效率。当我们的数据库服务器发生阻塞、运行变慢的时候,检查一下慢查询日志,找到那些慢查询,对解决问题很有帮助。
MySQL高级篇——性能分析工具
|
5月前
|
安全 关系型数据库 MySQL
Navicat工具设置MySQL权限的操作指南
通过上述步骤,您可以使用Navicat有效地为MySQL数据库设置和管理用户权限,确保数据库的安全性和高效管理。这个过程简化了数据库权限管理,使其既直观又易于操作。
643 4
|
6月前
|
SQL 关系型数据库 MySQL
推荐一款高颜值的MySQL管理工具:Sequel Pro
推荐一款高颜值的MySQL管理工具:Sequel Pro
118 9
|
6月前
|
SQL 监控 关系型数据库
使用 pt-query-digest 工具分析 MySQL 慢日志
【8月更文挑战第5天】使用 pt-query-digest 工具分析 MySQL 慢日志
160 3
使用 pt-query-digest 工具分析 MySQL 慢日志
|
6月前
|
SQL 关系型数据库 MySQL
在Linux中,mysql 数据备份工具有哪些?
在Linux中,mysql 数据备份工具有哪些?