Nội dung

1. Khái niệm gộp dữ liệu

Trong thực tế, dữ liệu thường nằm ở nhiều bảng khác nhau.

Ví dụ:

Bảng Khách hàng

CustomerIDName
1An
2Bình
3Chi

Bảng Đơn hàng

OrderIDCustomerIDAmount
1011200
1022350
1031150

Để phân tích dữ liệu, chúng ta cần kết hợp hai bảng này lại.


2. Nối dữ liệu với concat()

Hàm concat() dùng để nối nhiều DataFrame lại với nhau.

Cú pháp:

pd.concat()

2.1 Nối theo chiều dọc

Ví dụ:

import pandas as pd

df1 = pd.read_csv("sales_jan.csv")
df2 = pd.read_csv("sales_feb.csv")

df = pd.concat([df1, df2])

Kết quả:

  • dữ liệu của tháng 1 và tháng 2 được gộp lại thành một bảng.


2.2 Nối theo chiều ngang

pd.concat([df1, df2], axis=1)

Ý nghĩa:

  • ghép thêm cột dữ liệu.


3. Kết hợp dữ liệu với merge()

merge() được sử dụng khi cần kết hợp hai bảng theo một khóa chung.

Cú pháp:

pd.merge(left, right, on="column")

4. Các loại JOIN trong Pandas

4.1 Inner Join

Chỉ giữ lại các dòng xuất hiện trong cả hai bảng.

pd.merge(df_customers, df_orders, on="CustomerID", how="inner")

4.2 Left Join

Giữ toàn bộ dữ liệu của bảng bên trái.

pd.merge(df_customers, df_orders, on="CustomerID", how="left")

4.3 Right Join

Giữ toàn bộ dữ liệu của bảng bên phải.

pd.merge(df_customers, df_orders, on="CustomerID", how="right")

4.4 Outer Join

Giữ toàn bộ dữ liệu của cả hai bảng.

pd.merge(df_customers, df_orders, on="CustomerID", how="outer")

5. Ví dụ thực tế

Bảng Customers

CustomerIDName
1An
2Bình
3Chi

Bảng Orders

OrderIDCustomerIDAmount
1011200
1022350
1031150

Merge hai bảng

df = pd.merge(customers, orders, on="CustomerID")

Kết quả:

CustomerIDNameOrderIDAmount
1An101200
1An103150
2Bình102350

III. LÝ THUYẾT LIÊN QUAN

1. Khóa dữ liệu (Key)

Trong merge, cột dùng để kết nối dữ liệu gọi là Key.

Ví dụ:

CustomerID

2. So sánh concat và merge

concatmerge
nối bảngjoin bảng
không cần keycần key
giống appendgiống SQL JOIN

IV. TRÌNH TỰ THỰC HIỆN

Bước 1: Import thư viện

import pandas as pd

Bước 2: Đọc dữ liệu

customers = pd.read_csv("customers.csv")
orders = pd.read_csv("orders.csv")

Bước 3: Nối dữ liệu

pd.concat([customers, orders])

Bước 4: Merge dữ liệu

df = pd.merge(customers, orders, on="CustomerID")

Bước 5: Thực hiện Join

pd.merge(customers, orders, on="CustomerID", how="left")