Tại sao gấu trúc không thể đọc excel?

Với gấu trúc, thật dễ dàng để đọc các tệp Excel và chuyển đổi dữ liệu thành DataFrame. Thật không may, các tệp Excel trong thế giới thực thường được xây dựng kém. Trong những trường hợp dữ liệu nằm rải rác trên trang tính, bạn có thể cần tùy chỉnh cách đọc dữ liệu. Bài viết này sẽ thảo luận về cách sử dụng pandas và openpyxl để đọc các loại tệp Excel này và chuyển đổi rõ ràng dữ liệu thành DataFrame phù hợp để phân tích thêm

Vấn đề

Hàm pandas

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
4 thực hiện công việc xuất sắc trong việc đọc bảng tính Excel. Tuy nhiên, trong trường hợp dữ liệu không phải là bảng liên tục bắt đầu từ ô A1, kết quả có thể không như bạn mong đợi

Nếu bạn cố gắng đọc trong bảng tính mẫu này bằng cách sử dụng

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
5

Tại sao gấu trúc không thể đọc excel?

Bạn sẽ nhận được một thứ trông giống như thế này

Tại sao gấu trúc không thể đọc excel?

Những kết quả này bao gồm rất nhiều cột

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
6, nhãn tiêu đề trong một hàng cũng như một số cột bổ sung mà chúng tôi không cần

Giải pháp Pandas

Giải pháp đơn giản nhất cho tập dữ liệu này là sử dụng các đối số

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
7 và
df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
8 cho
df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
9. Đặc biệt, tham số
df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
8 có thể rất hữu ích để kiểm soát các cột mà bạn muốn đưa vào

Nếu bạn muốn làm theo các ví dụ này, tệp có trên github

Đây là một phương pháp thay thế để chỉ đọc dữ liệu chúng tôi cần

import pandas as pd
from pathlib import Path
src_file = Path.cwd() /  'shipping_tables.xlsx'

df = pd.read_excel(src_file, header=1, usecols='B:F')

DataFrame kết quả chỉ chứa dữ liệu chúng tôi cần. Trong ví dụ này, chúng tôi cố tình loại trừ cột ghi chú và trường ngày

Tại sao gấu trúc không thể đọc excel?

Logic tương đối đơn giản.

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
8 có thể chấp nhận các phạm vi Excel như
df = pd.read_excel(
    src_file,
    header=1,
    usecols=['item_type', 'order id', 'order date', 'state', 'priority'])
2 và chỉ đọc trong các cột đó. Tham số
df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
7 mong đợi một số nguyên duy nhất xác định cột tiêu đề. Giá trị này được lập chỉ mục 0, vì vậy chúng tôi chuyển vào
df = pd.read_excel(
    src_file,
    header=1,
    usecols=['item_type', 'order id', 'order date', 'state', 'priority'])
4 mặc dù đây là hàng 2 trong Excel

Trong một số trường hợp, chúng tôi có thể muốn xác định các cột dưới dạng danh sách các số. Trong ví dụ này, chúng ta có thể xác định danh sách các số nguyên

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])

Cách tiếp cận này có thể hữu ích nếu bạn có một số loại mẫu số mà bạn muốn theo dõi cho một tập dữ liệu lớn (tôi. e. mọi cột thứ 3 hoặc chỉ các cột được đánh số chẵn)

Pandas

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
8 cũng có thể lấy danh sách tên cột. Mã này sẽ tạo một DataFrame tương đương

df = pd.read_excel(
    src_file,
    header=1,
    usecols=['item_type', 'order id', 'order date', 'state', 'priority'])

Việc sử dụng danh sách các cột được đặt tên sẽ hữu ích nếu thứ tự cột thay đổi nhưng bạn biết rằng tên sẽ không thay đổi

Cuối cùng,

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
8 có thể thực hiện chức năng có thể gọi được. Dưới đây là một ví dụ dạng dài đơn giản loại trừ các cột không có tên cũng như cột mức độ ưu tiên

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
6

Khái niệm chính cần ghi nhớ là hàm sẽ phân tích cú pháp từng cột theo tên và phải trả về một giá trị

df = pd.read_excel(
    src_file,
    header=1,
    usecols=['item_type', 'order id', 'order date', 'state', 'priority'])
7 hoặc
df = pd.read_excel(
    src_file,
    header=1,
    usecols=['item_type', 'order id', 'order date', 'state', 'priority'])
8 cho mỗi cột. Những cột được đánh giá là
df = pd.read_excel(
    src_file,
    header=1,
    usecols=['item_type', 'order id', 'order date', 'state', 'priority'])
7 sẽ được bao gồm

Một cách tiếp cận khác để sử dụng hàm có thể gọi được là bao gồm biểu thức

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
60. Đây là một ví dụ mà chúng tôi muốn chỉ bao gồm một danh sách các cột được xác định. Chúng tôi chuẩn hóa tên bằng cách chuyển đổi chúng thành chữ thường để so sánh

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
1

Các hàm có thể gọi được mang lại cho chúng tôi rất nhiều sự linh hoạt để xử lý các tệp Excel lộn xộn trong thế giới thực

Phạm vi và Bảng

Trong một số trường hợp, dữ liệu có thể bị xáo trộn nhiều hơn trong Excel. Trong ví dụ này, chúng tôi có một bảng tên là

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
61 mà chúng tôi muốn đọc. Nếu bạn phải làm việc với một tệp như thế này, thì có thể khó đọc với các tùy chọn gấu trúc mà chúng ta đã thảo luận cho đến nay

Tại sao gấu trúc không thể đọc excel?

Trong trường hợp này, chúng ta có thể sử dụng trực tiếp openpyxl để phân tích cú pháp tệp và chuyển đổi dữ liệu thành DataFrame của gấu trúc. Việc dữ liệu nằm trong bảng Excel có thể giúp quá trình này dễ dàng hơn một chút

Sau đây là cách sử dụng openpyxl (sau khi được cài đặt) để đọc tệp Excel

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
3

Điều này tải toàn bộ sổ làm việc. Nếu chúng tôi muốn xem tất cả các trang tính

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
4

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
5

Để truy cập trang tính cụ thể

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
6

Để xem danh sách tất cả các bảng có tên

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
7

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
0

Khóa này tương ứng với tên mà chúng tôi đã gán trong Excel cho bảng. Bây giờ, chúng tôi truy cập vào bảng để lấy phạm vi Excel tương đương

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
1

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
2

Điều này làm việc. Bây giờ chúng tôi biết phạm vi dữ liệu chúng tôi muốn tải. Bước cuối cùng là chuyển đổi phạm vi đó thành DataFrame của gấu trúc. Đây là một đoạn mã ngắn để lặp qua từng hàng và chuyển đổi thành DataFrame

df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
3

Đây là DataFrame kết quả

Tại sao gấu trúc không thể đọc excel?

Bây giờ chúng ta có bảng sạch và có thể sử dụng để tính toán thêm

Tóm lược

Trong một thế giới lý tưởng, dữ liệu chúng tôi sử dụng sẽ ở định dạng nhất quán đơn giản. Hãy xem bài báo này để có một cuộc thảo luận thú vị về các phương pháp sử dụng bảng tính hiệu quả trông như thế nào

Trong các ví dụ trong bài viết này, bạn có thể dễ dàng xóa các hàng và cột để định dạng tốt hơn. Tuy nhiên, có những lúc điều này không khả thi hoặc không nên. Tin vui là pandas và openpyxl cung cấp cho chúng tôi tất cả các công cụ cần thiết để đọc dữ liệu Excel - bất kể bảng tính có trở nên điên rồ đến đâu

Gấu trúc có thể đọc tệp Excel không?

Chúng ta có thể sử dụng hàm read_excel() của mô-đun pandas để đọc dữ liệu tệp excel vào đối tượng DataFrame . Nếu bạn nhìn vào một bảng excel, đó là một bảng hai chiều. Đối tượng DataFrame cũng đại diện cho cấu trúc dữ liệu dạng bảng hai chiều.

Làm cách nào để đọc excel bằng gấu trúc trong Python?

Cách đọc nhiều trang tính từ một tệp Excel trong Pandas? .
nhập gấu trúc dưới dạng pd Sheet1=pd. read_excel('/content/Subject_Scores. xlsx', sheet_name=0) Sheet2=pd. read_excel('/content/Subject_Scores. xlsx', sheet_name=1) print("Trang tính 1. \n",Sheet1) print() print("Sheet1. \n",Trang tính 2)
Tờ1. Cuộn

Gấu trúc có thể đọc CSV đọc Excel không?

Pandas là một gói Python mạnh mẽ và linh hoạt cho phép bạn làm việc với dữ liệu chuỗi thời gian và được gắn nhãn. Nó cũng cung cấp các phương pháp thống kê, cho phép vẽ đồ thị, v.v. Một tính năng quan trọng của Pandas là khả năng viết và đọc Excel, CSV và nhiều loại tệp khác .

Python có thể đọc các tệp xlsx không?

OpenPyXL là một thư viện Python được tạo để đọc và ghi các tệp Excel 2010 xlsx/xlsm/xltx/xltm . Nó có thể đọc cả. xlsx và. xlsm, bao gồm hỗ trợ biểu đồ, đồ thị và các hình ảnh hóa dữ liệu khác.