2014-04-02 19 views
7

Tôi đã từng đọc dữ liệu của mình với numpy.loadtxt(). Tuy nhiên, gần đây tôi đã phát hiện ra trong số SO, rằng pandas.read_csv() nhanh hơn rất nhiều.Đọc dữ liệu được phân tách bằng dấu cách với Pandas

Để đọc những dữ liệu này tôi sử dụng:

pd.read_csv(filename, sep=' ',header=None) 

Vấn đề mà tôi gặp phải ngay bây giờ là trong trường hợp của tôi tách có thể khác nhau từ một không gian, x không gian để ngay cả một tab.

Dưới đây cách dữ liệu của tôi có thể trông giống như:

56.00  101.85 52.40 101.85 56.000000 101.850000 1 
56.00 100.74 50.60 100.74 56.000000 100.740000 2 
56.00 100.74 52.10 100.74 56.000000 100.740000 3 
56.00 102.96 52.40 102.96 56.000000 102.960000 4 
56.00 100.74 55.40 100.74 56.000000 100.740000 5 

Điều đó dẫn đến kết quả như:

 0  1  2  3  4  5 6  7 8 
0 56  NaN NaN 101.85 52.4 101.85 56 101.85 1 
1 56 100.74 50.6 100.74 56.0 100.74 2  NaN NaN 
2 56 100.74 52.1 100.74 56.0 100.74 3  NaN NaN 
3 56 102.96 52.4 102.96 56.0 102.96 4  NaN NaN 
4 56 100.74 55.4 100.74 56.0 100.74 5  NaN NaN 

tôi phải xác định rằng dữ liệu của tôi là> 100 MB. Vì vậy, tôi không thể xử lý trước dữ liệu hoặc làm sạch chúng trước. Bất kỳ ý tưởng nào để khắc phục sự cố này?

+0

hiện 'pd.r ead_csv (tên tập tin, sep = '\ s +', header = None) 'làm việc? – EdChum

+0

Điều đó thực sự hữu ích! Cảm ơn! Làm thế nào tôi có thể chấp nhận bạn bình luận như là câu trả lời cho câu hỏi của tôi? – Tengis

+0

Cụm từ thông dụng có nghĩa là ít nhất một không gian, tôi có nên đăng câu trả lời này không? – EdChum

Trả lời

10

dòng ban đầu của bạn:

pd.read_csv(filename, sep=' ',header=None) 

được quy định cụ thể phân chia như một không gian duy nhất, bởi vì CSV của bạn có thể có khoảng trống hoặc các tab bạn có thể vượt qua một biểu thức chính quy cho sep param như vậy:

pd.read_csv(filename, sep='\s+',header=None) 

Điều này xác định dấu phân cách là một khoảng trắng đơn hoặc nhiều hơn, có một bảng tính tiện dụng liệt kê regular expressions.

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