Hướng dẫn python read excel file without opening - python đọc tệp excel mà không cần mở

Xem thảo luận

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

    Đọc

    Bàn luận

    pip install xlrd

    Người ta có thể lấy thông tin từ bảng tính. Đọc, viết hoặc sửa đổi dữ liệu có thể được thực hiện trong Python có thể được thực hiện bằng cách sử dụng các phương thức khác nhau. Ngoài ra, người dùng có thể phải đi qua các trang khác nhau và truy xuất dữ liệu dựa trên một số tiêu chí hoặc sửa đổi một số hàng và cột và làm rất nhiều công việc. Ở đây, chúng tôi sẽ thấy các phương pháp khác nhau để đọc tệp Excel của chúng tôi. 

    Mô -đun cần thiết

    Tệp đầu vào: & NBSP;

    Python3

    Phương pháp 1: Đọc tệp Excel bằng Python & NBSP; sử dụng gấu trúc

    Trong phương pháp này, trước tiên chúng tôi sẽ nhập mô -đun Pandas sau đó chúng tôi sẽ sử dụng gấu trúc để đọc tệp Excel của chúng tôi. Bạn có thể đọc thêm các hoạt động bằng tệp Excel bằng Pandas trong bài viết này. Bấm vào đây

    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    8
    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    9

    Output:

    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    1
    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    2
    Reading an excel file using Python using openpyxl

    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    3
    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    4
    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    5
    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    6
    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    7dataframe.active has been created in the script to read the values of the max_row and the max_column properties. These values are used in the loops to read the content of the Books2.xlsx file. You can read other operations using openpyxl in this article.

    Python3

    Phương pháp 2: Đọc tệp Excel bằng Python & NBSP; sử dụng OpenPyXL

    Hàm load_workbook [] mở tệp books.xlsx để đọc. Tệp này được truyền như một đối số cho chức năng này. Đối tượng của dataFrame.Active đã được tạo trong tập lệnh để đọc các giá trị của các thuộc tính MAX_ROW và MAX_COLUMN. Các giá trị này được sử dụng trong các vòng lặp để đọc nội dung của tệp Books2.xlsx. Bạn có thể đọc các hoạt động khác bằng OpenPyXL trong bài viết này.

    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    1
    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”]
    1

    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”]
    2
    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    4
    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”]
    4
    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
    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    7

    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    3
    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    4
    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”]
    9

    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
    4
    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    8
    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
    6

    Output: 

    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
    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
    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
    2
    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
    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
    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
    5
    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
    6
    Reading an excel file using Python using Xlwings

    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
    7
    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
    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
    9
    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
    2
    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
    1
    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
    2
    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
    3

    Python3

    Phương pháp 3: Đọc tệp Excel bằng Python & NBSP; sử dụng XLWings

    XLWings có thể được sử dụng để chèn dữ liệu vào tệp Excel tương tự như đọc từ tệp Excel. Dữ liệu có thể được cung cấp dưới dạng danh sách hoặc một đầu vào duy nhất cho một ô nhất định hoặc lựa chọn các ô. & NBSP; bạn có thể đọc các hoạt động khác bằng XLWings trong bài viết này.

    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    1
    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
    8

    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    8
    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
    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
    5
    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
    6

    Output:

    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]

    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
    9
    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    4
    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
    1
    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
    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
    3
    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
    4
    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
    5


    Có ý nghĩa về dữ liệu lớn

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

    Nguồn: //www.hippopx.com/, miền công cộng

    Là người dùng Python, tôi sử dụng các tệp Excel để tải/lưu trữ dữ liệu vì những người kinh doanh muốn 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 năm cách để tải dữ liệu trong Python. Cuối cùng, chúng tôi sẽ đạt được tốc độ 3 bậc độ lớn. Nó sẽ là sét nhanh.

    Chỉnh sửa [18/07/2021]: Tôi đã tìm ra cách để làm cho quá trình nhanh hơn 5 lần [dẫn đến tăng tốc 5000x]. Tôi đã thêm nó như một phần thưởng vào cuối bài viết.5 times faster [resulting in a 5000x speedup]. I added it as a bonus at the end of the article.

    Thiết lập thử nghiệm

    Hãy để tưởng tượng rằng chúng tôi muốn tải 10 tệp excel với 20000 hàng và 25 cột [tổng cộng khoảng 70MB]. Đây là một trường hợp đại diện mà 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 để tập trung vào dữ liệu giả này và nhập các thư viện cần thiết [chúng tôi sẽ thảo luận về Pickle 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 Python

    Ý tưởng #1: Tải tệp Excel trong 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 ra một bản dữ liệu gấu trúc đầu tiên và sau đó nối từng tệp excel vào nó.

    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
    A Cách đơn giản để nhập các tệp Excel trong Python.

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

    Ý tưởng #2: Sử dụng CSVS thay vì các 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 là .xlsx] khỏi ERP/System/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
    Importing các tệp CSV trong Python nhanh hơn 100 lần so với các tệp Excel.

    Bây giờ chúng ta có thể tải các tệp này trong 0,63 giây. Điều đó nhanh hơn gần 10 lần!

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

    Con: Các tệp CSV gần như luôn luôn lớn hơn các tệp .xlsx. Trong ví dụ này, các tệp .csv là 9,5 MB, trong khi .xlsx là 6,4MB.: csv files are nearly always bigger than .xlsx files. In this example .csv files are 9.5MB, whereas .xlsx are 6.4MB.

    Ý tưởng #3: Tạo ra các gấu trúc thông minh hơn

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

    1. Chúng tôi tải mỗi khung dữ liệu một cách độc lập trong một danh sách.
    2. Sau đó kết hợp toàn bộ danh sách trong một khung dữ liệu 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 các tệp CSV trong Python

    Chúng tôi giảm thời gian 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 đối phó với các khung dữ liệu lớn hơn [DF >> 100MB].

    Ý tưởng #4: Nhập khẩu CSV song song với joblib

    Chúng tôi muốn tải 10 tệp trong Python. Thay vì tải từng tệp một, tại sao không tải tất cả, cùng một lúc, song song?one by one, why not loading them all, at once, in parallel?

    Chúng ta 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
    Import Các tệp CSV trong Python song song bằng cách sử dụng joblib.

    Đó là 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 hy vọng sẽ tăng tốc các quy trình của bạn gấp tám lần bằng cách sử dụng 8 lõi [ở đây, tôi đã tăng tốc X2 bằng cách sử dụng 8 lõi trên không khí Mac bằng chip M1 mới].

    Đơn giản hóa 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 đượ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]]
    Think như joblib như một danh sách thông minh hiểu.

    Ý tưởng #5: Sử dụng các tệp 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 sử dụng bởi Python - thay vì các tệp .csv.

    Con: Bạn đã thắng được có thể mở một tệp Pickle theo cách thủ công và xem những gì trong đó.: you won’t be able to manually open a pickle file and see what’s in it.

    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 thời gian chạy xuống 80%!

    Nói chung, hoạt động nhanh hơn nhiều với các tệp Pickle so với các tệp CSV. Nhưng, mặt khác, các tệp dưa chua thường có nhiều khoảng trố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 từ một hệ thống trực tiếp trong các tệp Pickle.

    Tôi sẽ 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 nó sau/trong một quy trình khác. Lưu các khung dữ liệu của bạn dưới dạng dưa chua thay vì .csv
    2. Bạn cần tải lại cùng một tệp 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 Pickle 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 mới của dữ liệu]. Bạn có thể lưu tất cả dữ liệu lịch sử dưới dạng.
      Example: Imagine that you use transactional monthly data [each month you load a new month of data]. You can save all historical data as .pickle and, each time you receive a new file, you can load it once as a .csv and then keep it as a .pickle for the next time.

    Phần thưởng: Tải các 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ư vậy. Bạn cũng có thể sử dụng Joblib để song song hóa điều này. So với mã Pickle của chúng tôi từ trên cao, chúng tôi chỉ cần cập nhật chức năng vòng lặp.only need to update the loop function.

    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 các tệp Excel bằng cách sử dụ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 còn 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 sét.

    Result: ['Name  Age    Stream  Percentage', 
    '0      Ankit   18      Math          95', 
    '1      Rahul   19   Science          90', 
    '2    Shaurya   20  Commerce          85', 
    '3  Aishwarya   18      Math          80', 
    '4   Priyanka   19   Science          75', 
    None]
    0

    Tóm tắt lại

    Bằng cách tải các tệp pickle song song, chúng tôi đã giảm thời gian tải từ 50 giây xuống dưới một phần mười giây.

    • Excel: 50 giây
    • CSV: 0,63 giây
    • CSV thông minh hơn: 0,62 giây
    • CSV in //: 0,34 giây
    • Dưa chua trong //: 0,07 giây
    • Excel in //: 13,5 giây

    Tiền thưởng #2: song song nhanh hơn 4 lần

    Joblib cho phép thay đổi phụ trợ song song để loại bỏ một số chi phí. Bạn có thể làm điều này bằng cách cho ưu tiên = Chủ đề "để song song.

    Sử dụng ưu tiên = Chủ đề trực tuyến sẽ cho phép bạn chạy quy trình của mình thậm chí nhanh hơn.

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

    Sử dụng ưu tiên = Chủ đề trực tuyến với CSV và Excel song song cho các kết quả sau.

    Như bạn có thể thấy bằng cách sử dụng phần phụ trợ của chủ đề trực tuyến với điểm số 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 Pickles [phải mất 50 giây để tải các tệp Excel từng cái một và chỉ 0,01 giây để tải dữ liệu đọc các tệp Pickles trong //].

    Hãy để kết nối trên LinkedIn!

    Thông tin về các Tác giả

    Nicolas Vandeput là một nhà khoa học dữ liệu chuỗi cung ứng chuyên về dự báo nhu cầu và tối ưu hóa hàng tồn kho. Ông thành lập công ty tư vấn của mình Supchains vào năm 2016 và đồng sáng lập SKU Science-một nền tảng dự báo nhu cầu nhanh, đơn giản và giá cả phải chăng-vào năm 2018. Đam mê giáo dục, Nicolas vừa là người học và thích giảng dạy tại các trường đại học: ông đã dạy dự báo và Tối ưu hóa hàng tồn kho cho sinh viên chính kể từ năm 2014 tại Brussels, Bỉ. Từ năm 2020, ông cũng đang dạy cả hai môn học tại Centralesupelec, Paris, Pháp. Ông đã xuất bản Khoa học dữ liệu để dự báo chuỗi cung ứng vào năm 2018 [Phiên bản thứ 2 năm 2021] và Tối ưu hóa hàng tồn kho: Mô hình và mô phỏng vào năm 2020.icolas Vandeput is a supply chain data scientist specialized in demand forecasting and inventory optimization. He founded his consultancy company SupChains in 2016 and co-founded SKU Science — a fast, simple, and affordable demand forecasting platform — in 2018. Passionate about education, Nicolas is both an avid learner and enjoys teaching at universities: he has taught forecasting and inventory optimization to master students since 2014 in Brussels, Belgium. Since 2020 he is also teaching both subjects at CentraleSupelec, Paris, France. He published Data Science for Supply Chain Forecasting in 2018 [2nd edition in 2021] and Inventory Optimization: Models and Simulations in 2020.

    Làm cách nào để mở một tệp excel mà không cần mở nó?

    Bạn không thể đọc Excel mà không có lệnh bảng tính mở. Bạn có thể thử chuyển đổi Excel thành CSV và sau đó đọc CSV.converting excel to csv and then read the csv.

    Làm cách nào để đọc một tệp excel trong Python?

    Đọc một tệp excel Chức năng read_excel của thư viện gấu trúc được sử dụng đọc nội dung của một tệp excel vào môi trường Python dưới dạng dữ liệu gấu trúc.Hàm có thể đọc các tệp từ HĐH bằng cách sử dụng đường dẫn thích hợp đến tệp.Theo mặc định, chức năng sẽ đọc Sheet1.The read_excel function of the pandas library is used read the content of an Excel file into the python environment as a pandas DataFrame. The function can read the files from the OS by using proper path to the file. By default, the function will read Sheet1.

    Làm cách nào để mở và đọc một tệp excel trong Python?

    Phương pháp 2: Đọc một tệp excel bằng Python bằng cách sử dụng chức năng OpenPyXL the Load_Workbook [] Mở các cuốn sách.Tệp XLSX để đọc.Tệp này được truyền như một đối số cho chức năng này.Đối tượng của DataFrame.The load_workbook[] function opens the Books. xlsx file for reading. This file is passed as an argument to this function. The object of the dataframe.

    Làm cách nào để tự động mở một tệp excel trong Python?

    Để làm việc trên trang tính excel này, chúng tôi sẽ sử dụng thư viện OpenPyXL.Tạo một thư mục trong thư mục của bạn, đặt tên cho nó và cài đặt gói OpenPyXL bằng cách thực thi lệnh sau trong thiết bị đầu cuối của bạn.Bây giờ chúng tôi có thể nhập gói này để làm việc trên bảng tính của chúng tôi.Trước đó, thêm bảng tính trong thư mục dự án của bạn.use a library openpyxl. Create a folder in your directory, give it a name and install the openpyxl package by executing the following command in your terminal. Now we can import this package to work on our spreadsheet. Before that add the spreadsheet in your project folder.

    Bài Viết Liên Quan

    Chủ Đề