Tôi muốn đưa ra câu trả lời toàn diện hơn dựa trên hầu hết các giải pháp tiềm năng đã được cung cấp. Tôi cũng muốn chỉ ra thêm một công cụ hỗ trợ tiềm năng có thể giúp ích cho quá trình đọc
lựa chọn 1. dtypes
"dtypes" là một tham số khá mạnh mẽ mà bạn có thể sử dụng để giảm áp lực bộ nhớ của các phương thức read
. Xem và câu trả lời này. Pandas, theo mặc định, cố gắng suy ra các loại dữ liệu
Đề cập đến cấu trúc dữ liệu, mọi dữ liệu được lưu trữ, cấp phát bộ nhớ diễn ra. Ở cấp độ cơ bản, hãy tham khảo các giá trị bên dưới [Bảng bên dưới minh họa các giá trị cho ngôn ngữ lập trình C]
The maximum value of UNSIGNED CHAR = 255
The minimum value of SHORT INT = -32768
The maximum value of SHORT INT = 32767
The minimum value of INT = -2147483648
The maximum value of INT = 2147483647
The minimum value of CHAR = -128
The maximum value of CHAR = 127
The minimum value of LONG = -9223372036854775808
The maximum value of LONG = 9223372036854775807
Tham khảo trang này để xem sự phù hợp giữa các loại NumPy và C
Giả sử bạn có một dãy số nguyên gồm các chữ số. Bạn có thể gán cả về mặt lý thuyết và thực tế, chẳng hạn như mảng kiểu số nguyên 16 bit, nhưng sau đó bạn sẽ cấp phát nhiều bộ nhớ hơn mức thực sự cần để lưu trữ mảng đó. Để ngăn chặn điều này, bạn có thể đặt tùy chọn dtype
trên read_csv
. Bạn không muốn lưu trữ các mục mảng dưới dạng số nguyên dài mà thực tế bạn có thể khớp chúng với số nguyên 8 bit [np.int8
hoặc np.uint8
]
Quan sát bản đồ dtype sau
Nguồn. https. //pbpython. com/pandas_dtypes. html
Bạn có thể truyền tham số dtype
dưới dạng tham số trên các phương thức pandas dưới dạng dict trên read
như {column. loại hình}
import numpy as np
import pandas as pd
df_dtype = {
"column_1": int,
"column_2": str,
"column_3": np.int16,
"column_4": np.uint8,
...
"column_n": np.float32
}
df = pd.read_csv['path/to/file', dtype=df_dtype]
Lựa chọn 2. Đọc bởi Chunks
Đọc dữ liệu theo khối cho phép bạn truy cập một phần dữ liệu trong bộ nhớ và bạn có thể áp dụng tiền xử lý trên dữ liệu của mình và bảo toàn dữ liệu đã xử lý thay vì dữ liệu thô. Sẽ tốt hơn nhiều nếu bạn kết hợp tùy chọn này với tùy chọn đầu tiên, dtypes
Tôi muốn chỉ ra các phần sách nấu ăn gấu trúc cho quá trình đó, nơi bạn có thể tìm thấy nó. Lưu ý hai phần ở đó;
Tùy chọn 3. dask
Dask là một khung được định nghĩa trong trang web của Dask là
Dask cung cấp khả năng xử lý song song nâng cao cho phân tích, cho phép hiệu suất trên quy mô lớn cho các công cụ bạn yêu thích
Nó được sinh ra để che đi những phần cần thiết mà gấu trúc không với tới được. Dask là một khung mạnh mẽ cho phép bạn truy cập nhiều dữ liệu hơn bằng cách xử lý nó theo cách phân tán
Bạn có thể sử dụng dask để xử lý trước toàn bộ dữ liệu của mình, Dask đảm nhiệm phần chunking, vì vậy không giống như gấu trúc, bạn chỉ có thể xác định các bước xử lý của mình và để Dask thực hiện công việc. Dask không áp dụng các tính toán trước khi nó được đẩy rõ ràng bởi
import numpy as np
import pandas as pd
df_dtype = {
"column_1": int,
"column_2": str,
"column_3": np.int16,
"column_4": np.uint8,
...
"column_n": np.float32
}
df = pd.read_csv['path/to/file', dtype=df_dtype]
0 và/hoặc import numpy as np
import pandas as pd
df_dtype = {
"column_1": int,
"column_2": str,
"column_3": np.int16,
"column_4": np.uint8,
...
"column_n": np.float32
}
df = pd.read_csv['path/to/file', dtype=df_dtype]
0 [xem câu trả lời tại đây để biết sự khác biệt] Pandas là thư viện phổ biến nhất trong hệ sinh thái Python cho mọi tác vụ phân tích dữ liệu. Chúng tôi đã sử dụng nó thường xuyên với Python.
Đó là một công cụ tuyệt vời khi tập dữ liệu nhỏ, chẳng hạn như dưới 2–3 GB. Nhưng khi kích thước của tập dữ liệu tăng vượt quá 2–3 GB, bạn không nên sử dụng Pandas
Pandas tải toàn bộ dữ liệu vào bộ nhớ trước khi thực hiện bất kỳ xử lý nào trên khung dữ liệu. Vì vậy, nếu kích thước của tập dữ liệu lớn hơn bộ nhớ, bạn sẽ gặp lỗi bộ nhớ. Do đó, Pandas không phù hợp với bộ dữ liệu bộ nhớ lớn hơn.
Đôi khi, ngay cả khi tập dữ liệu nhỏ hơn bộ nhớ, chúng tôi vẫn gặp sự cố về bộ nhớ. Bởi vì trong quá trình tiền xử lý và chuyển đổi, Pandas tạo một bản sao của khung dữ liệu do đó làm tăng dung lượng bộ nhớ, sau đó gây ra lỗi bộ nhớ
Vì bạn đang đọc bài viết này, tôi cho rằng bạn có thể muốn sử dụng Pandas để có nhiều tính năng mặc dù tập dữ liệu lớn.
Nhưng, có thể sử dụng Pandas trên bộ dữ liệu bộ nhớ lớn hơn không? . Bạn có thể xử lý các tập dữ liệu lớn trong python bằng Pandas với một số kỹ thuật. NHƯNG, đến một mức độ nhất định.
Hãy cùng xem một số kỹ thuật về cách xử lý các tập dữ liệu lớn hơn trong Python bằng Pandas. Những kỹ thuật này sẽ giúp bạn xử lý hàng triệu bản ghi trong Python
Các kỹ thuật xử lý tập dữ liệu lớn
Chúng tôi sẽ sử dụng Dữ liệu chuyến đi taxi màu vàng NYC cho năm 2016. Kích thước của tập dữ liệu là khoảng 1. 5 GB đủ tốt để giải thích các kỹ thuật bên dưới