Tuy nhiên, một thư viện Python khác để phân tích dữ liệu mà bạn nên biết - và không, tôi không nói về Spark hoặc Dask
Ảnh của Christian Englmeier trên unplashPhân tích dữ liệu lớn trong Python đang có thời Phục hưng. Tất cả bắt đầu với Numpy, cũng là một trong những khối xây dựng phía sau công cụ tôi đang trình bày trong bài viết này.ig Data Analysis in Python is having its renaissance. It all started with NumPy, which is also one of the building blocks behind the tool I am presenting in this article.
Vào năm 2006, dữ liệu lớn là một chủ đề đang dần đạt được lực kéo, đặc biệt là với việc phát hành Hadoop. Pandas theo sau ngay sau đó với các khung dữ liệu của nó. Năm 2014 là năm mà dữ liệu lớn trở thành chủ đạo, Apache Spark được phát hành năm đó. Trong năm 2018 đã đến Dask và các thư viện khác để phân tích dữ liệu trong Python.
Mỗi tháng tôi tìm thấy một công cụ phân tích dữ liệu mới, mà tôi mong muốn tìm hiểu. Đó là một khoản đầu tư xứng đáng là dành một hoặc hai giờ cho các hướng dẫn vì nó có thể giúp bạn tiết kiệm rất nhiều thời gian trong thời gian dài. Nó cũng rất quan trọng để giữ liên lạc với công nghệ mới nhất.
Mặc dù bạn có thể mong đợi rằng bài viết này sẽ là về DASK, bạn đã sai. Tôi tìm thấy một thư viện Python khác để phân tích dữ liệu mà bạn nên biết.
Giống như Python, điều quan trọng không kém là bạn trở nên thành thạo SQL. Trong trường hợp bạn không quen thuộc với nó và bạn có một số tiền để dự phòng, hãy xem khóa học này: Master SQL, ngôn ngữ cốt lõi để phân tích dữ liệu lớn.
Phân tích dữ liệu lớn trong Python đang có thời Phục hưng
Dưới đây là một vài liên kết có thể khiến bạn quan tâm:
- Complete your Python analyses 10x faster with Mito [Product]- Free skill tests for Data Scientists & ML Engineers [Test]- All New Self-Driving Car Engineer Nanodegree [Course]Bạn có muốn đọc thêm các bài viết như vậy không? Nếu vậy, bạn có thể hỗ trợ tôi bằng cách nhấp vào bất kỳ liên kết nào ở trên. Một số trong số chúng là các liên kết liên kết, nhưng bạn không cần phải mua bất cứ thứ gì.
Gặp Vaex
Ảnh của Mathew Schwartz trên unplashVAEX là một thư viện Python hiệu suất cao cho các khung dữ liệu ngoài lõi lười biếng (tương tự như gấu trúc), để trực quan hóa và khám phá các bộ dữ liệu bảng lớn.
Nó có thể tính toán số liệu thống kê cơ bản cho hơn một tỷ hàng mỗi giây. Nó hỗ trợ nhiều trực quan cho phép thăm dò tương tác dữ liệu lớn.
Điều gì khác biệt giữa Vaex và Dask?
Ảnh của Stillness Inmotion trên UnplashVAEX không tương tự như DASK nhưng tương tự như Dask DataFrames, được xây dựng trên các khung dữ liệu gấu trúc hàng đầu. Điều này có nghĩa là DASK kế thừa các vấn đề về gấu trúc, như sử dụng bộ nhớ cao. Đây không phải là trường hợp Vaex.
Vaex không tạo ra các bản sao DataFrame để nó có thể xử lý khung dữ liệu lớn hơn trên các máy có bộ nhớ chính ít hơn.
Cả Vaex và Dask đều sử dụng xử lý lười biếng. Sự khác biệt duy nhất là Vaex tính toán trường khi cần thiết, trong đó chúng ta cần sử dụng rõ ràng chức năng tính toán.
Dữ liệu cần phải ở định dạng mũi tên HDF5 hoặc Apache để tận dụng tối đa VAEX.
Làm thế nào để cài đặt Vaex?
Để cài đặt Vaex đơn giản như cài đặt bất kỳ gói Python nào khác:
pip install vaexHãy cùng đưa Vaex vào lái thử
Ảnh của Eugene Chystiakov trên unplashHãy cùng tạo ra một khung dữ liệu gấu trúc với 1 triệu hàng và 1000 cột để tạo một tệp dữ liệu lớn.
import vaeximport pandas as pd
import numpy as npn_rows = 1000000
n_cols = 1000
df = pd.DataFrame(np.random.randint(0, 100, size=(n_rows, n_cols)), columns=['col%d' % i for i in range(n_cols)])df.head()first vài dòng trong gấu trúc DataFrame (hình ảnh được tạo bởi tác giả)
DataFrame này sử dụng bao nhiêu bộ nhớ chính?
df.info(memory_usage='deep')Hãy để Lôi lưu nó vào đĩa để chúng ta có thể đọc nó sau với Vaex.
file_path = 'big_file.csv'df.to_csv(file_path, index=False)
Chúng tôi sẽ đạt được nhiều bằng cách đọc toàn bộ CSV trực tiếp với Vaex vì tốc độ sẽ tương tự như gấu trúc. Cả hai cần khoảng 85 giây trên máy tính xách tay của tôi.
Chúng ta cần chuyển đổi CSV thành HDF5 (định dạng dữ liệu phân cấp phiên bản 5) để xem lợi ích với VAEX. VAEX có chức năng chuyển đổi, thậm chí hỗ trợ các tệp lớn hơn bộ nhớ chính bằng cách chuyển đổi các khối nhỏ hơn.
dv = vaex.from_csv(file_path, convert=True, chunk_size=5_000_000)Nếu bạn không thể mở một tệp lớn với gấu trúc, vì các ràng buộc bộ nhớ, bạn có thể che nó thành HDF5 và xử lý nó với Vaex.
Hàm này tạo ra một tệp HDF5 và tồn tại với đĩa.
Những gì các kiểu dữ liệu của DV?
type(dv)# outputvaex.hdf5.dataset.Hdf5MemoryMapped
Bây giờ, hãy để đọc bộ dữ liệu 7,5 GB với VAEX - chúng tôi sẽ không cần đọc lại vì chúng tôi đã có nó trong biến DV. Đây chỉ là để kiểm tra tốc độ.
dv = vaex.open('big_file.csv.hdf5')Vaex cần ít hơn 1 giây để thực thi lệnh ở trên. Nhưng Vaex didn thực sự đọc tập tin, vì tải lười biếng, phải không?
Hãy để lực lượng để đọc nó bằng cách tính một tổng của col1.
suma = dv.col1.sum()suma# Output
# array(49486599)
Tôi thực sự ngạc nhiên về điều này. Vaex cần ít hơn 1 giây để tính tổng. Làm thế nào là có thể?
Mở dữ liệu như vậy là tức thời bất kể kích thước tệp trên đĩa. Vaex sẽ chỉ bản đồ bộ nhớ dữ liệu thay vì đọc nó trong bộ nhớ. Đây là cách làm việc tối ưu với các bộ dữ liệu lớn lớn hơn RAM có sẵn.
Âm mưu
Vaex cũng nhanh khi vẽ dữ liệu. Nó có các chức năng âm mưu đặc biệt Plot1D, Plot2D và Plot2D_Contour.
dv.plot1d(dv.col2, figsize=(14, 7))plotting với Vaex (hình ảnh được thực hiện bởi tác giả)Cột ảo
Vaex tạo ra một cột ảo khi thêm một cột mới, - một cột không có bộ nhớ chính khi nó được tính toán khi đang bay.
pip install vaex0 Cột ảo trong Vaex (hình ảnh được tạo bởi tác giả)Lọc hiệu quả
Vaex đã giành được bản sao DataFrame khi lọc dữ liệu, hiệu quả hơn về bộ nhớ.
pip install vaex1Tổng hợp
Các tập hợp hoạt động hơi khác so với trong gấu trúc, nhưng quan trọng hơn, chúng rất nhanh.
Hãy để thêm một cột ảo nhị phân trong đó col1 ≥ 50.
pip install vaex2VAEX kết hợp nhóm theo và tổng hợp trong một lệnh duy nhất. Lệnh dưới đây dữ liệu nhóm theo cột COL1_50 và tính toán tổng của cột COL3.
pip install vaex3Aggregations in Vaex (hình ảnh được tạo bởi tác giả)Tham gia
VAEX tham gia dữ liệu mà không tạo bản sao bộ nhớ, lưu bộ nhớ chính. Người dùng Pandas sẽ quen thuộc với chức năng tham gia:
pip install vaex4Sự kết luận
Cuối cùng, bạn có thể hỏi: Chúng ta có nên chuyển từ gấu trúc sang Vaex không? Câu trả lời là một không lớn.
Pandas vẫn là công cụ tốt nhất để phân tích dữ liệu trong Python. Nó có các chức năng được hỗ trợ tốt cho các nhiệm vụ phân tích dữ liệu phổ biến nhất.
Khi nói đến các tệp lớn hơn, gấu trúc có thể không phải là công cụ nhanh nhất. Đây là một nơi tuyệt vời để Vaex nhảy vào.
VAEX là một công cụ bạn nên thêm vào hộp công cụ phân tích dữ liệu của mình.
Khi làm việc trong một nhiệm vụ phân tích trong đó gấu trúc quá chậm hoặc đơn giản là bị rơi, hãy kéo Vaex ra khỏi hộp công cụ của bạn, hãy lọc ra các mục quan trọng nhất và tiếp tục phân tích với gấu trúc.
Trước khi bạn đi
Theo dõi tôi trên Twitter, nơi tôi thường xuyên tweet về khoa học dữ liệu và học máy.