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

350

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có một tệp bảng tính lớn [.xlsx] mà tôi đang xử lý bằng cách sử dụng python gấu trúc. Nó xảy ra rằng tôi cần dữ liệu từ hai tab [bảng] trong tệp lớn đó. Một trong những tab có rất nhiều dữ liệu và cái còn lại chỉ là một vài ô vuông.

Khi tôi sử dụng

df = pd.read_excel['excel_file_path.xls']
# this will read the first sheet into df
2 trên bất kỳ bảng tính nào, nó trông giống như toàn bộ tệp được tải [không chỉ là bảng tính mà tôi quan tâm]. Vì vậy, khi tôi sử dụng phương pháp hai lần [một lần cho mỗi tờ], tôi thực sự phải chịu toàn bộ sổ làm việc được đọc hai lần [mặc dù chúng tôi chỉ sử dụng bảng được chỉ định].

Làm cách nào để tải [các] trang tính cụ thể với

df = pd.read_excel['excel_file_path.xls']
# this will read the first sheet into df
2?

SMCI

30.7K18 Huy hiệu vàng110 Huy hiệu bạc145 Huy hiệu đồng18 gold badges110 silver badges145 bronze badges

Đã hỏi ngày 23 tháng 10 năm 2014 lúc 4:21Oct 23, 2014 at 4:21

1

Thử

df = pd.read_excel['excel_file_path.xls']
# this will read the first sheet into df
4:

xls = pd.ExcelFile['path_to_file.xls']
df1 = pd.read_excel[xls, 'Sheet1']
df2 = pd.read_excel[xls, 'Sheet2']

Theo ghi nhận của @OningAntran, toàn bộ tệp excel được đọc trong cuộc gọi

df = pd.read_excel['excel_file_path.xls']
# this will read the first sheet into df
5 [dường như không có cách nào xung quanh điều này]. Điều này chỉ đơn thuần là cứu bạn khỏi phải đọc cùng một tệp trong mỗi lần bạn muốn truy cập một tờ mới.

Lưu ý rằng đối số

df = pd.read_excel['excel_file_path.xls']
# this will read the first sheet into df
6 thành
df = pd.read_excel['excel_file_path.xls']
# this will read the first sheet into df
2 có thể là tên của trang tính [như trên], một số nguyên chỉ định số trang [ví dụ: 0, 1, v.v.], danh sách các tên hoặc chỉ số bảng hoặc
df = pd.read_excel['excel_file_path.xls']
# this will read the first sheet into df
8. Nếu một danh sách được cung cấp, nó sẽ trả về một từ điển trong đó các khóa là tên/chỉ số trang tính và các giá trị là các khung dữ liệu. Mặc định là chỉ cần trả lại tờ đầu tiên [nghĩa là
df = pd.read_excel['excel_file_path.xls']
# this will read the first sheet into df
9].

Nếu

df = pd.read_excel['excel_file_path.xls']
# this will read the first sheet into df
8 được chỉ định, tất cả các tờ được trả lại, dưới dạng từ điển
xls = pd.ExcelFile['excel_file_path.xls']

# Now you can list all sheets in the file
xls.sheet_names
# ['house', 'house_extra', ...]

# to read just one sheet to dataframe:
df = pd.read_excel[file_name, sheet_name="house"]
1.all sheets are returned, as a
xls = pd.ExcelFile['excel_file_path.xls']

# Now you can list all sheets in the file
xls.sheet_names
# ['house', 'house_extra', ...]

# to read just one sheet to dataframe:
df = pd.read_excel[file_name, sheet_name="house"]
1 dictionary.

Đã trả lời ngày 23 tháng 10 năm 2014 lúc 5:16Oct 23, 2014 at 5:16

NoahnoahNoah

20.3k8 Huy hiệu vàng63 Huy hiệu bạc71 Huy hiệu Đồng8 gold badges63 silver badges71 bronze badges

11

Có một vài tùy chọn:

Đọc tất cả các tờ trực tiếp vào một từ điển được đặt hàng.

import pandas as pd

# for pandas version >= 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheet_name=None]

# for pandas version < 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheetname=None]

Đọc tờ đầu tiên trực tiếp vào DataFrame

df = pd.read_excel['excel_file_path.xls']
# this will read the first sheet into df

Đọc tệp Excel và nhận danh sách các tờ. Sau đó chọn và tải các tấm.

xls = pd.ExcelFile['excel_file_path.xls']

# Now you can list all sheets in the file
xls.sheet_names
# ['house', 'house_extra', ...]

# to read just one sheet to dataframe:
df = pd.read_excel[file_name, sheet_name="house"]

Đọc tất cả các tờ và lưu trữ nó trong một từ điển. Giống như đầu tiên nhưng rõ ràng hơn.

# to read all sheets to a map
sheet_to_df_map = {}
for sheet_name in xls.sheet_names:
    sheet_to_df_map[sheet_name] = xls.parse[sheet_name]
    # you can also use sheet_index [0,1,2..] instead of sheet name.

Cảm ơn @ihightower vì đã chỉ ra cách đọc tất cả các tờ và @TOTO_Tico, @Red-Headphone vì đã chỉ ra sự cố phiên bản.

SheetName: Chuỗi, int, danh sách hỗn hợp các chuỗi/int hoặc không có, mặc định 0 không dùng

Đã trả lời ngày 6 tháng 9 năm 2017 lúc 18:16Sep 6, 2017 at 18:16

Vikash Singhvikash SinghVikash Singh

12.4K8 Huy hiệu vàng37 Huy hiệu bạc67 Huy hiệu Đồng8 gold badges37 silver badges67 bronze badges

2

Bạn cũng có thể sử dụng chỉ mục cho tờ:

xls = pd.ExcelFile['path_to_file.xls']
sheet1 = xls.parse[0]

sẽ đưa ra bảng tính đầu tiên. cho bảng tính thứ hai:

sheet2 = xls.parse[1]

Đã trả lời ngày 25 tháng 2 năm 2015 lúc 22:58Feb 25, 2015 at 22:58

ElliottelliottElliott

1.29112 Huy hiệu bạc12 Huy hiệu đồng12 silver badges12 bronze badges

1

Bạn cũng có thể chỉ định tên trang tính là một tham số:

data_file = pd.read_excel['path_to_file.xls', sheet_name="sheet_name"]

Sẽ chỉ tải lên trang tính

xls = pd.ExcelFile['excel_file_path.xls']

# Now you can list all sheets in the file
xls.sheet_names
# ['house', 'house_extra', ...]

# to read just one sheet to dataframe:
df = pd.read_excel[file_name, sheet_name="house"]
2.

Đã trả lời ngày 11 tháng 2 năm 2017 lúc 19:37Feb 11, 2017 at 19:37

Mat0kanMat0kanMat0kan

4214 Huy hiệu bạc4 Huy hiệu đồng4 silver badges4 bronze badges

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.xlsm', 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 một

xls = pd.ExcelFile['excel_file_path.xls']

# Now you can list all sheets in the file
xls.sheet_names
# ['house', 'house_extra', ...]

# to read just one sheet to dataframe:
df = pd.read_excel[file_name, sheet_name="house"]
3 cụ thể, chẳng hạn như

sheet1_df = pd.read_excel['FILENAME.xlsm', sheet_name=SHEET1NAME]
sheet2_df = pd.read_excel['FILENAME.xlsm', 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,

import pandas as pd

# for pandas version >= 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheet_name=None]

# for pandas version < 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheetname=None]
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ó đến một

xls = pd.ExcelFile['excel_file_path.xls']

# Now you can list all sheets in the file
xls.sheet_names
# ['house', 'house_extra', ...]

# to read just one sheet to dataframe:
df = pd.read_excel[file_name, sheet_name="house"]
3 cụ thể, chẳng hạn như

import pandas as pd

# for pandas version >= 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheet_name=None]

# for pandas version < 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheetname=None]
1

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

Gonçalo peresgonçalo peresGonçalo Peres

8.6713 Huy hiệu vàng41 Huy hiệu bạc69 Huy hiệu đồng3 gold badges41 silver badges69 bronze badges

import pandas as pd

# for pandas version >= 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheet_name=None]

# for pandas version < 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheetname=None]
2

Theo mặc định, hãy đọc tờ đầu tiên của sổ làm việc.

import pandas as pd

# for pandas version >= 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheet_name=None]

# for pandas version < 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheetname=None]
3

Đọc tờ sách cụ thể của sổ làm việc và

import pandas as pd

# for pandas version >= 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheet_name=None]

# for pandas version < 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheetname=None]
4

Đọc tất cả các bảng tính từ Excel đến Pandas DataFrame dưới dạng một loại đặt hàng có nghĩa là các khung dữ liệu lồng nhau, tất cả các bảng tính khi DataFrames được thu thập bên trong DataFrame và loại được đặt hàng.

Đã trả lời ngày 1 tháng 8 năm 2019 lúc 17:01Aug 1, 2019 at 17:01

Ashu007Ashu007Ashu007

7271 Huy hiệu vàng9 Huy hiệu bạc13 Huy hiệu đồng1 gold badge9 silver badges13 bronze badges

Nếu bạn quan tâm đến việc đọc tất cả các tờ và hợp nhất chúng lại với nhau. Cách tốt nhất và nhanh nhất để làm điều đó

import pandas as pd

# for pandas version >= 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheet_name=None]

# for pandas version < 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheetname=None]
5

Điều này sẽ chuyển đổi tất cả các trang tính thành một khung dữ liệu m_df

Đã trả lời ngày 11 tháng 8 năm 2020 lúc 3:02Aug 11, 2020 at 3:02

Anujsyalanujsyalanujsyal

1581 Huy hiệu bạc6 Huy hiệu đồng1 silver badge6 bronze badges

Bạn có thể đọc tất cả các tờ bằng cách sử dụng các dòng sau

import pandas as pd

# for pandas version >= 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheet_name=None]

# for pandas version < 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheetname=None]
6

Đã trả lời ngày 1 tháng 9 năm 2021 lúc 13:09Sep 1, 2021 at 13:09

1

If:

  • Bạn muốn nhiều, nhưng không phải tất cả, bảng tính, và
  • Bạn muốn một DF duy nhất làm đầu ra

Sau đó, bạn có thể vượt qua một danh sách các tên bảng tính. Mà bạn có thể điền thủ công:

import pandas as pd

# for pandas version >= 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheet_name=None]

# for pandas version < 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheetname=None]
7

HOẶC

Một chút tự động hóa là có thể nếu bảng tính mong muốn của bạn có một quy ước đặt tên chung cũng cho phép bạn phân biệt với các tờ không mong muốn:

import pandas as pd

# for pandas version >= 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheet_name=None]

# for pandas version < 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheetname=None]
8

Đã trả lời ngày 17 tháng 8 năm 2020 lúc 21:32Aug 17, 2020 at 21:32

CreekgeekcaletekgeekCreekGeek

1.4891 Huy hiệu vàng12 Huy hiệu bạc20 Huy hiệu Đồng1 gold badge12 silver badges20 bronze badges

1

import pandas as pd

# for pandas version >= 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheet_name=None]

# for pandas version < 0.21.0
sheet_to_df_map = pd.read_excel[file_name, sheetname=None]
9

Điều này sẽ đọc bảng

xls = pd.ExcelFile['excel_file_path.xls']

# Now you can list all sheets in the file
xls.sheet_names
# ['house', 'house_extra', ...]

# to read just one sheet to dataframe:
df = pd.read_excel[file_name, sheet_name="house"]
5 từ tệp
xls = pd.ExcelFile['excel_file_path.xls']

# Now you can list all sheets in the file
xls.sheet_names
# ['house', 'house_extra', ...]

# to read just one sheet to dataframe:
df = pd.read_excel[file_name, sheet_name="house"]
6

Đã trả lời ngày 27 tháng 6 năm 2021 lúc 10:32Jun 27, 2021 at 10:32

TajindertajinderTajinder

2.1784 Huy hiệu vàng30 Huy hiệu bạc 50 Huy hiệu Đồng4 gold badges30 silver badges50 bronze badges

Có, thật không may, nó sẽ luôn tải toàn bộ tệp. Nếu bạn đang làm điều này nhiều lần nhất có lẽ là tốt nhất để trích xuất các tấm để tách CSV và sau đó tải riêng. Bạn có thể tự động hóa quy trình đó với D6TStack cũng thêm các tính năng bổ sung như kiểm tra xem tất cả các cột đều bằng nhau trên tất cả các tờ hoặc nhiều tệp Excel.

df = pd.read_excel['excel_file_path.xls']
# this will read the first sheet into df
0

Xem các ví dụ excel D6Tstack

Đã trả lời ngày 17 tháng 12 năm 2018 lúc 3:10Dec 17, 2018 at 3:10

CityNormancitynormancitynorman

4.4902 Huy hiệu vàng34 Huy hiệu bạc38 Huy hiệu Đồng2 gold badges34 silver badges38 bronze badges

Nếu bạn đã lưu tệp Excel trong cùng một thư mục với chương trình Python của bạn [đường dẫn tương đối] thì bạn chỉ cần đề cập đến số trang cùng với tên tệp.

Example:

df = pd.read_excel['excel_file_path.xls']
# this will read the first sheet into df
1

Albert

7.3578 Huy hiệu vàng44 Huy hiệu bạc79 Huy hiệu đồng8 gold badges44 silver badges79 bronze badges

Đã trả lời ngày 13 tháng 1 năm 2020 lúc 7:25Jan 13, 2020 at 7:25

Làm thế nào đọc nhiều tệp excel trong gấu trúc?

Approach:..
Nhập các gói Python cần thiết như Gandas, Glob và OS ..
Sử dụng gói Glob Python để truy xuất các tệp/tên đường dẫn khớp với một mẫu được chỉ định, tức là '. xlsx '.
Vòng lặp qua danh sách các tệp excel, đọc tệp đó bằng gấu trúc. ....
Chuyển đổi từng tệp Excel thành DataFrame ..
Hiển thị vị trí, tên và nội dung của nó ..

Làm cách nào để thêm nhiều tờ trong excel vào gấu trúc?

Để ghi vào nhiều tờ, cần phải tạo một đối tượng Excelwriter với tên tệp đích và chỉ định một tờ trong tệp để ghi vào.Nhiều tờ có thể được viết bằng cách chỉ định bảng độc đáo.Với tất cả dữ liệu được ghi vào tệp, cần phải lưu các thay đổi.create an ExcelWriter object with a target file name, and specify a sheet in the file to write to. Multiple sheets may be written to by specifying unique sheet_name . With all data written to the file it is necessary to save the changes.

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

Làm cách nào để đọc một tệp XLSX trong Python ?..
Nhập OpenPyxl từ đường dẫn nhập Pathlib XLSX_FILE = PATH ['SIMDATA', 'play_data. XLSX'] wb_obj = openpyxl.load_workbook [xlsx_file] # đọc bảng hoạt động: sheet = wb_obj.tích cực..
Nhập OpenPyxl từ đường dẫn nhập Pathlib ..

Tại sao gấu trúc nhanh hơn Excel?

Bởi vì nó được xây dựng trên Numpy [Python số], Pandas tự hào có một số lợi thế so với Excel: Khả năng mở rộng - Pandas chỉ bị giới hạn bởi phần cứng và có thể điều khiển số lượng dữ liệu lớn hơn.Tốc độ - Pandas nhanh hơn nhiều so với Excel, điều này đặc biệt đáng chú ý khi làm việc với số lượng dữ liệu lớn hơn.Pandas is much faster than Excel, which is especially noticeable when working with larger quantities of data.

Bài Viết Liên Quan

Chủ Đề