Hướng dẫn get sheet name excel pandas - lấy tên trang tính excel 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.0874 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.4K14 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 để lấy tên trang tính trong Excel bằng Python?

Bước 1: Đầu tiên nhập thư viện OpenPyXL vào chương trình. Bước 2: Tải/Kết nối sổ làm việc Excel với chương trình. Bước 3: Sử dụng thuộc tính Tờ Tên để lấy tên của tất cả các tờ của sổ làm việc đã cho. Hy vọng bạn đã học được cách lấy tên của các tờ bằng cách sử dụng OpenPyXL trong Python từ bài viết này.Use sheetnames property to get the names of all the sheets of the given workbook. Hope you have learned how to get the names of the sheets using the openpyxl in python from this article.

Làm cách nào để xem các tấm excel trong gấu trúc?

Để đọc một tệp excel dưới dạng dataFrame, hãy sử dụng phương thức pandas read_excel [].Bạn có thể đọc tờ đầu tiên, tờ cụ thể, nhiều tờ hoặc tất cả các tờ.Pandas chuyển đổi điều này thành cấu trúc DataFrame, là một cấu trúc giống như bảng.use the pandas read_excel[] method. You can read the first sheet, specific sheets, multiple sheets or all sheets. Pandas converts this to the DataFrame structure, which is a tabular like structure.

Làm cách nào để tạo danh sách các tên bảng trong sổ làm việc?

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 để đọc tệp XLSX trong gấu trúc?

Chức năng pandas.read_excel [] được sử dụng để đọc bảng Excel với phần mở rộng XLSX vào gấu trúc DataFrame.Bằng cách đọc một tờ duy nhất, nó trả về một đối tượng DataFrame của gấu trúc, nhưng đọc hai tờ, nó trả về một dict của DataFrame.Có thể tải các tệp Excel được lưu trữ trong hệ thống tập tin cục bộ hoặc từ URL. read_excel[] function is used to read excel sheet with extension xlsx into pandas DataFrame. By reading a single sheet it returns a pandas DataFrame object, but reading two sheets it returns a Dict of DataFrame. Can load excel files stored in a local filesystem or from an URL.

Chủ Đề