2015-07-11 25 views
8

Tôi có xu hướng nhập tệp .csv vào gấu trúc, nhưng đôi khi tôi có thể nhận dữ liệu ở các định dạng khác để tạo các đối tượng DataFrame.Sự khác biệt về hiệu suất trong gấu trúc read_table so với read_csv so với from_csv so với read_excel?

Hôm nay, tôi vừa phát hiện ra khoảng read_table làm nhà nhập khẩu "chung chung" cho các định dạng khác và tự hỏi liệu có sự khác biệt về hiệu suất đáng kể giữa các phương pháp khác nhau trong gấu trúc không để đọc tệp .csv, ví dụ: read_table, from_csv, read_excel.

  1. Những phương pháp khác có hiệu suất tốt hơn read_csv?
  2. Có phải read_csv khác nhiều so với from_csv để tạo một DataFrame?

Trả lời

19
  1. read_tableread_csv với sep=',' thay thế bằng sep='\t', họ là hai giấy gói mỏng xung quanh chức năng tương tự vì vậy hiệu suất sẽ giống hệt nhau. read_excel sử dụng gói xlrd để đọc tệp xls và xlsx vào một DataFrame, nó không xử lý tệp csv.
  2. from_csv gọi read_table, vì vậy không.
4

Tôi đã tìm thấy CSV và văn bản phân tách bằng tab (.txt) tương đương với tốc độ đọc và ghi, cả hai đều nhanh hơn nhiều so với đọc và ghi các tệp MS Excel. Tuy nhiên, định dạng Excel nén kích thước tệp rất nhiều.


Đối với các tập tin CSV 320 MB cùng (16 MB .xlsx) (i7-7700k, SSD, chạy Anaconda Python 3.5.3, Pandas 0.19.2)

Sử dụng quy ước chuẩn import pandas as pd

2 giây để đọc .csv df = pd.read_csv('foo.csv') (tương tự cho pd.read_table)

15,3 giây để đọc .xlsx df = pd.read_excel('foo.xlsx')

10,5 giây để viết .csv df.to_csv('bar.csv', index=False) (tương tự cho .txt)

34,5 giây để viết .xlsx df.to_excel('bar.xlsx', sheet_name='Sheet1', index=False)


Để viết dataframes của bạn để tập tin văn bản tab-delimited bạn có thể sử dụng:

df.to_csv('bar.txt', sep='\t', index=False)

Các vấn đề liên quan