layoffs
收藏资源简介:
该数据集包含公司裁员的相关信息,包括公司名称、位置、行业、裁员人数、裁员百分比、裁员日期、公司阶段、国家以及筹集的资金(以百万计)。数据集经过清理和标准化,以确保数据的准确性和一致性。
This dataset contains information related to corporate layoffs, including company name, location, industry, number of layoffs, layoff percentage, layoff date, company stage, country, and funds raised (in millions). The dataset has been cleaned and standardized to ensure data accuracy and consistency.
Layoffs Data Cleaning in MySQL
数据集概述
作者
- 作者: Abdullah Akintobi
- 数据库管理系统: MySQL
- 发布日期: 2024年11月12日
项目目标
- 使用MySQL清理和标准化
layoffs数据集。 - 主要过程包括数据建模、数据探索、数据清理和数据标准化。
- 目标是创建一个干净、标准化的数据集,消除重复、不一致和空值,以便进行准确的裁员数据分析。
数据建模
数据库和表创建
-
数据库: 创建了一个名为
world_layoffs的专用数据库。 sql CREATE DATABASE world_layoffs; -
表结构: 创建了一个名为
layoffs的表,包含以下列:company: 公司名称location: 公司所在地industry: 行业total_laid_off: 裁员人数percentage_laid_off: 裁员百分比date: 裁员日期stage: 公司阶段country: 公司所在国家funds_raised_millions: 筹集资金(百万) sql CREATE TABLE layoffs (companyTEXT,locationTEXT,industryTEXT,total_laid_offINT DEFAULT NULL,percentage_laid_offFLOAT DEFAULT NULL,dateTEXT,stageTEXT,countryTEXT,funds_raised_millionsINT DEFAULT NULL );
-
数据备份: 在任何转换之前,将原始数据集备份到
layoffs_copy表中。 sql CREATE TABLE layoffs_copy LIKE layoffs; INSERT INTO layoffs_copy SELECT * FROM layoffs;
数据探索
基本数据洞察
-
随机样本预览: 选择10个随机行以了解数据布局。 sql SELECT * FROM layoffs_copy ORDER BY RAND() LIMIT 10;
-
行数验证: 验证总行数。 sql SELECT COUNT(*) AS row_num FROM layoffs_copy;
-
重复检查: 使用窗口函数基于关键字段识别重复行。 sql WITH duplicate AS ( SELECT *, ROW_NUMBER() OVER ( PARTITION BY
company,location,industry,total_laid_off,percentage_laid_off,date,stage,country,funds_raised_millions) AS dub_row_num FROM layoffs_copy ) SELECT * FROM duplicate WHERE dub_row_num > 1;
数据清理
重复删除和列调整
-
创建清理表: 创建新表
layoffs_clean,并添加行号以识别重复。 sql CREATE TABLE layoffs_clean AS SELECT *, ROW_NUMBER() OVER ( PARTITION BYcompany,location,industry,total_laid_off,percentage_laid_off,date,stage,country,funds_raised_millions) AS dub_row_num FROM layoffs_copy; -
删除重复记录: 删除已识别的重复记录。 sql DELETE FROM layoffs_clean WHERE dub_row_num > 1;
-
结构清理: 删除临时重复标识符列。 sql ALTER TABLE layoffs_clean DROP COLUMN dub_row_num;
数据标准化
数据一致性和空值处理
-
公司名称: 去除公司名称中的空白。 sql UPDATE layoffs_clean SET company = TRIM(company);
-
行业名称: 标准化行业分类。 sql UPDATE layoffs_clean SET industry = Crypto WHERE industry IN (Crypto Currency, CryptoCurrency);
-
国家名称: 修正国家名称格式。 sql UPDATE layoffs_clean SET country = TRIM(TRAILING . FROM country) WHERE country LIKE United States%;
-
日期格式: 标准化日期格式和数据类型。 sql UPDATE layoffs_clean SET
date= STR_TO_DATE(date, %m/%d/%Y); ALTER TABLE layoffs_clean MODIFY COLUMNdateDATE;
空值处理
-
行业空值: 将空行业值标准化为NULL,并使用公司和位置匹配填充。 sql UPDATE layoffs_clean SET industry = NULL WHERE industry = ; UPDATE layoffs_clean AS t1 INNER JOIN layoffs_clean AS t2 ON t1.company = t2.company AND t1.location = t2.location SET t1.industry = t2.industry WHERE t1.industry IS NULL AND t2.industry IS NOT NULL;
-
不完整记录: 删除缺乏必要裁员信息的记录。 sql DELETE FROM layoffs_clean WHERE total_laid_off IS NULL AND percentage_laid_off IS NULL;
总结洞察
- 数据质量: 识别并删除重复记录以确保数据完整性。
- 标准化: 实施公司名称、行业和国家的一致格式。
- 缺失数据: 制定处理关键字段中空值的策略。
- 日期格式: 将字符串日期转换为适当的日期格式以进行更好的分析。
- 数据完整性: 删除缺乏必要裁员信息的记录。
结论
- 该项目展示了在MySQL中进行数据清理的系统方法,实施了各种技术以确保数据质量和一致性。
- 清理后的数据集现在已正确结构化,可用于进一步分析,具有标准化的格式和减少的空值。
- SQL查询模块化,为类似的数据清理任务提供了可重用的框架。




