Bạn có thể sử dụng tệp excel trong python không?

Trang web này chứa các gợi ý đến thông tin tốt nhất hiện có về cách làm việc với các tệp Excel bằng ngôn ngữ lập trình Python

Đọc và ghi tệp Excel

Có sẵn các gói python để hoạt động với các tệp Excel sẽ chạy trên bất kỳ nền tảng Python nào và không yêu cầu sử dụng Windows hoặc Excel. Chúng nhanh, đáng tin cậy và mã nguồn mở

openpyxl

Gói khuyến nghị để đọc và ghi tệp Excel 2010 [ví dụ:. . xlsx]

Tải xuống. Tài liệu. Cai Xô nhỏ

xlsxwriter

Một gói thay thế để ghi dữ liệu, định dạng thông tin và đặc biệt là biểu đồ ở định dạng Excel 2010 [tức là. . xlsx]

Tải xuống. Tài liệu. GitHub

pyxlsb

Gói này cho phép bạn đọc các tệp Excel ở định dạng xlsb

Tải xuống. GitHub

pylightxl

Gói này cho phép bạn đọc các tệp

start = time.time[]
df = pd.read_excel[“Dummy 0.xlsx”]
for file_number in range[1,10]:
df.append[pd.read_excel[f”Dummy {file_number}.xlsx”]]
end = time.time[]
print[“Excel:”, end — start]
>> Excel: 53.4
0 và
start = time.time[]
df = pd.read_excel[“Dummy 0.xlsx”]
for file_number in range[1,10]:
df.append[pd.read_excel[f”Dummy {file_number}.xlsx”]]
end = time.time[]
print[“Excel:”, end — start]
>> Excel: 53.4
1 và ghi các tệp
start = time.time[]
df = pd.read_excel[“Dummy 0.xlsx”]
for file_number in range[1,10]:
df.append[pd.read_excel[f”Dummy {file_number}.xlsx”]]
end = time.time[]
print[“Excel:”, end — start]
>> Excel: 53.4
0

Tải xuống. Tài liệu. GitHub

xlrd

Gói này dùng để đọc dữ liệu và định dạng thông tin từ các tệp Excel cũ hơn [tức là. . xls]

Tải xuống. Tài liệu. GitHub

xlwt

Gói này dùng để ghi dữ liệu và định dạng thông tin vào các tệp Excel cũ hơn [tức là. . xls]

Tải xuống. Tài liệu. ví dụ. GitHub

xlutils

Gói này tập hợp các tiện ích yêu cầu cả

start = time.time[]
df = pd.read_excel[“Dummy 0.xlsx”]
for file_number in range[1,10]:
df.append[pd.read_excel[f”Dummy {file_number}.xlsx”]]
end = time.time[]
print[“Excel:”, end — start]
>> Excel: 53.4
3 và
start = time.time[]
df = pd.read_excel[“Dummy 0.xlsx”]
for file_number in range[1,10]:
df.append[pd.read_excel[f”Dummy {file_number}.xlsx”]]
end = time.time[]
print[“Excel:”, end — start]
>> Excel: 53.4
4, bao gồm khả năng sao chép và sửa đổi hoặc lọc các tệp excel hiện có

NB. Nói chung, các trường hợp sử dụng này hiện được bao phủ bởi openpyxl

Tải xuống. Tài liệu. GitHub

Viết Add-In Excel

Các sản phẩm sau có thể được sử dụng để viết phần bổ trợ Excel bằng Python. Không giống như các gói trình đọc và trình ghi, chúng yêu cầu cài đặt Microsoft Excel

PyXLL

PyXLL là một sản phẩm thương mại cho phép viết phần bổ trợ Excel bằng Python mà không cần VBA. Các hàm Python có thể được hiển thị dưới dạng các hàm trang tính [UDF], macro, menu và thanh công cụ ribbon

Trang chủ. Đặc trưng. Tài liệu. Tải xuống

xlwings

xlwings là một thư viện mã nguồn mở để tự động hóa Excel bằng Python thay vì VBA và hoạt động trên Windows và macOS. bạn có thể gọi Python từ Excel và ngược lại và viết UDF bằng Python [chỉ dành cho Windows]. xlwings PRO là một tiện ích bổ sung thương mại với chức năng bổ sung

Trang chủ. Tài liệu. GitHub. Tải xuống

Danh sách gửi thư / Nhóm thảo luận

Có một Group của Google chuyên làm việc với file Excel bằng Python, bao gồm các thư viện liệt kê bên trên cùng thao tác với ứng dụng Excel qua COM

Phát triển thương mại

Các công ty sau đây có thể cung cấp tư vấn và phát triển phần mềm thương mại và là chuyên gia làm việc với các tệp Excel bằng Python

Trong bài viết này, tôi sẽ chỉ cho bạn 5 cách để tải dữ liệu trong Python. Đạt được tốc độ tăng 3 bậc độ lớn

Nguồn. https. //www. hà mã. com/, miền công cộng

Là người dùng Python, tôi sử dụng tệp excel để tải/lưu trữ dữ liệu vì doanh nhân thích chia sẻ dữ liệu ở định dạng excel hoặc csv. Thật không may, Python đặc biệt chậm với các tệp Excel

Trong bài viết này, tôi sẽ chỉ cho bạn 5 cách để tải dữ liệu trong Python. Cuối cùng, chúng ta sẽ đạt được mức tăng tốc 3 bậc độ lớn. Nó sẽ nhanh như chớp

Chỉnh sửa [18/07/2021]. Tôi đã tìm ra cách để làm cho quá trình nhanh hơn gấp 5 lần [dẫn đến tăng tốc 5000 lần]. Tôi đã thêm nó như một phần thưởng ở cuối bài viết

Thiết lập thử nghiệm

Hãy tưởng tượng rằng chúng ta muốn tải 10 tệp Excel với 20000 hàng và 25 cột [tổng dung lượng khoảng 70MB]. Đây là trường hợp điển hình khi bạn muốn tải dữ liệu giao dịch từ ERP [SAP] sang Python để thực hiện một số phân tích

Hãy điền dữ liệu giả này và nhập các thư viện cần thiết [chúng ta sẽ thảo luận về dưa chua và joblib sau trong bài viết]

import pandas as pd
import numpy as np
from joblib import Parallel, delayed
import time
for file_number in range[10]:
values = np.random.uniform[size=[20000,25]]
pd.DataFrame[values].to_csv[f”Dummy {file_number}.csv”]
pd.DataFrame[values].to_excel[f”Dummy {file_number}.xlsx”]
pd.DataFrame[values].to_pickle[f”Dummy {file_number}.pickle”]
5 cách tải dữ liệu trong PythonIdea #1. Tải tệp Excel bằng Python

Hãy bắt đầu với một cách đơn giản để tải các tệp này. Chúng tôi sẽ tạo một Khung dữ liệu Pandas đầu tiên và sau đó nối từng tệp Excel vào đó

start = time.time[]
df = pd.read_excel[“Dummy 0.xlsx”]
for file_number in range[1,10]:
df.append[pd.read_excel[f”Dummy {file_number}.xlsx”]]
end = time.time[]
print[“Excel:”, end — start]
>> Excel: 53.4

Một cách đơn giản để nhập tệp Excel trong Python

Mất khoảng 50 giây để chạy. Khá chậm

Ý tưởng số 2. Sử dụng CSV thay vì Tệp Excel

Bây giờ hãy tưởng tượng rằng chúng tôi đã lưu các tệp này dưới dạng. csv [chứ không phải. xlsx] từ ERP/Hệ thống/SAP của chúng tôi

start = time.time[]
df = pd.read_csv[“Dummy 0.csv”]
for file_number in range[1,10]:
df.append[pd.read_csv[f”Dummy {file_number}.csv”]]
end = time.time[]
print[“CSV:”, end — start]
>> CSV: 0.632

Nhập tệp csv bằng Python nhanh hơn 100 lần so với tệp Excel

Bây giờ chúng tôi có thể tải các tệp này trong 0. 63 giây. Nhanh hơn gần 10 lần

Python tải tệp CSV nhanh hơn 100 lần so với tệp Excel. Sử dụng CSV

Côn. tệp csv hầu như luôn lớn hơn. tập tin xlsx. trong ví dụ này. tệp csv là 9. 5MB, trong khi. xlsx là 6. 4MB

Ý tưởng số 3. Tạo khung dữ liệu Pandas thông minh hơn

Chúng tôi có thể tăng tốc quá trình của mình bằng cách thay đổi cách chúng tôi tạo DataFrames cho gấu trúc của mình. Thay vì nối thêm từng tệp vào DataFrame hiện có,

  1. Chúng tôi tải từng DataFrame một cách độc lập trong danh sách
  2. Sau đó nối toàn bộ danh sách trong một DataFrame duy nhất
start = time.time[]
df = []
for file_number in range[10]:
temp = pd.read_csv[f”Dummy {file_number}.csv”]
df.append[temp]
df = pd.concat[df, ignore_index=True]
end = time.time[]
print[“CSV2:”, end — start]
>> CSV2: 0.619

Một cách thông minh hơn để nhập tệp csv trong Python

Chúng tôi đã giảm thời gian xuống một vài phần trăm. Dựa trên kinh nghiệm của tôi, thủ thuật này sẽ trở nên hữu ích khi bạn xử lý các Dataframes lớn hơn [df >> 100MB]

Ý tưởng số 4. Song song hóa Nhập CSV với Joblib

Chúng tôi muốn tải 10 tệp bằng Python. Thay vì tải từng tệp một, tại sao không tải tất cả chúng cùng một lúc, song song?

Chúng tôi có thể làm điều này một cách dễ dàng bằng cách sử dụng joblib

start = time.time[]
def loop[file_number]:
return pd.read_csv[f”Dummy {file_number}.csv”]
df = Parallel[n_jobs=-1, verbose=10][delayed[loop][file_number] for file_number in range[10]]
df = pd.concat[df, ignore_index=True]
end = time.time[]
print[“CSV//:”, end — start]
>> CSV//: 0.386

Nhập tệp CSV bằng Python song song bằng Joblib

Nhanh gần gấp đôi so với phiên bản lõi đơn. Tuy nhiên, theo nguyên tắc chung, đừng mong đợi tăng tốc quy trình của bạn lên gấp tám lần bằng cách sử dụng 8 lõi [ở đây, tôi đã tăng tốc gấp 2 lần bằng cách sử dụng 8 lõi trên Mac Air sử dụng chip M1 mới]

Song song hóa đơn giản trong Python với Joblib

Joblib là một thư viện Python đơn giản cho phép bạn chạy một hàm trong //. Trong thực tế, joblib hoạt động như một danh sách hiểu. Ngoại trừ mỗi lần lặp lại được thực hiện bởi một luồng khác nhau. Đây là một ví dụ

def loop[file_number]:
return pd.read_csv[f”Dummy {file_number}.csv”]
df = Parallel[n_jobs=-1, verbose=10][delayed[loop][file_number] for file_number in range[10]]
#equivalent to
df = [loop[file_number] for file_number in range[10]]

Hãy coi joblib như một cách hiểu danh sách thông minh. Ý tưởng số 5. Sử dụng tập tin Pickle

Bạn có thể đi [nhiều] nhanh hơn bằng cách lưu trữ dữ liệu trong các tệp pickle — một định dạng cụ thể được Python sử dụng — thay vì. tệp csv

Côn. bạn sẽ không thể mở tệp dưa chua theo cách thủ công và xem có gì trong đó

start = time.time[]
def loop[file_number]:
return pd.read_pickle[f”Dummy {file_number}.pickle”]
df = Parallel[n_jobs=-1, verbose=10][delayed[loop][file_number] for file_number in range[10]]
df = pd.concat[df, ignore_index=True]
end = time.time[]
print[“Pickle//:”, end — start]
>> Pickle//: 0.072

Chúng tôi chỉ cắt giảm 80% thời gian chạy

Nói chung, làm việc với tệp pickle nhanh hơn nhiều so với tệp csv. Tuy nhiên, mặt khác, các tệp dưa chua thường chiếm nhiều dung lượng hơn trên ổ đĩa của bạn [không phải trong ví dụ cụ thể này]

Trong thực tế, bạn sẽ không thể trích xuất dữ liệu trực tiếp từ hệ thống trong các tệp pickle

Tôi khuyên bạn nên sử dụng dưa chua trong hai trường hợp sau

  1. Bạn muốn lưu dữ liệu từ một trong các quy trình Python của mình [và bạn không có kế hoạch mở nó trên Excel] để sử dụng sau này/trong một quy trình khác. Lưu Dataframes của bạn dưới dạng dưa chua thay vì. csv
  2. Bạn cần tải lại [các] tệp giống nhau nhiều lần. Lần đầu tiên bạn mở một tệp, hãy lưu nó dưới dạng dưa chua để bạn có thể tải phiên bản dưa chua trực tiếp vào lần tới.
    Ví dụ. Hãy tưởng tượng rằng bạn sử dụng dữ liệu giao dịch hàng tháng [mỗi tháng bạn tải một tháng dữ liệu mới]. Bạn có thể lưu tất cả dữ liệu lịch sử dưới dạng. pickle và mỗi khi bạn nhận được một tệp mới, bạn có thể tải tệp đó một lần dưới dạng. csv và sau đó giữ nó dưới dạng. dưa chua cho lần sau.
Thưởng. Tải tệp Excel song song

Hãy tưởng tượng rằng bạn đã nhận được các tệp excel và bạn không có lựa chọn nào khác ngoài việc tải chúng như hiện trạng. Bạn cũng có thể sử dụng joblib để song song hóa việc này. So với mã dưa chua của chúng tôi ở trên, chúng tôi chỉ cần cập nhật chức năng vòng lặp

start = time.time[]
def loop[file_number]:
return pd.read_excel[f"Dummy {file_number}.xlsx"]
df = Parallel[n_jobs=-1, verbose=10][delayed[loop][file_number] for file_number in range[10]]
df = pd.concat[df, ignore_index=True]
end = time.time[]
print["Excel//:", end - start]
>> 13.45

Cách tải tệp excel bằng song song hóa trong Python

Chúng tôi có thể giảm 70% thời gian tải [từ 50 giây xuống 13 giây]

Bạn cũng có thể sử dụng vòng lặp này để tạo các tệp dưa chua một cách nhanh chóng. Vì vậy, lần tới khi bạn tải các tệp này, bạn sẽ có thể đạt được thời gian tải nhanh như chớp

def loop[file_number]:
temp = pd.read_excel[f"Dummy {file_number}.xlsx"]
temp.to_pickle[f"Dummy {file_number}.pickle"]
return temp
Tóm tắt

Bằng cách tải song song các tệp dưa chua, chúng tôi đã giảm thời gian tải từ 50 giây xuống dưới 1/10 giây

  • Excel. 50 giây
  • CSV. 0. 63 giây
  • CSV thông minh hơn. 0. 62 giây
  • CSV trong //. 0. 34 giây
  • Dưa chua trong //. 0. 07 giây
  • Trội hơn về //. 13. 5 giây
Phần thưởng #2. Song song hóa nhanh hơn gấp 4 lần

Joblib cho phép thay đổi chương trình phụ trợ song song hóa để loại bỏ một số chi phí. Bạn có thể thực hiện việc này bằng cách cung cấp cho Parallel=”threads"

Sử dụngprefer=”threads” sẽ cho phép bạn chạy quy trình của mình nhanh hơn nữa

Chúng tôi thu được tốc độ khoảng 0. 0096 giây [hơn 50 lần chạy với MacBook Air 2021]

Sử dụngprefer=”threads” với song song hóa CSV và Excel sẽ cho kết quả như sau

Như bạn có thể thấy, việc sử dụng phụ trợ “Chủ đề” dẫn đến điểm kém hơn khi đọc các tệp Excel. Nhưng với hiệu suất đáng kinh ngạc với dưa chua [phải mất 50 giây để tải từng tệp Excel một và chỉ 0. 01 giây để tải dữ liệu đọc tệp dưa chua trong //]

Python có thể làm việc với các tệp Excel không?

Excel là ứng dụng bảng tính phổ biến và mạnh mẽ dành cho Windows. Mô-đun openpyxl cho phép các chương trình Python của bạn đọc và sửa đổi các tệp bảng tính Excel . Ví dụ: bạn có thể có nhiệm vụ nhàm chán là sao chép một số dữ liệu nhất định từ một bảng tính và dán nó vào một bảng tính khác.

Python có thể lấy dữ liệu từ Excel không?

Còn rất nhiều điều bạn có thể làm với các tệp Excel trong chương trình Python của mình. Ví dụ: bạn có thể sửa đổi dữ liệu trong tệp Excel hiện có hoặc bạn có thể trích xuất dữ liệu mà bạn quan tâm và tạo một tệp Excel hoàn toàn mới. Để tìm hiểu thêm về những khả năng này, hãy xem tài liệu openpyxl

Bạn có thể nhập tệp XLSX bằng Python không?

Dữ liệu có thể ở bất kỳ định dạng phổ biến nào - CSV, TXT, XLS/XLSX [Excel], sas7bdat [SAS], Stata, Rdata [R], v.v. . Tải dữ liệu trong môi trường python là bước đầu tiên nhất để phân tích dữ liệu.

Chủ Đề