使用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导入数据库

一路continue

有一份追加数据

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

数据清洗

删除重复数据

分析:
先分组、再计数、再筛选、再去重

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'
;
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于MySQL数据清洗,有一些常用的工具和方法可以帮助您完成任务。以下是一些常用的MySQL数据清洗工具和技术: 1. MySQL自带工具MySQL本身提供了一些功能强大的命令行工具,如mysqldump、mysqlimport、mysqlcheck等,可以用于备份、导入、检查和修复MySQL数据库。 2. 数据库管理工具:诸如Navicat for MySQL、HeidiSQL、MySQL Workbench等数据库管理工具,提供了可视化界面和各种功能,包括数据导入导出、数据编辑、查询优化等,方便进行数据清洗和处理。 3. 编程语言:使用编程语言(如Python、Java等)配合MySQL数据库驱动来进行数据清洗是一种常见的方法。您可以使用编程语言提供的丰富库和函数来处理和清洗数据,并将结果写回到MySQL数据库中。 4. ETL工具:ETL(Extract, Transform, Load)工具是常用的数据清洗和处理工具。一些常见的ETL工具如Talend、Pentaho Data Integration等,它们提供了图形化界面和强大的数据转换和清洗功能,可以与MySQL数据库进行集成。 5. 数据清洗库:还有一些专门用于数据清洗的库和框架,如Apache Spark、Apache Hadoop等,它们提供了分布式计算和大规模数据处理能力,可以用于对MySQL数据库中的大量数据进行清洗和转换。 这些工具和方法可以根据您的需求和技术背景来选择使用,希望对您有所帮助!如果您有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值