Site icon Bệ Phóng Việt

Kết hợp dữ liệu trong Python Pandas với nhiều bảng dữ liệu

Advertisements

Sự kết hợp dữ liệu, ghép nối và nối (Data Merging, Joining, and Concatenation) là một trong những kỹ năng quan trọng khi làm việc với dữ liệu trong Python Pandas. Sử dụng Pandas có thể giúp chúng ta tạo, sửa đổi và xử lý các tập tin dữ liệu tốt hơn trong khi thực hiện các tác vụ phân tích dữ liệu. Trong bài hướng dẫn này, chúng ta sẽ tìm hiểu cách kết hợp nhiều bảng dữ liệu trong Pandas, có nghĩa là các tập tin dữ liệu được lưu trữ trong nhiều bảng dữ liệu và chúng ta muốn kết hợp chúng.

1. Khái niệm cơ bản

Trong trường hợp đơn giản nhất, chúng ta có hai tập tin dữ liệu: một tập tin chứa thông tin về khách hàng và một tập tin chứa thông tin về đơn đặt hàng. Để kết hợp chúng thành một bảng dữ liệu, chúng ta phải tìm một cách để nối chúng.

Khi chúng ta nói về sự kết hợp các bảng dữ liệu, có ba thuật ngữ chính: “join”, “merge” và “concatenate”.

2. Phương pháp kết hợp

a. Merge

Phương thức merge() của Pandas được sử dụng để kết hợp dữ liệu dựa trên các cột chung của các bảng dữ liệu. Cú pháp của phương thức merge() như sau:

merged_data = pd.merge(left_dataframe, right_dataframe, on='common_column_name', how='merge_type')

Trong đó:

Hãy xem xét một ví dụ đơn giản về cách kết hợp hai bảng dữ liệu sử dụng phương thức merge.

import pandas as pd

# Tạo khung dữ liệu đầu vào
customer_data = pd.DataFrame({'id': [1, 2, 3, 4],
'name': ['Alice', 'Bob', 'Charlie', 'David'],
'age': [25, 32, 18, 47]})

order_data = pd.DataFrame({'id': [1, 1, 4, 4, 4],
'product_name': ['Chair', 'Table', 'Lamp', 'Sofa', 'TV'],
'quantity': [4, 1, 2, 3, 1]})

# Merge khung dữ liệu
merged_data = pd.merge(customer_data, order_data, on='id')

print(merged_data)

Kết quả:

id name age product_name quantity
0 1 Alice 25 Chair 4
1 1 Alice 25 Table 1
2 4 David 47 Lamp 2
3 4 David 47 Sofa 3
4 4 David 47 TV 1

Trong ví dụ này, chúng ta có hai bảng dữ liệu: customer_data và order_data. Cả hai bảng dữ liệu đều có cột “id”. Chúng ta muốn kết hợp chúng thành một bảng dữ liệu mới trên cột “id”. Bằng cách sử dụng phương thức merge() và chỉ ra tên của cột chung (trong trường hợp này là ‘id’), kết quả là một bảng mới được tạo ra.

b. Concat

Phương thức concat() của Pandas được sử dụng để nối dữ liệu theo chiều dọc hoặc ngang. Cú pháp của phương thức concat() như sau:

new_dataframe = pd.concat([df_1, df_2], axis=0/1, ignore_index=True)

Hãy xem xét một ví dụ đơn giản về cách sử dụng phương thức concat().

import pandas as pd

# Tạo khung dữ liệu đầu vào
df_1 = pd.DataFrame({'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]})

df_2 = pd.DataFrame({'A': [10, 11, 12],
'B': [13, 14, 15],
'C': [16, 17, 18]})

# Nối dữ liệu theo chiều dọc
result = pd.concat([df_1, df_2], axis=0)

print(result)

Kết quả:

A B C
0 1 4 7
1 2 5 8
2 3 6 9
0 10 13 16
1 11 14 17
2 12 15 18

Trong ví dụ này, chúng ta có hai bảng dữ liệu df_1 và df_2, cả hai có cấu trúc giống nhau. Chúng ta muốn nối chúng theo chiều dọc để tạo ra một bảng dữ liệu mới. Bằng cách sử dụng phương thức concat() và chỉ ra axis=0, kết quả là một bảng được tạo ra bằng cách nối two dataframes.

c. Join

Phương thức join() của Pandas được sử dụng để kết hợp dữ liệu dựa trên các chỉ mục (index) chung của các bảng dữ liệu. Phương thức join() là một phương thức cấp cao của merge() vì nó sử dụng merge() bên trong để thực hiện kết hợp. Cú pháp của phương thức join() như sau:

new_dataframe = left_dataframe.join(right_dataframe, how='type')

Tương tự các phép nối có thể được thực hiện, how có các giá trị “inner”, “outer”, “left” và “right”.

Hãy xem xét một ví dụ đơn giản về cách sử dụng phương thức join().

import pandas as pd

# Tạo khung dữ liệu đầu vào
df_1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})

df_2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
'B': ['B4', 'B5', 'B6', 'B7'],
'C': ['C4', 'C5', 'C6', 'C7'],
'D': ['D4', 'D5', 'D6', 'D7']})

df_3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],
'B': ['B8', 'B9', 'B10', 'B11'],
'C': ['C8', 'C9', 'C10', 'C11'],
'D': ['D8', 'D9', 'D10', 'D11']})

# Nối dữ liệu
result = df_1.join([df_2, df_3], how='outer')

print(result)

Kết quả:

A B C D A B C D A B C D
0 A0 B0 C0 D0 A4 B4 C4 D4 A8 B8 C8 D8
1 A1 B1 C1 D1 A5 B5 C5 D5 A9 B9 C9 D9
2 A2 B2 C2 D2 A6 B6 C6 D6 A10 B10 C10 D10
3 A3 B3 C3 D3 A7 B7 C7 D7 A11 B11 C11 D11

Trong ví dụ này, chúng ta có ba bảng dữ liệu df_1, df_2 và df_3. Cả ba bảng dữ liệu đều có cấu trúc giống nhau. Chúng ta muốn nối chúng lại với nhau theo chỉ mục để tạo ra một bảng dữ liệu mới. Bằng cách sử dụng phương thức join() và chỉ ra những bảng dữ liệu làm đầu vào trong danh sách, kết quả là một bảng dữ liệu mới được tạo ra.

Thêm một số lưu ý về phương pháp kết hợp dữ liệu trong Python Pandas:

Học bài tiếp theo: Reshaping Data with pandas: Học cách thay đổi cấu trúc và phân tích dữ liệu dễ dàng hơn

Bài trước: Phân nhóm và Tính toán dữ liệu với Pandas

Quay về trang chủ của khoá học: Python Pandas – Thao tác và phân tích dữ liệu

Exit mobile version