Xử lý Dữ liệu Excel với Pandas trong Python

Tạo và Ghi Bảng Dữ liệu

Sử dụng pandas để xuất dữ liệu ra file Excel đòi hỏi cấu hình chính xác các tham số. Dưới đây là cách khởi tạo DataFrame và lưu thành file:

import pandas as pd

# Tạo DataFrame mẫu với thông tin nhà hàng
bang_du_lieu = pd.DataFrame(
    [
        ['Sakura Sushi', 'Nhật Bản', 4.7],
        ['La Maison Française', 'Pháp', 4.8],
        ['Curry Garden', 'Ấn Độ', 4.3],
        ['Bamboo Garden', 'Trung Quốc', 4.6],
        ['Mediterranean Bistro', 'Hy Lạp', 4.5]
    ],
    columns=['Ten_Nha_Hang', 'Quoc_Gia', 'Diem_Danh_Gia']
)

# Đặt cột ID làm chỉ mục
bang_du_lieu = bang_du_lieu.set_index(pd.RangeIndex(start=1, stop=6, name='ID'))

# Xuất ra file Excel
bang_du_lieu.to_excel('du_lieu_nha_hang.xlsx', index=True)

Xuất Nhiều Sheet trong File

Để ghi đồng thời nhiều DataFrame vào các sheet khác nhau, sử dụng ExcelWriter với cấu hình chi tiết:

# Tạo DataFrame phụ chỉ chứa cột cần thiết
bang_phu = bang_du_lieu[['Ten_Nha_Hang', 'Diem_Danh_Gia']].copy()

# Xuất ra nhiều sheet
with pd.ExcelWriter('du_lieu_da_sheet.xlsx', engine='openpyxl') as trinh_giai:
    bang_du_lieu.to_excel(trinh_giai, sheet_name='Bang_Day_Du')
    bang_phu.to_excel(trinh_giai, sheet_name='Bang_Tom_Tat')

Đọc Dữ liệu từ Excel

Quy trình đọc file Excel cần xác định rõ tham số đầu vào để xử lý định dạng file phức tạp:

# Đọc file với cấu hình chỉ mục và kiểu dữ liệu
nha_hang = pd.read_excel(
    'du_lieu_nha_hang.xlsx',
    header=0,
    index_col='ID',
    dtype={'ID': 'string'}
)

# Truy xuất thông tin cơ bản
so_dong, so_cot = nha_hang.shape
danh_sach_cot = nha_hang.columns.tolist()
mau_du_lieu = nha_hang.head(3)

Xử lý File Nhiều Sheet

Khi làm việc với file chứa nhiều sheet, cần xử lý từng sheet riêng biệt:

# Đọc tất cả sheet vào dictionary
tap_hop_sheet = pd.read_excel(
    'du_lieu_da_sheet.xlsx',
    sheet_name=None,
    header=0
)

# Kết hợp dữ liệu từ các sheet
bang_tong = pd.DataFrame()
for ten_sheet, du_lieu in tap_hop_sheet.items():
    bang_tong = pd.concat([bang_tong, du_lieu], ignore_index=True)

# Trích xuất cột cụ thể
danh_sach_nha_hang = bang_tong['Ten_Nha_Hang'].tolist()

Thêm Dữ liệu vào File Tồn tại

Cơ chế ghi nối tiếp đòi hỏi cấu hình engine và chế độ xử lý sheet chính xác:

# Xác định vị trí cuối cùng
bang_goc = pd.read_excel('du_lieu_da_sheet.xlsx', sheet_name='Bang_Day_Du')
vi_tri_cuoi = bang_goc.shape[0] + 2  # +2 để bỏ qua header

# Tạo dữ liệu mới
du_lieu_moi = pd.DataFrame(
    [['Spice Route', 'Ấn Độ', 4.2]],
    columns=['Ten_Nha_Hang', 'Quoc_Gia', 'Diem_Danh_Gia']
)

# Ghi nối tiếp
with pd.ExcelWriter(
    'du_lieu_da_sheet.xlsx',
    engine='openpyxl',
    mode='a',
    if_sheet_exists='overlay'
) as trinh_giai:
    du_lieu_moi.to_excel(
        trinh_giai,
        sheet_name='Bang_Day_Du',
        startrow=vi_tri_cuoi,
        header=False,
        index=False
    )

Thẻ: Pandas Excel dataframe python-data-analysis

Đăng vào ngày 23 tháng 5 lúc 16:21