Cách đọc tệp 1TB bằng Python
Vấn đề. Nhập (đọc) tệp CSV lớn dẫn đến lỗi Hết bộ nhớ. Không đủ RAM để đọc toàn bộ CSV cùng một lúc làm hỏng máy tính Show
Dưới đây là một số cách hiệu quả để nhập CSV bằng Python Bây giờ thì sao? . Tạo một khung dữ liệu gồm 15 cột và 10 triệu hàng với các số và chuỗi ngẫu nhiên. Xuất nó sang định dạng CSV có kích thước khoảng ~ 1 GB df = pd.DataFrame(data=np.random.randint(99999, 99999999, size=(10000000,14)),columns=['C1','C2','C3','C4','C5','C6','C7','C8','C9','C10','C11','C12','C13','C14'])df['C15'] = pd.util.testing.rands_array(5,10000000) Bây giờ, hãy xem xét các tùy chọn nhập và so sánh thời gian cần thiết để đọc CSV vào bộ nhớ GẤU TRÚCThư viện pandas python cung cấp hàm read_csv() để nhập CSV dưới dạng cấu trúc khung dữ liệu để tính toán hoặc phân tích dễ dàng. Hàm này cung cấp một tham số được mô tả trong phần sau để nhập tệp khổng lồ của bạn nhanh hơn nhiều 1. gấu trúc. read_csv()Đầu vào. Đọc tệp CSV gấu trúc. read_csv() tải toàn bộ tệp CSV cùng một lúc vào bộ nhớ trong một khung dữ liệu duy nhất start = time.time() Điều này đôi khi có thể làm hỏng hệ thống của bạn do lỗi OOM (Hết bộ nhớ) nếu kích thước CSV lớn hơn kích thước bộ nhớ (RAM) của bạn. Giải pháp được cải thiện bằng cách nhập tiếp theo 2. gấu trúc. read_csv(cỡ khối)Đầu vào. Đọc tệp CSV Thay vì đọc toàn bộ CSV cùng một lúc, các đoạn CSV được đọc vào bộ nhớ. Kích thước của một đoạn được chỉ định bằng tham số chunksize đề cập đến số lượng dòng. Hàm này trả về một trình lặp để lặp qua các khối này và sau đó xử lý chúng một cách mong muốn. Vì chỉ một phần của tệp lớn được đọc cùng một lúc nên bộ nhớ thấp là đủ để chứa dữ liệu. Sau đó, các khối này có thể được nối trong một khung dữ liệu duy nhất start = time.time() Tùy chọn này nhanh hơn và tốt nhất nên sử dụng khi bạn có RAM hạn chế. Ngoài ra, một thư viện python mới, DASK cũng có thể được sử dụng, được mô tả bên dưới DASKĐầu vào. Đọc tệp CSV Khi đọc các tệp CSV lớn, bạn có thể gặp phải lỗi hết bộ nhớ nếu nó không vừa với RAM của bạn, do đó DASK xuất hiện
pip install dask Chà, khi tôi thử cách trên, nó đã tạo ra một số vấn đề sau đó, vấn đề này đã được giải quyết bằng cách sử dụng một số liên kết GitHub để thêm đường dẫn dask bên ngoài làm biến môi trường. Nhưng tại sao phải làm ầm lên khi có sẵn một tùy chọn đơn giản hơn? conda install dask
from dask import dataframe as ddstart = time.time() Dask dường như là cách nhanh nhất để đọc tệp CSV lớn này mà không làm hỏng hoặc làm chậm máy tính. Ồ. Làm thế nào tốt là điều đó?. Một thư viện Python mới với những cái hiện có đã được sửa đổi để giới thiệu khả năng mở rộng Tại sao DASK tốt hơn PANDAS?
Một số thư viện do DASK cung cấp được hiển thị bên dưới
Chúng tôi sẽ chỉ tập trung vào Dataframe vì hai cái còn lại nằm ngoài phạm vi. Tuy nhiên, để làm bẩn tay bạn với những thứ đó, blog này là tốt nhất để xem xét Làm thế nào Dask quản lý để lưu trữ dữ liệu lớn hơn bộ nhớ (RAM)?Khi chúng tôi nhập dữ liệu, dữ liệu sẽ được đọc vào RAM, điều này làm nổi bật giới hạn bộ nhớ. Sẽ không khó hiểu với những ai đã quen với gấu trúc Phần kết luận Việc đọc ~1 GB CSV trong bộ nhớ với nhiều tùy chọn nhập khác nhau có thể được đánh giá bằng thời gian tải vào bộ nhớ gấu trúc. read_csv tệ nhất khi đọc CSV có kích thước lớn hơn RAM. Do đó, tôi khuyên bạn nên ra khỏi vùng thoải mái của mình khi sử dụng pandas và thử dask. Nhưng chỉ FYI, tôi chỉ kiểm tra DASK để đọc CSV lớn chứ không phải tính toán như chúng tôi làm trong gấu trúc Làm cách nào để đọc tệp 100gb bằng Python?Đọc tệp văn bản lớn bằng Python
. Trình vòng lặp sẽ trả về từng dòng một, có thể được xử lý. Điều này sẽ không đọc toàn bộ tệp vào bộ nhớ và nó phù hợp để đọc các tệp lớn trong Python. use the file object as an iterator. The iterator will return each line one by one, which can be processed. This will not read the whole file into memory and it's suitable to read large files in Python.
Làm cách nào để đọc tệp 10gb bằng Python?Cách nhanh nhất của Python để đọc tệp văn bản lớn (vài GB) . # Tập tin. readline-ví dụ-3. py tệp = mở ("mẫu. txt") trong khi 1 dòng = tập tin. đường đọc(100000) nếu không dòng nghỉ cho dòng trong dòng vượt qua # làm gì đó**văn bản mạnh** Làm cách nào để đọc tệp CSV 10gb bằng Python?GẤU TRÚC . gấu trúc. read_csv() Đầu vào. Đọc tệp CSV. đầu ra. khung dữ liệu gấu trúc. gấu trúc. read_csv() tải toàn bộ tệp CSV cùng một lúc vào bộ nhớ trong một khung dữ liệu duy nhất. . gấu trúc. read_csv(chunksize) Đầu vào. Đọc tệp CSV. đầu ra. khung dữ liệu gấu trúc. Thay vì đọc toàn bộ CSV cùng một lúc, các đoạn CSV được đọc vào bộ nhớ Làm thế nào để đọc các tập tin lớn?Giải pháp 1. Tải xuống Trình xem tệp lớn chuyên dụng
. Những công cụ như vậy sẽ mở các tệp văn bản lớn một cách dễ dàng |