Việc phân biệt các cấu trúc dữ liệu khác nhau rất quan trọng vì nó sẽ giúp ta xác định những trường hợp nào nên dùng loại cấu trúc nào để tối ưu hiệu năng truy vấn hay phục vụ những yêu cầu đặc biệt
Cấu trúc dữ liệu dạng bảng
Dữ liệu dạng bảng hay có tên gọi ít phổ biến hơn là ma trận 2 chiều với các dòng đại diện cho các bản ghi – records (trường hợp – cases) và các cột chỉ thị cho đặc tính – features (biến số – variables);
Data frame là định dạng đặc thù của dữ liệu dạng bảng và được sử dụng phổ biến trong ngôn ngữ R và Python.
Mách nhỏ ❤️
Thực tế thì đời hem như mơ, đa phần dữ liệu đều không ở nguyên dạng bảng mà chúng thường là loại phi cấu trúc (vd: văn bản) và điều cần làm là ta phải xử lý rồi biến đổi chúng về dạng sao cho có thể đại diện các đặc tính của chúng theo cấu trúc dạng bảng. Nói cách nôm na là chuyển từ đa chiều thành hai chiều, từ các phi cấu trúc thành có cấu trúc (Còn phương pháp sao thì từ từ mình chỉ cho hen 😁).
Dữ liệu muốn đưa vào các CSDL quan hệ cần phải phân tách ra và đặt trong các bản liên quan nhằm mục đích dễ phân tích và dễ đưa các đặc tính đó vào mô hình máy học (AI). Vd: Câu “Giáo viên A dạy lớp B1 vào ngày 30/09/2022” ta sẽ thấy sơ sơ ít nhất cần phân tách 3 thành phần trong câu trên vào 3 bảng (Giáo viên, Lớp học, Lịch dạy)
| Category | Currency | SellerRating | Duration | EndDay | ClosePrice | OpenPrice | Competitive |
| Entertainment | $ | 20 | 5 | Mon | 0.1 | 0.2 | 0 |
| Entertainment | $ | 30 | 5 | Mon | 0.1 | 0.2 | 1 |
| Entertainment | $ | 10 | 7 | Mon | 0.1 | 0.2 | 0 |
| Tools | $ | 15 | 7 | Mon | 0.1 | 0.2 | 1 |
| Tools | $ | 20 | 7 | Tue | 0.1 | 0.2 | 0 |
| Tools | $ | 30 | 7 | Tue | 0.1 | 0.2 | 1 |
| Tools | $ | 10 | 8 | Tue | 0.1 | 0.2 | 1 |
| Tools | $ | 5 | 9 | Tue | 0.1 | 0.2 | 1 |
Ở bảng trên ta dễ dàng nhận thấy nó được tập hợp bởi các cột kiểu đo lường (Duration và Price) và vài cột kiểu phân nhóm (Category, Currency); Thêm nữa ta còn dạng đặc biệt của kiểu phân loại là cột nhị phân (yes/no hoặc 0/1) – trong ví dụ này là cột cuối cùng bên phải. Cột này ám chỉ sản phẩm đấu giá có cạnh tranh hay không (Có nhiều người cùng bid hay không).
Xét theo từ khóa chuyên ngành thì cột cuối ở trên chính là biến đầu ra (outcome variables) nói cách khác là mục đích mà ta quan tâm cần dự đoán ở bảng trên là sản phẩm có đáng cạnh tranh hay không?
Ghi chú nè 🤔
Data Frame và Index – Chỉ mục
Ở các bảng trong CSDL truyền thống (CSDL quan hệ) thì thường chứa một hoặc một vài cột được thiết kế dạng có đánh chỉ mục, cơ bản là tụi nó có đánh số thứ tự ngầm định. Và việc làm này chắc chắn nhằm tăng tốc độ truy vấn dữ liệu rùi.
Tuy nhiên thì trong Python, khi sử dụng thư viện pandas, cấu trúc dữ liệu dạng bảng khác với CSDL thông thường ở chỗ thay vì dùng bảng thì nó dùng đối tượng DataFrame (Có lẽ bạn nhìn nó chả khác gì bảng trong CSDL nhưng phần xử lý bên dưới sẽ khác á). Và điểm khiến nó đặc biệt là nó cho phép bạn thiết kế các chỉ mục theo dạng đa tầng (mutilevel/hierarchical index) để phục vụ những mục đích đặc thù mà chỉ có nó mới làm được hiệu quả.
Trong R có khác nhìu chút, đối tượng là data.frame và chỉ mục đa tầng không có sẵn trong thư viện gốc mà bạn sử dụng 2 gói thư viện riêng là data.table và dplyr.
Note nè ❌
Kết phần 1
Cấu trúc dữ liệu dạng bảng là kiến thức rất quan trọng vì được sử dụng thường xuyên và phổ biến không chỉ đối với dân data mà cả các kỹ sư phần mềm cũng cần phải nắm vững.
Phân biệt các thuật ngữ
Dân phân tích thống kê và Dân khoa học dữ liệu sẽ có những tên gọi khác nhau cho những khái niệm giống nhau:
- Với dân Phân tích: predictor variables (các biến dự đoán) được dùng trong mô hình để dự đoán response (kết quả phản hồi) hoặc dependent variables (các biến phụ thuộc); a sample (tập mẫu) đại diện cho tập hợp các dòng.
- Với dân Khoa học dữ liệu: features (các đặc trưng/tính/điểm) được dùng để dự đoán target (mục tiêu/chỉ tiêu); a sample chỉ đại diện cho 1 dòng thôi

