Hướng dẫn can pandas read excel file with multiple sheets? - gấu trúc có thể đọc tệp excel có nhiều trang tính không?

Có nhiều tùy chọn khác nhau tùy thuộc vào trường hợp sử dụng:

  1. Nếu một người không biết tên tờ.

  2. Nếu tên Sheets không liên quan.

  3. Nếu một người biết tên của các tờ.

Dưới đây chúng tôi sẽ xem xét kỹ các tùy chọn.

Xem phần Ghi chú để biết thông tin như tìm ra tên trang.

lựa chọn 1

Nếu một người không biết tên các tờ

# Read all sheets in your File
df = pd.read_excel['FILENAME.xlsx', sheet_name=None]
    
# Prints all the sheets name in an ordered dictionary
print[df.keys[]]

Sau đó, tùy thuộc vào trang tính mà người ta muốn đọc, người ta có thể chuyển từng cái trong số chúng cho một dataframe cụ thể, chẳng hạn như

sheet1_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET1NAME]
sheet2_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET2NAME]

Lựa chọn 2

Nếu tên không liên quan và tất cả một người quan tâm là vị trí của tờ. Giả sử người ta chỉ muốn tờ đầu tiên

# Read all sheets in your File
df = pd.read_excel['FILENAME.xlsx', sheet_name=None]

sheet1 = list[df.keys[]][0]

Sau đó, tùy thuộc vào tên trang tính, người ta có thể chuyển từng cái nó cho một ____99 cụ thể, chẳng hạn như

sheet1_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET1NAME]

Tùy chọn 3

Ở đây chúng tôi sẽ xem xét trường hợp người ta biết tên của các tờ. Đối với các ví dụ, người ta sẽ xem xét rằng có ba tờ có tên

sheet1_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET1NAME]
sheet2_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET2NAME]
1,
sheet1_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET1NAME]
sheet2_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET2NAME]
2 và
sheet1_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET1NAME]
sheet2_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET2NAME]
3. Nội dung trong mỗi là giống nhau và trông như thế này

     0         1     2
0   85   January  2000
1   95  February  2001
2  105     March  2002
3  115     April  2003
4  125       May  2004
5  135      June  2005

Với điều này, tùy thuộc vào mục tiêu của một người, có nhiều cách tiếp cận:

  • Lưu trữ mọi thứ trong cùng một khung dữ liệu. Một cách tiếp cận sẽ là nối các tờ như sau

    sheets = ['Sheet1', 'Sheet2', 'Sheet3']
    df = pd.concat[[pd.read_excel['FILENAME.xlsx', sheet_name = sheet] for sheet in sheets], ignore_index = True]
    
    [Out]:
    
          0         1     2
    0    85   January  2000
    1    95  February  2001
    2   105     March  2002
    3   115     April  2003
    4   125       May  2004
    5   135      June  2005
    6    85   January  2000
    7    95  February  2001
    8   105     March  2002
    9   115     April  2003
    10  125       May  2004
    11  135      June  2005
    12   85   January  2000
    13   95  February  2001
    14  105     March  2002
    15  115     April  2003
    16  125       May  2004
    17  135      June  2005
    

    Về cơ bản, đây là cách

    sheet1_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET1NAME]
    sheet2_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET2NAME]
    
    4 hoạt động [nguồn]:

  • Lưu trữ mỗi tờ trong một khung dữ liệu khác nhau [giả sử,

    sheet1_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET1NAME]
    sheet2_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET2NAME]
    
    5,
    sheet1_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET1NAME]
    sheet2_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET2NAME]
    
    6, ...]

    sheets = ['Sheet1', 'Sheet2', 'Sheet3']
    
    for i, sheet in enumerate[sheets]:
        globals[]['df' + str[i + 1]] = pd.read_excel['FILENAME.xlsx', sheet_name = sheet]
    
    [Out]:
    
    # df1
         0         1     2
    0   85   January  2000
    1   95  February  2001
    2  105     March  2002
    3  115     April  2003
    4  125       May  2004
    5  135      June  2005
    
    # df2
         0         1     2
    0   85   January  2000
    1   95  February  2001
    2  105     March  2002
    3  115     April  2003
    4  125       May  2004
    5  135      June  2005
    
    # df3
         0         1     2
    0   85   January  2000
    1   95  February  2001
    2  105     March  2002
    3  115     April  2003
    4  125       May  2004
    5  135      June  2005
    

Notes:

  • Nếu một người muốn biết tên các tờ, người ta có thể sử dụng lớp

    sheet1_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET1NAME]
    sheet2_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET2NAME]
    
    7 như sau

    sheets = pd.ExcelFile['FILENAME.xlsx'].sheet_names
    
    [Out]: ['Sheet1', 'Sheet2', 'Sheet3']
    
  • Trong trường hợp này, người ta giả định rằng tệp

    sheet1_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET1NAME]
    sheet2_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET2NAME]
    
    8 nằm trên cùng thư mục với tập lệnh đang chạy.

    • Nếu tệp nằm trong một thư mục của thư mục hiện tại được gọi là dữ liệu, một cách sẽ là sử dụng

      sheet1_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET1NAME]
      sheet2_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET2NAME]
      
      9 tạo một biến, chẳng hạn như
      # Read all sheets in your File
      df = pd.read_excel['FILENAME.xlsx', sheet_name=None]
      
      sheet1 = list[df.keys[]][0]
      
      0 như sau

       path = r'./Data/Test.xlsx'
      
       df = pd.read_excel[r'./Data/FILENAME.xlsx', sheet_name=None]
      
  • Đây có thể là một bài đọc có liên quan.

Một thủ thuật đơn giản để tải nhiều bảng tính excel trong gấu trúc

Hướng dẫn nhanh về tải các tệp Excel với nhiều bảng tính một cách hiệu quả

Ảnh của Pexels trên Pixabay

Trong công việc hàng ngày của mình, tôi làm việc với các tệp Excel khá nhiều-lấy các tệp Excel, hầu hết chứa nhiều bảng tính và tải chúng vào Python bằng cách sử dụng gấu trúc cho nhiều nhiệm vụ. Tôi thấy quá trình này khá cồng kềnh, cho đến khi một đồng nghiệp đồng nghiệp [cảm ơn Gab Lin!] Đã dạy tôi một mẹo đơn giản mà từ đó cho phép tôi thực hiện nhiệm vụ này bằng trực giác và hiệu quả hơn. Cho phép tôi trả nó về phía trước trong bài viết này! 🙂

Các mã được trình bày trong bài viết này có thể được tìm thấy tại repo GitHub này.

Dữ liệu

Trước khi đến mấu chốt, trước tiên hãy nhìn vào tệp Excel sau mà tôi đã tạo và sẽ sử dụng để minh họa.

Tệp Excel với nhiều bảng tính [GIF của tác giả]

Nó chứa dữ liệu bán hàng hư cấu [và rất đơn giản] trong ba tháng liên tiếp - từ tháng 1 đến tháng 3. Dữ liệu bán hàng cho mỗi tháng được hiển thị trong các bảng tính riêng biệt.

Những gì tôi đã làm trước đây và những hạn chế của nó

Giả sử mục tiêu của tôi là kết hợp dữ liệu từ tất cả các bảng tính với nhau thành một khung dữ liệu gấu trúc duy nhất. Để đạt được nhiệm vụ này, tôi đã từng làm như sau:

  1. Nhận một danh sách tên của tất cả các bảng tính, hoặc sử dụng
    # Read all sheets in your File
    df = pd.read_excel['FILENAME.xlsx', sheet_name=None]
    
    sheet1 = list[df.keys[]][0]
    
    1 hoặc
    # Read all sheets in your File
    df = pd.read_excel['FILENAME.xlsx', sheet_name=None]
    
    sheet1 = list[df.keys[]][0]
    
    2.
  2. Lặp lại thông qua mỗi bảng tính, phân tích từng tờ dưới dạng DataFrame của gấu trúc và nối mỗi khung dữ liệu vào danh sách khác.
  3. Hợp nhất tất cả vào một khung dữ liệu duy nhất bằng cách sử dụng
    # Read all sheets in your File
    df = pd.read_excel['FILENAME.xlsx', sheet_name=None]
    
    sheet1 = list[df.keys[]][0]
    
    3.

Mã của tôi sẽ trông giống như thế này:

Hình ảnh của tác giả

Như bạn có thể tưởng tượng, có một vài vấn đề với phương pháp này:

  • Bạn có ít nhất 8 dòng mã để thực hiện một nhiệm vụ đơn giản, khá kém hiệu quả., which is quite inefficient.
  • Bạn có thể chỉ cần tải tệp Excel vào Python mà không biết trước tên của bảng tính. Bạn cần một chút kỹ thuật đảo ngược-trước tiên bạn cần tìm ra tên của bảng tính trước khi bạn chỉ định đối số
    # Read all sheets in your File
    df = pd.read_excel['FILENAME.xlsx', sheet_name=None]
    
    sheet1 = list[df.keys[]][0]
    
    4 tương ứng trong hàm
    # Read all sheets in your File
    df = pd.read_excel['FILENAME.xlsx', sheet_name=None]
    
    sheet1 = list[df.keys[]][0]
    
    5.
    without first knowing the names of the worksheets. You need a bit of reverse-engineering — you first need to figure out the names of the worksheets before you specify the
    # Read all sheets in your File
    df = pd.read_excel['FILENAME.xlsx', sheet_name=None]
    
    sheet1 = list[df.keys[]][0]
    
    4 argument accordingly in the
    # Read all sheets in your File
    df = pd.read_excel['FILENAME.xlsx', sheet_name=None]
    
    sheet1 = list[df.keys[]][0]
    
    5 function.
  • Bạn cần chỉ định tên chính xác của [các] bảng tính bạn muốn tải. Điều này có thể đơn giản nếu bạn đang tải dữ liệu từ một bảng tính hoặc nếu tên của bảng tính đơn giản, nhưng điều này dễ bị lỗi nếu bạn có nhiều bảng tính hoặc nếu tên bảng tính phức tạp. you wish to load. This may be straightforward if you are loading data from a single worksheet or if the name of the worksheet is simple, but this is prone to errors if you have multiple worksheets or if the worksheet names are complicated.

Bí quyết

Bây giờ, để giải quyết các vấn đề này, ở đây, thủ thuật - chỉ cần chỉ định đối số

# Read all sheets in your File
df = pd.read_excel['FILENAME.xlsx', sheet_name=None]

sheet1 = list[df.keys[]][0]
4 là
# Read all sheets in your File
df = pd.read_excel['FILENAME.xlsx', sheet_name=None]

sheet1 = list[df.keys[]][0]
7 trong hàm
# Read all sheets in your File
df = pd.read_excel['FILENAME.xlsx', sheet_name=None]

sheet1 = list[df.keys[]][0]
5. Đúng, đơn giản như vậy! Hãy để đi bộ qua điều này.

Bằng cách chỉ định

# Read all sheets in your File
df = pd.read_excel['FILENAME.xlsx', sheet_name=None]

sheet1 = list[df.keys[]][0]
9 trong hàm
# Read all sheets in your File
df = pd.read_excel['FILENAME.xlsx', sheet_name=None]

sheet1 = list[df.keys[]][0]
5, bạn sẽ nhận được một từ điển về các khung dữ liệu gấu trúc, trong đó các khóa là tên của bảng tính và các giá trị là dữ liệu trong mỗi bảng tính là DataFrames.

Hình ảnh của tác giả

Bây giờ, nếu bạn muốn phân tích dữ liệu từ một bảng tính cụ thể - giả sử, từ bảng tính của tháng hai, bạn có thể chỉ cần làm điều này:

Hình ảnh của tác giả

Bây giờ, nếu bạn muốn phân tích dữ liệu từ một bảng tính cụ thể - giả sử, từ bảng tính của tháng hai, bạn có thể chỉ cần làm điều này:

Lưu ý rằng điều này trả về một đối tượng DataFrame của gấu trúc.

Hình ảnh của tác giả

Bây giờ, nếu bạn muốn phân tích dữ liệu từ một bảng tính cụ thể - giả sử, từ bảng tính của tháng hai, bạn có thể chỉ cần làm điều này:

TL;DR

Lưu ý rằng điều này trả về một đối tượng DataFrame của gấu trúc.

Hoặc nếu bạn muốn kết hợp dữ liệu trên nhiều bảng tính, bạn có thể làm điều này:

Ở đây, chúng tôi chỉ định
sheet1_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET1NAME]
1 trong
sheet1_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET1NAME]
2 để các chỉ số của DataFrame kết quả chạy theo trình tự.

Tóm lại, đoạn mã đầy đủ sẽ trông như thế này:

Hoặc ở định dạng mà bạn có thể tải xuống và lưu để tham khảo trong tương lai:

  • Hình ảnh của tác giả sử dụng carbon
  • Bây giờ, bạn có ít dòng mã hơn, cũng chuyển thành mã hiệu quả và dễ đọc hơn.

Trước khi tôi kết luận, hãy lưu ý về sự khác biệt nhỏ này trong hàm
# Read all sheets in your File
df = pd.read_excel['FILENAME.xlsx', sheet_name=None]

sheet1 = list[df.keys[]][0]
5:

Đối với phiên bản Pandas, ≥ 0,21.0:

sheet1_df = pd.read_excel['FILENAME.xlsx', sheet_name=SHEET1NAME]
4

Bức ảnh này tổng hợp cảm giác của tôi sau khi đồng nghiệp của tôi đã dạy mẹo này cho tôi, vì vậy nếu bạn cũng thấy nó hữu ích, hãy thoải mái đưa cho tôi những lời bình luận của bạn trong các bình luận!

Ảnh của Krakenimages trên unplash

Đó là nó. Cảm ơn vì đã đọc!

Trước khi bạn đi…

Nếu bài viết này có giá trị và bạn muốn hỗ trợ tôi với tư cách là một nhà văn, hãy xem xét đăng ký thành viên trung bình. Là một thành viên, bạn nhận được quyền truy cập không giới hạn vào các câu chuyện được xuất bản trên Medium. Nếu bạn đăng ký bằng cách sử dụng liên kết này, tôi sẽ kiếm được một khoản hoa hồng nhỏ. Vui lòng tham gia danh sách email của tôi nếu bạn muốn được thông báo bất cứ khi nào tôi xuất bản.

Làm cách nào để đọc nhiều tệp XLSX trong gấu trúc?

Làm thế nào để tham gia dữ liệu Excel từ nhiều tệp bằng gấu trúc ?..
Yêu cầu hệ thống :.
Bước 1: Nhập các mô -đun ..
Bước 2: Đọc các tệp Excel ..
Bước 3: Tham gia các hoạt động trên các khung dữ liệu ..
Bước 4: Viết kết quả vào tệp CSV ..

Bạn có thể lấy dữ liệu từ nhiều tờ trong Excel không?

Trên tab Dữ liệu, trong các công cụ, nhấp vào Hợp nhất.Trong hộp chức năng, nhấp vào chức năng mà bạn muốn Excel sử dụng để hợp nhất dữ liệu.Trong mỗi trang nguồn, chọn dữ liệu của bạn, sau đó nhấp vào Thêm.Đường dẫn tệp được nhập trong tất cả các tài liệu tham khảo.

Làm thế nào so sánh hai tấm excel sử dụng gấu trúc?

Làm cách nào để so sánh hai tệp XLSX trong Python ?..
Nhập gấu trúc dưới dạng pd df1 = pd.read_excel ['Product_carget_jan.xlsx'] df2 = pd.read_excel ['Product_carget_feb.xlsx'].
df1.equals[df2].
so sánh_values = df1.values == df2.values in [so sánh_values].
Nhập Numpy dưới dạng hàng NP, cols = np.where [so sánh_values == false].

Chúng ta có thể đọc tệp excel trong gấu trúc không?

Chúng ta có thể sử dụng chức năng mô -đun pandas read_excel [] để đọc dữ liệu tệp excel vào đối tượng DataFrame.Nếu bạn nhìn vào một tờ 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 bảng hai chiều.. If you look at an excel sheet, it's a two-dimensional table. The DataFrame object also represents a two-dimensional tabular data structure.

Bài Viết Liên Quan

Chủ Đề