Hướng dẫn how do i get a list of sheet names in pandas excel? - Làm cách nào để lấy danh sách tên trang tính trong excel của gấu trúc?

Phiên bản mới của Pandas sử dụng giao diện sau để tải các tệp Excel:

read_excel['path_to_file.xls', 'Sheet1', index_col=None, na_values=['NA']]

Nhưng nếu tôi không biết các tấm có sẵn?

Ví dụ: tôi đang làm việc với các tệp Excel mà các tờ sau

Dữ liệu 1, Dữ liệu 2 ..., Dữ liệu N, Foo, Bar

Nhưng tôi không biết

 df = pandas.read_excel["/yourPath/FileName.xlsx", None];
1 một tiên nghiệm.

Có cách nào để có được danh sách các tờ từ một tài liệu Excel trong Pandas không?

Denfromufa

5.74412 Huy hiệu vàng73 Huy hiệu bạc138 Huy hiệu đồng12 gold badges73 silver badges138 bronze badges

Đã hỏi ngày 31 tháng 7 năm 2013 lúc 17:57Jul 31, 2013 at 17:57

Bạn vẫn có thể sử dụng lớp Excelfile [và thuộc tính

 df = pandas.read_excel["/yourPath/FileName.xlsx", None];
2]:

xl = pd.ExcelFile['foo.xls']

xl.sheet_names  # see all sheet names

xl.parse[sheet_name]  # read a specific sheet to DataFrame

Xem Docs cho Parse để biết thêm các tùy chọn ...

Đã trả lời ngày 31 tháng 7 năm 2013 lúc 18:01Jul 31, 2013 at 18:01

Andy Haydenandy HaydenAndy Hayden

339K96 Huy hiệu vàng604 Huy hiệu bạc523 Huy hiệu Đồng96 gold badges604 silver badges523 bronze badges

3

Bạn nên chỉ định rõ ràng tham số thứ hai [trang tính] là không có. như thế này:

 df = pandas.read_excel["/yourPath/FileName.xlsx", None];

"DF" là tất cả các tờ như một từ điển của DataFrames, bạn có thể xác minh nó bằng cách chạy điều này:

df.keys[]

Kết quả như thế này:

[u'201610', u'201601', u'201701', u'201702', u'201703', u'201704', u'201705', u'201706', u'201612', u'fund', u'201603', u'201602', u'201605', u'201607', u'201606', u'201608', u'201512', u'201611', u'201604']

Vui lòng tham khảo Pandas DOC để biết thêm chi tiết: //pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html

Đã trả lời ngày 10 tháng 8 năm 2017 lúc 1:59Aug 10, 2017 at 1:59

3

Đây là cách nhanh nhất tôi đã tìm thấy, lấy cảm hứng từ câu trả lời của @Divingtobi. Tất cả các câu trả lời dựa trên XLRD, OpenPyXL hoặc Pandas đều chậm đối với tôi, vì tất cả chúng đều tải toàn bộ tệp trước.

from zipfile import ZipFile
from bs4 import BeautifulSoup  # you also need to install "lxml" for the XML parser

with ZipFile[file] as zipped_file:
    summary = zipped_file.open[r'xl/workbook.xml'].read[]
soup = BeautifulSoup[summary, "xml"]
sheets = [sheet.get["name"] for sheet in soup.find_all["sheet"]]

Đã trả lời ngày 6 tháng 9 năm 2019 lúc 21:10Sep 6, 2019 at 21:10

S.E.AS.E.AS.E.A

1211 Huy hiệu bạc3 Huy hiệu đồng1 silver badge3 bronze badges

Cách dễ nhất để truy xuất các tên trang tính từ một excel [xls., Xlsx] là:

tabs = pd.ExcelFile["path"].sheet_names 
print[tabs]

Sau đó, để đọc và lưu trữ dữ liệu của một tờ cụ thể [giả sử, tên trang tính là "Sheet1", "Sheet2", v.v.], nói "Sheet2" chẳng hạn: ví dụ::

data = pd.read_excel["path", "Sheet2"] 
print[data]

Đã trả lời ngày 12 tháng 8 năm 2021 lúc 20:13Aug 12, 2021 at 20:13

#It will work for Both '.xls' and '.xlsx' by using pandas

import pandas as pd
excel_Sheet_names = [pd.ExcelFile[excelFilePath]].sheet_names

#for '.xlsx' use only  openpyxl

from openpyxl import load_workbook
excel_Sheet_names = [load_workbook[excelFilePath, read_only=True]].sheet_names
                                      

Suraj Rao

29.1k11 Huy hiệu vàng95 Huy hiệu bạc101 Huy hiệu đồng11 gold badges95 silver badges101 bronze badges

Đã trả lời ngày 7 tháng 12 năm 2021 lúc 11:58Dec 7, 2021 at 11:58

1

Tôi đã thử XLRD, Pandas, OpenPyXL và các thư viện khác như vậy và tất cả chúng dường như mất thời gian theo cấp số nhân khi kích thước tệp tăng lên khi đọc toàn bộ tệp. Các giải pháp khác được đề cập ở trên nơi họ đã sử dụng 'on_demand' không hiệu quả với tôi. Nếu bạn chỉ muốn lấy tên trang tính ban đầu, chức năng sau hoạt động cho các tệp XLSX.

def get_sheet_details[file_path]:
    sheets = []
    file_name = os.path.splitext[os.path.split[file_path][-1]][0]
    # Make a temporary directory with the file name
    directory_to_extract_to = os.path.join[settings.MEDIA_ROOT, file_name]
    os.mkdir[directory_to_extract_to]

    # Extract the xlsx file as it is just a zip file
    zip_ref = zipfile.ZipFile[file_path, 'r']
    zip_ref.extractall[directory_to_extract_to]
    zip_ref.close[]

    # Open the workbook.xml which is very light and only has meta data, get sheets from it
    path_to_workbook = os.path.join[directory_to_extract_to, 'xl', 'workbook.xml']
    with open[path_to_workbook, 'r'] as f:
        xml = f.read[]
        dictionary = xmltodict.parse[xml]
        for sheet in dictionary['workbook']['sheets']['sheet']:
            sheet_details = {
                'id': sheet['@sheetId'],
                'name': sheet['@name']
            }
            sheets.append[sheet_details]

    # Delete the extracted files directory
    shutil.rmtree[directory_to_extract_to]
    return sheets

Vì tất cả XLSX về cơ bản là các tệp có khóa kéo, chúng tôi trích xuất dữ liệu XML cơ bản và đọc tên trang tính từ sổ làm việc trực tiếp mất một phần nhỏ so với các chức năng của thư viện.

Điểm chuẩn: [trên tệp xlsx 6MB với 4 tờ] Pandas, XLRD: 12 giây OpenPyxL: 24 giây Phương pháp đề xuất: 0,4 giây
Pandas, xlrd: 12 seconds
openpyxl: 24 seconds
Proposed method: 0.4 seconds

Vì yêu cầu của tôi chỉ là đọc các tên trang tính, chi phí không cần thiết của việc đọc toàn bộ thời gian đã làm tôi khó chịu nên tôi đã đi theo con đường này thay thế.

Đã trả lời ngày 27 tháng 5 năm 2019 lúc 5:43May 27, 2019 at 5:43

3

Xây dựng trên câu trả lời của @dhwanil_shah, bạn không cần phải trích xuất toàn bộ tệp. Với

 df = pandas.read_excel["/yourPath/FileName.xlsx", None];
3, có thể đọc trực tiếp từ một tệp bị nén.

xl = pd.ExcelFile['foo.xls']

xl.sheet_names  # see all sheet names

xl.parse[sheet_name]  # read a specific sheet to DataFrame
0

Hai

 df = pandas.read_excel["/yourPath/FileName.xlsx", None];
4 liên tiếp là xấu xí, nhưng nội dung chỉ nằm trong dòng thứ hai của văn bản. Không cần phải phân tích toàn bộ tập tin.

Giải pháp này dường như nhanh hơn nhiều so với phiên bản

 df = pandas.read_excel["/yourPath/FileName.xlsx", None];
5 và rất có thể cũng nhanh hơn phiên bản trích xuất đầy đủ.

Đã trả lời ngày 1 tháng 7 năm 2019 lúc 14:01Jul 1, 2019 at 14:01

DivingtobidivingtobidivingTobi

1.7888 Huy hiệu bạc18 Huy hiệu Đồng8 silver badges18 bronze badges

1

xl = pd.ExcelFile['foo.xls']

xl.sheet_names  # see all sheet names

xl.parse[sheet_name]  # read a specific sheet to DataFrame
1

Đối với một tệp Excel 5MB mà tôi đang làm việc,

 df = pandas.read_excel["/yourPath/FileName.xlsx", None];
6 mà không cần cờ
 df = pandas.read_excel["/yourPath/FileName.xlsx", None];
7 mất 8,24s. Với cờ
 df = pandas.read_excel["/yourPath/FileName.xlsx", None];
7, nó chỉ mất 39,6 ms. Nếu bạn vẫn muốn sử dụng thư viện Excel và không rơi vào giải pháp XML, thì nhanh hơn nhiều so với các phương thức phân tích toàn bộ tệp.

Đã trả lời ngày 4 tháng 6 năm 2020 lúc 20:54Jun 4, 2020 at 20:54

flutefreak7flutefreak7flutefreak7

2.2213 huy hiệu vàng27 Huy hiệu bạc38 Huy hiệu đồng3 gold badges27 silver badges38 bronze badges

Nếu bạn:

  • quan tâm đến hiệu suất
  • Không cần dữ liệu trong tệp vào thời điểm thực thi.
  • muốn đi với các thư viện thông thường so với việc lăn giải pháp của riêng bạn

Dưới đây đã được điểm chuẩn trên tệp ~ 10MB

 df = pandas.read_excel["/yourPath/FileName.xlsx", None];
9,
df.keys[]
0.

df.keys[]
1

xl = pd.ExcelFile['foo.xls']

xl.sheet_names  # see all sheet names

xl.parse[sheet_name]  # read a specific sheet to DataFrame
2

Điểm chuẩn: ~ Cải thiện tốc độ 14 lần14x speed improvement

xl = pd.ExcelFile['foo.xls']

xl.sheet_names  # see all sheet names

xl.parse[sheet_name]  # read a specific sheet to DataFrame
3

df.keys[]
0

xl = pd.ExcelFile['foo.xls']

xl.sheet_names  # see all sheet names

xl.parse[sheet_name]  # read a specific sheet to DataFrame
4

Điểm chuẩn: ~ Cải thiện tốc độ 56 lần56x speed improvement

xl = pd.ExcelFile['foo.xls']

xl.sheet_names  # see all sheet names

xl.parse[sheet_name]  # read a specific sheet to DataFrame
5

Notes:

  • Đây là một tài nguyên tốt - //www.python-excel.org/
  • df.keys[]
    
    3 không còn được duy trì vào năm 2020

Đã trả lời ngày 9 tháng 11 năm 2020 lúc 21:24Nov 9, 2020 at 21:24

Glen Thompsonglen ThompsonGlen Thompson

8.0574 Huy hiệu vàng49 Huy hiệu bạc48 Huy hiệu đồng4 gold badges49 silver badges48 bronze badges

  1. Với tùy chọn read_workbook, những gì trước đây được coi là một cuộc hành quyết được xem rõ ràng trong nhiều giây đã xảy ra với mili giây. Tuy nhiên, giải pháp vẫn có thể được cải thiện.

    xl = pd.ExcelFile['foo.xls']
    
    xl.sheet_names  # see all sheet names
    
    xl.parse[sheet_name]  # read a specific sheet to DataFrame
    
    6
  2. Excelfile.parse mất cùng thời gian với việc đọc các XLS hoàn chỉnh theo thứ tự 10 giây của Sec. Kết quả này đã thu được với hệ điều hành Windows 10 với các phiên bản gói bên dưới

    xl = pd.ExcelFile['foo.xls']
    
    xl.sheet_names  # see all sheet names
    
    xl.parse[sheet_name]  # read a specific sheet to DataFrame
    
    7

Đã trả lời ngày 8 tháng 4 năm 2021 lúc 12:19Apr 8, 2021 at 12:19

Nếu bạn đọc tệp excel

xl = pd.ExcelFile['foo.xls']

xl.sheet_names  # see all sheet names

xl.parse[sheet_name]  # read a specific sheet to DataFrame
8

sau đó sử dụng

xl = pd.ExcelFile['foo.xls']

xl.sheet_names  # see all sheet names

xl.parse[sheet_name]  # read a specific sheet to DataFrame
9

một biến thể khác

 df = pandas.read_excel["/yourPath/FileName.xlsx", None];
0

Dominique

14.3K14 Huy hiệu vàng47 Huy hiệu bạc92 Huy hiệu Đồng14 gold badges47 silver badges92 bronze badges

Đã trả lời ngày 10 tháng 8 năm 2021 lúc 5:12Aug 10, 2021 at 5:12

Làm cách nào để có được một danh sách các tên bảng trong Excel bằng Python?

Thuật toán [các bước] tạo một biến để lưu trữ đường dẫn của tệp excel đầu vào. Để tạo/tải một đối tượng sổ làm việc, hãy truyền tệp Excel đầu vào đến hàm Load_Workbook [] của mô -đun OpenPyXL [tải một sổ làm việc]. Bằng cách áp dụng thuộc tính SheetNames vào sổ làm việc, bạn có được danh sách tất cả các tên bảng.By applying the sheetnames attribute to the workbook, you obtain a list of all the sheetnames.

Làm cách nào để có được một danh sách các tên bảng trong Excel?

Cách tạo danh sách các tên bảng từ sổ làm việc không có VBA..
Chuyển đến tab Công thức ..
Nhấn nút Xác định tên ..
Nhập các bảng vào trường tên ..
Nhập công thức sau vào trường tham khảo.= Thay thế [get.workbook [1], 1, find ["]", get.workbook [1]], ""].
Nhấn nút OK ..

Làm cách nào để xem tất cả các tờ trong excel pandas?

Sheet_name param trên pandas.read_excel [] được sử dụng để đọc nhiều tờ từ Excel.Điều này hỗ trợ đọc các tờ Excel theo tên hoặc vị trí.Khi bạn đọc nhiều tờ, nó tạo ra một bản di động của DataFrame, mỗi khóa trong từ điển được biểu diễn dưới dạng tên trang và DF cho giá trị dict. read_excel[] is used to read multiple sheets from excel. This supports reading excel sheets by name or position. When you read multiple sheets, it creates a Dict of DataFrame, each key in Dictionary is represented as Sheet name and DF for Dict value.

Làm cách nào để sao chép danh sách các tên bảng?

Mở sổ làm việc mà bạn muốn sao chép trang tính vào.Trên menu cửa sổ, nhấp vào sổ làm việc có chứa trang tính mà bạn muốn sao chép.Nhấp vào trang tính mà bạn muốn sao chép.Trên menu Chỉnh sửa, nhấp vào tờ> Di chuyển hoặc sao chép trang tính.On the Edit menu, click Sheet > Move or Copy Sheet.

Bài Viết Liên Quan

Chủ Đề