CodeGym /Khóa học Java /Python SELF VI /Gộp dữ liệu từ nhiều sheet và file Excel

Gộp dữ liệu từ nhiều sheet và file Excel

Python SELF VI
Mức độ , Bài học
Có sẵn

1. Tại sao cần gộp dữ liệu?

Trong thế giới dữ liệu hiện đại, hiếm khi tìm thấy toàn bộ thông tin cần thiết chỉ trong một file. Thông thường, dữ liệu được phân tán qua nhiều bảng và file, và để phân tích đầy đủ, chúng ta cần gộp chúng lại. Ví dụ, bạn có thể có dữ liệu về doanh số bán hàng của từng tháng trong các file riêng biệt. Để phân tích xu hướng chung, bạn cần gộp dữ liệu này vào một bảng duy nhất.

Thêm vào đó, việc gộp dữ liệu giúp:

  • Tiết kiệm thời gian cho việc tạo báo cáo thủ công.
  • Giảm nguy cơ lỗi khi chuyển dữ liệu thủ công.
  • Tự động hóa quy trình phân tích dữ liệu.

2. Các phương pháp gộp dữ liệu

Ghép dữ liệu (Concatenation)

Gộp dữ liệu theo chiều dọc và ngang được gọi là ghép dữ liệu (concatenation). Hãy bắt đầu với một ví dụ đơn giản: chúng ta có hai DataFrame muốn ghép lại.

Python

import pandas as pd

# Tạo hai DataFrame với cấu trúc tương tự
data1 = {
    'Product': ['Apples', 'Bananas'],
    'Sales': [100, 150]
}

data2 = {
    'Product': ['Cherries', 'Dates'],
    'Sales': [75, 200]
}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# Ghép dọc (thêm hàng)
combined = pd.concat([df1, df2], ignore_index=True)
print(combined)

Kết quả chúng ta sẽ có một DataFrame gộp gồm tất cả các hàng từ hai nguồn. Chú ý tham số ignore_index=True, tham số này sẽ đặt lại chỉ số index trong DataFrame cuối cùng.

Gộp dữ liệu bằng phương pháp merge

Khi bạn có dữ liệu cần gộp dựa trên các cột chung (ví dụ, id hoặc Product), phương pháp merge sẽ giúp bạn. Đây giống như "kết nối" giữa dữ liệu của bạn - chúng phải có một điểm chung để thực hiện.

Python

# Tạo ví dụ dữ liệu
sales_data = {
    'Product': ['Apples', 'Bananas', 'Cherries'],
    'Sales': [100, 150, 75]
}

price_data = {
    'Product': ['Apples', 'Bananas', 'Dates'],
    'Price': [1.2, 0.8, 3.0]
}

sales_df = pd.DataFrame(sales_data)
price_df = pd.DataFrame(price_data)

# Gộp DataFrame theo cột 'Product'
merged_df = pd.merge(sales_df, price_df, on='Product', how='inner')
print(merged_df)

Mặc dù chúng ta có thông tin về từng sản phẩm, merge chỉ trả về các hàng có điểm chung trong cột khóa Product.

Các kiểu gộp:

  • inner (mặc định): chỉ trả về những hàng có trong cả hai DataFrame.
  • outer: trả về tất cả các hàng, các giá trị còn thiếu sẽ là NaN.
  • left: trả về tất cả các hàng từ DataFrame bên trái và các hàng tương ứng từ bên phải.
  • right: trả về tất cả các hàng từ DataFrame bên phải và các hàng tương ứng từ bên trái.

Gộp dữ liệu từ nhiều sheet

Giờ đây, khi chúng ta đã làm mới kiến thức về cách gộp dữ liệu trong pandas, hãy áp dụng kiến thức này vào thực tế và gộp dữ liệu từ nhiều sheet của một file Excel.

Python

# Đọc file Excel có nhiều sheet
excel_file = pd.ExcelFile('sales_data.xlsx')

# Danh sách tên của tất cả các sheet
sheet_names = excel_file.sheet_names

# Đọc dữ liệu từ mỗi sheet vào một DataFrame riêng và đưa chúng vào danh sách
dataframes = [pd.read_excel(excel_file, sheet_name=sheet_name) for sheet_name in sheet_names]

# Thực hiện ghép dọc tất cả DataFrame
all_sales_data = pd.concat(dataframes, ignore_index=True)

print(all_sales_data)

Ở đây, chúng ta đã đọc tất cả các sheet từ file Excel thành các DataFrame riêng lẻ, sau đó gộp chúng thành một file duy nhất. Quá tuyệt phải không?

Gộp dữ liệu từ nhiều file

Trong thực tế, bạn có thể gặp tình huống dữ liệu được phân tán qua nhiều file. Hãy xem cách tự động hóa quy trình gộp chúng.

Python

import glob

# Đường dẫn đến các file
file_path = r'data/sales_*.xlsx'

# Lấy danh sách tất cả các file khớp với mẫu
files = glob.glob(file_path)

# Đọc dữ liệu từ mỗi file vào một DataFrame riêng và đưa chúng vào danh sách
dataframes = [pd.read_excel(file) for file in files]

# Thực hiện ghép dọc tất cả DataFrame
all_files_data = pd.concat(dataframes, ignore_index=True)

print(all_files_data)

Chúng ta sử dụng thư viện glob để lấy danh sách các file khớp với mẫu cho trước, rồi gộp tất cả dữ liệu thành một DataFrame.

3. Các ví dụ thực tế

Gộp dữ liệu cho phân tích kinh doanh

Giả sử bạn là một nhà phân tích làm việc với dữ liệu doanh số theo tháng trong các file riêng biệt. Với các kỹ thuật trên, bạn có thể dễ dàng gộp dữ liệu để phân tích xu hướng năm và đưa ra các kết luận hữu ích.

Tự động hóa báo cáo

Nhờ tự động hóa việc gộp dữ liệu, bạn có thể thiết lập script để thu thập thông tin từ các nguồn khác nhau và tạo báo cáo hàng ngày, hàng tuần hoặc hàng tháng tự động.

Xử lý dữ liệu từ nhiều nguồn

Dữ liệu của bạn có thể đến từ nhiều hệ thống khác nhau, mỗi nguồn cung cấp một phần thông tin. Sử dụng pandas, bạn có thể tập hợp chúng lại để có cái nhìn đầy đủ, ví dụ, kết nối dữ liệu khách hàng và giao dịch của họ.

4. Các lỗi thường gặp và cách khắc phục

Một lỗi phổ biến là không khớp tên cột trong các DataFrame cần gộp. Hãy đảm bảo các cột mà bạn gộp thực sự giống nhau và nếu cần, sử dụng các tham số left_onright_on trong phương pháp merge.

Đôi khi dữ liệu có thể chứa giá trị thiếu sau khi gộp. Hãy sử dụng các phương pháp lấp đầy giá trị fillna hoặc loại bỏ dropna để xử lý vấn đề này.

Nếu dữ liệu của bạn chứa trùng lặp, phương pháp concat có thể dẫn đến một DataFrame dài hơn dự kiến. Trong trường hợp này, hãy sử dụng phương pháp drop_duplicates để làm sạch dữ liệu.

Bây giờ, khi chúng ta đã làm sáng tỏ các phương pháp và mẹo gộp dữ liệu trong pandas, bạn đã có công cụ để xử lý các nhiệm vụ tự động hóa và phân tích dữ liệu thực tế. Dùng kiến thức này một cách hiệu quả nha!

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION