Mô tả tập dữ liệu:
- Dữ liệu của nền tảng thương mại điện tử TIKI tại Việt Nam.
- Dữ liệu chứa thông tin về 2024 quyển sách bán chạy nhất.
Gồm 2 table:
book_data.csv
Column | Description |
---|---|
product_id | id of the product in the Tiki database (unique) |
title | name of the book, maybe contain republish time |
authors | same with it’s name |
original_price | price at the first time |
current_price | price at present if having a discount |
quantity | total number of books sold of all time |
category | kind of book |
n_review | number of reviews |
avg_rating | average rating (max 5.0) |
pages | total pages of each book |
comments.csv
Column | Description |
---|---|
product_id | same with book_data file |
comment_id | each comment has individual id |
title | keywork of comment |
thank_count | number of like of other people |
customer_id | each customer has individual id |
rating | average rating of the comment |
content | same with it’s name |
Dataset: https://www.kaggle.com/datasets/biminhc/tiki-books-dataset
Dự án nhằm làm sạch dataset thô này để có thể sử dụng trong việc phân tích
Trước khi làm sạch tập dữ liệu, điêu cần làm khi nhận bất kỳ dataset nào là cần hiểu về dataset đó, vậy bước đầu là DATA PROFILING và sau đó kiểm tra DATA QUALITY
Quy trình làm sạch dữ liệu
Bước 1:
Đổi tên cột, table (do bigquery kh nhận diện được tên)
Bước 2:
Đổi về đúng định dạng dữ liệu
Bước 3:
Xử lý dữ liệu sai
Bước 4:
Xử lý Null
Bước 5:
Làm sạch giá trị
Bước 6:
Làm giàu dữ liệu
Sau đây là code SQL
Table: Tiki_book
-- Bước 1: Đổi tên collumn
WITH rename_column AS (
SELECT
product_id
, title
, authors
, original_price
, current_price AS discount_price
, quantity AS sold_quantity
, category
, n_review AS count_rivews
, avg_rating
, pages AS book_pages
, manufacturer AS publisher
, cover_link
FROM `vit-lam-data.kaggle_tiki_books.book_data`
)
-- BƯỚC 2: Sửa về đúng dạng dữ liệu
-- Có 2 cột chưa đúng định dạng là : pages và avg_rating
,
cast_data AS (
SELECT
* EXCEPT (avg_rating, book_pages)
, CAST (avg_rating AS NUMERIC) AS avg_rating
, CAST(NULLIF (book_pages, 'Cuốn') AS INTEGER ) AS book_pages
FROM rename_column
)
-- BƯỚC 3: Xử lý dữ liệu sai
-- Có 16 quyển sách bị trùng lập
, deduplicate AS (
SELECT
DISTINCT *
FROM cast_data
)
-- Xóa 45 NaN cột quantity (dữ liệu là sách bestselling mà kh có số lượng bán thì cũng không thể sử dụng được gì nên chọn phương án xóa )
, remove_wrong_data AS(
SELECT *
FROM deduplicate
WHERE sold_quantity IS NOT NULL
)
-- BƯỚC 4: Xử lý Null
-- Xóa dấu '.'
, handle_null AS (
SELECT
* EXCEPT (authors, avg_rating, publisher)
, COALESCE(NULLIF (authors, '.'), 'Undefined') AS authors
, NULLIF(avg_rating, 0 ) AS avg_rating
, COALESCE (publisher, 'Undefined') AS publisher
FROM remove_wrong_data
)-- BƯỚC 5: Làm sạch giá trị
, clean_value AS (
SELECT
* EXCEPT (category, publisher)
, CASE
WHEN category IN ( SELECT category
FROM handle_null
GROUP BY 1
HAVING COUNT (category) = 1)
THEN 'Undefined'
ELSE category
END
AS category
, REPLACE (REPLACE (REPLACE (publisher, 'Nhà Xuất Bản', 'NXB'), 'hong duc', 'NXB Hồng ĐỨc'), 'học', 'Học') AS publisher
FROM handle_null
)
-- BƯỚC 6: Làm giàu dữ liệu
-- Ở đây có thể tạo thêm 1 cột là đánh giá (cao,thấp, trung bình) dựa vào cột rating
, more_data AS (
SELECT
* EXCEPT (avg_rating)
, CASE
WHEN avg_rating BETWEEN 4.1 AND 5.0 THEN 'Cao'
WHEN avg_rating BETWEEN 2.1 AND 4.0 THEN 'Trung bình'
WHEN avg_rating BETWEEN1.0AND2.0THEN'Thấp'
ELSE 'Thấp'
END AS rating_group
FROM clean_value
)
SELECT *
FROM more_data
ORDER BY product_id
Link: https://console.cloud.google.com/bigquery?ws=!1m5!1m4!4m3!1slinh-hoc-data!2skaggle_cleansed!3stiki_book
Table 2: comment
-- BƯỚC 1: Đổi tên cột cho phù hợp
WITH rename_column AS (
SELECT
customer_id
, product_id
, comment_id
, title AS comment_title
, content AS comment_content
, thank_count AS count_thanks
, rating
FROM `vit-lam-data.kaggle_tiki_books.comments`
)
-- BƯỚC 2: Xử lý dữ liệu sai
-- Dữ liệu bị trùng lập
, deduplicate AS (SELECT
DISTINCT *
FROM rename_column
)
Link: https://console.cloud.google.com/bigquery?ws=!1m5!1m4!4m3!1slinh-hoc-data!2skaggle_cleansed!3stikti_book_comment