Đọc dữ liệu lớn trong Python

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

Làm cách nào để phân tích Dữ liệu lớn trong Python?

Các công cụ Python dành cho Dữ liệu lớn và Phân tích .
Thư viện phân tích dữ liệu Pandas là một trong những gói nổi bật nhất trong số các gói này. .
Tiếp theo. NumPy [Python số] có sẵn nếu bạn cần một gói để xử lý các hàm toán học và tính toán khoa học. .
Trực quan hóa dữ liệu cũng quan trọng như phân tích

Python có thể xử lý Dữ liệu lớn không?

Python cung cấp một số lượng lớn thư viện để hoạt động trên Dữ liệu lớn . Bạn cũng có thể làm việc - về mặt phát triển mã - sử dụng Python cho Dữ liệu lớn nhanh hơn nhiều so với bất kỳ ngôn ngữ lập trình nào khác. Hai khía cạnh này đang cho phép các nhà phát triển trên toàn thế giới sử dụng Python làm ngôn ngữ được lựa chọn cho các dự án Dữ liệu lớn.

Làm thế nào để đọc Dữ liệu lớn?

Dưới đây là 11 mẹo để tận dụng tối đa tập dữ liệu lớn của bạn. .
Trân trọng dữ liệu của bạn. “Giữ nguyên dữ liệu thô của bạn. không thao túng nó mà không có một bản sao,” Teal nói. .
Trực quan hóa thông tin
Hiển thị quy trình làm việc của bạn. .
Sử dụng kiểm soát phiên bản. .
Ghi lại siêu dữ liệu. .
Tự động hóa, tự động hóa, tự động hóa. .
Làm cho thời gian tính toán được tính. .
Nắm bắt môi trường của bạn

Python có thể xử lý 1 tỷ hàng không?

Giới thiệu về Vaex. Vaex là một thư viện python là khung dữ liệu ngoài lõi, có thể xử lý tới 1 tỷ hàng mỗi giây . 1 tỷ hàng.

Chủ Đề