2013-07-09 19 views
9

làm cách nào để nhập dữ liệu excel vào một khung dữ liệu trong python.đọc excel vào khung dữ liệu python bắt đầu từ hàng 5 và bao gồm tiêu đề

Về cơ bản, sổ làm việc excel hiện tại chạy một số vba khi mở, làm mới bảng tổng hợp và thực hiện một số nội dung khác.

Sau đó, tôi muốn nhập kết quả làm mới bảng pivot vào một khung dữ liệu trong python để phân tích thêm.

import xlrd 

wb = xlrd.open_workbook('C:\Users\cb\Machine_Learning\cMap_Joins.xlsm') 

#sheetnames 
print wb.sheet_names() 

#number of sheets 
print wb.nsheets 

Việc làm mới và mở tệp hoạt động tốt. Nhưng làm thế nào để tôi chọn dữ liệu từ trang tính đầu tiên từ nói hàng 5 bao gồm tiêu đề xuống đến bản ghi cuối cùng n.

+0

Cảm ơn Andy. Tôi không thể có được pd.ExcelFile để làm việc với một tập tin .xlsm và dường như không thể cài đặt openpyxl mà là nghĩa vụ phải làm việc với các tập tin .xlsx và .xlsm. Tôi chỉ cần thay đổi vba của tôi để tiết kiệm như .xls. tất cả mọi thứ đã làm việc sau đó ngoại trừ phần skip_rows = 4 nhưng tôi đã gỡ bỏ các hàng không mong muốn sau này trong python với df2 = df [2:] – IcemanBerlin

+0

Oh. Trên thực tế chỉ cần điều chỉnh skip_rows = 4 với skiprows = 4 và phần đó đã làm việc quá. cảm ơn rất nhiều. Bạn nhận được một ngôi sao bạc ... vàng nếu tập tin .xlsm đã làm việc;) – IcemanBerlin

+0

Rất tiếc xấu! Sẽ thêm một vấn đề về các tập tin xlsm trên github. –

Trả lời

18

Bạn có thể sử dụng gấu trúc ExcelFile parse phương pháp để đọc tờ Excel, xem io docs:

xls = pd.ExcelFile('C:\Users\cb\Machine_Learning\cMap_Joins.xlsm') 

df = xls.parse('Sheet1', skiprows=4, index_col=None, na_values=['NA']) 

skiprows sẽ bỏ qua 4 hàng đầu tiên (tức bắt đầu từ chỉ số hàng 4), và một số other options.

+0

Ngoài * pandas.read_excel() * này cũng có thể được sử dụng để đọc các tệp excel. Nó giống như pandas.ExcelFile() – rrawat

+0

@rwt ['pd.read_excel'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html) được ưu tiên hơn, câu trả lời này trước -đã chia nhỏ! –

5

Câu trả lời được chấp nhận là cũ (như được thảo luận trong các nhận xét của câu trả lời được chấp nhận). Hiện tại, tùy chọn ưu tiên đang sử dụng pd.read_excel()