Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?

Điều tốt nhất để làm ở đây là không cố gắng đoán, hoặc đọc mã nguồn và viết lên một bằng chứng nghiêm ngặt, mà là thực hiện một số bài kiểm tra. Có rất nhiều sự phức tạp khiến những điều này khó dự đoán. Ví dụ: nếu bạn có 100k bản sao của cùng một chuỗi, liệu Python sẽ lưu trữ 100k bản sao dữ liệu chuỗi thực tế hay chỉ 1? Nó phụ thuộc vào trình thông dịch và phiên bản Python của bạn, và tất cả các loại thứ khác.

Tài liệu cho sys.getsizeof có liên kết đến công thức kích thước đệ quy. Và đó chính xác là những gì bạn cần để đo lường mức độ lưu trữ cấu trúc dữ liệu của bạn.

Vì vậy, tải vào, giả sử, 1% dữ liệu đầu tiên của bạn và xem nó sử dụng bao nhiêu bộ nhớ. Sau đó tải trong 5% và đảm bảo rằng nó lớn khoảng 5 lần. Nếu vậy, bạn có thể đoán rằng dữ liệu đầy đủ của bạn sẽ lớn 20 lần trở lại.

. về các loại dữ liệu thực tế. Và nếu bạn thực sự lo lắng, bạn luôn có thể kiểm tra 5% cuối cùng so với 5% đầu tiên và xem chúng khác nhau như thế nào, phải không?)

Bạn cũng có thể kiểm tra ở cấp độ cao hơn bằng cách sử dụng các mô-đun như HEAPY hoặc hoàn toàn bên ngoài chỉ bằng cách xem với Trình quản lý quy trình/Giám sát hoạt động/v.v., để kiểm tra kỹ kết quả. Một điều cần lưu ý là nhiều biện pháp bên ngoài này sẽ cho bạn thấy cách sử dụng bộ nhớ cao điểm của chương trình, chứ không phải sử dụng bộ nhớ hiện tại. Và thậm chí còn không rõ những gì bạn muốn gọi là "cách sử dụng bộ nhớ hiện tại". . không phải?)

Nhiều tổ chức đang cố gắng thu thập và sử dụng càng nhiều dữ liệu càng tốt để cải thiện cách họ điều hành doanh nghiệp của họ, tăng doanh thu hoặc cách chúng tác động đến thế giới xung quanh. Do đó, ngày càng trở nên phổ biến đối với các nhà khoa học dữ liệu để đối mặt với các bộ dữ liệu có kích thước 50 GB hoặc thậm chí 500 GB.

Bây giờ, những loại bộ dữ liệu này là một chút khó chịu khi sử dụng. Chúng đủ nhỏ để phù hợp với ổ cứng của máy tính xách tay hàng ngày của bạn, nhưng cách lớn để phù hợp với RAM. Vì vậy, họ đã rất khó để mở và kiểm tra, chứ đừng nói đến việc khám phá hoặc phân tích.

Có 3 chiến lược thường được sử dụng khi làm việc với các bộ dữ liệu như vậy. Cái đầu tiên là mẫu phụ dữ liệu. Hạn chế ở đây là hiển nhiên: người ta có thể bỏ lỡ những hiểu biết chính bằng cách không nhìn vào các phần có liên quan, hoặc thậm chí tệ hơn, giải thích sai câu chuyện dữ liệu mà nó kể bằng cách không nhìn vào tất cả. Chiến lược tiếp theo là sử dụng điện toán phân tán. Mặc dù đây là một cách tiếp cận hợp lệ cho một số trường hợp, nhưng nó đi kèm với chi phí đáng kể của việc quản lý và duy trì một cụm. Hãy tưởng tượng phải thiết lập một cụm cho một bộ dữ liệu nằm ngoài tầm với RAM, giống như trong phạm vi 30 505050 GB. Nó có vẻ như là một quá mức cần thiết đối với tôi. Ngoài ra, người ta có thể thuê một phiên bản đám mây mạnh duy nhất với nhiều bộ nhớ như được yêu cầu để làm việc với dữ liệu được đề cập. Ví dụ, AWS cung cấp các trường hợp với terabyte của RAM. Trong trường hợp này, bạn vẫn phải quản lý các thùng dữ liệu đám mây, hãy đợi truyền dữ liệu từ xô sang ví dụ mỗi khi bắt đầu, hãy xử lý các vấn đề tuân thủ đi kèm với việc đưa dữ liệu lên đám mây và giải quyết tất cả sự bất tiện khi làm việc trên máy từ xa. Không đề cập đến các chi phí, mặc dù bắt đầu thấp, có xu hướng chồng chất khi thời gian trôi qua.

Trong bài viết này, tôi sẽ chỉ cho bạn một cách tiếp cận mới: nhanh hơn, an toàn hơn và chỉ là cách thuận tiện hơn để làm khoa học dữ liệu bằng cách sử dụng dữ liệu có kích thước gần như tùy ý, miễn là nó có thể phù hợp với ổ cứng của máy tính xách tay, máy tính để bàn của bạn hoặc máy chủ.

Vaex

VAEX là một thư viện dữ liệu nguồn mở cho phép trực quan hóa, thăm dò, phân tích và thậm chí học máy trên các bộ dữ liệu bảng lớn như ổ cứng của bạn. Để làm điều này, VAEX sử dụng các khái niệm như ánh xạ bộ nhớ, thuật toán ngoài core hiệu quả và đánh giá lười biếng. Tất cả những điều này được gói gọn trong một API giống như gấu trúc quen thuộc, vì vậy bất cứ ai cũng có thể bắt đầu ngay lập tức.

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?

Phân tích tỷ lệ cưỡi taxi hàng tỷ

Để minh họa các khái niệm này, chúng ta hãy thực hiện phân tích dữ liệu khám phá đơn giản trên một bộ dữ liệu rộng lớn để phù hợp với RAM của một máy tính xách tay điển hình. Trong bài viết này, chúng tôi sẽ sử dụng bộ dữ liệu taxi của Thành phố New York (NYC), trong đó có thông tin về hơn 1 tỷ chuyến taxi được thực hiện từ năm 2009 đến 2015 bởi chiếc taxi màu vàng mang tính biểu tượng. Dữ liệu có thể được tải xuống từ trang web này và có định dạng CSV. Phân tích hoàn chỉnh có thể được xem riêng trong sổ ghi chép Jupyter này.

Làm sạch đường phố

Bước đầu tiên là chuyển đổi dữ liệu thành định dạng tệp có thể lập bản đồ bộ nhớ, chẳng hạn như Apache Arrow, Apache Parquet hoặc HDF5. Một ví dụ về cách thực hiện chuyển đổi dữ liệu CSV thành HDF5 có thể được tìm thấy ở đây. Khi dữ liệu ở định dạng có thể ánh xạ bộ nhớ, hãy mở nó bằng VAEX là tức thì (0,052 giây!), Mặc dù kích thước của nó trên 100GB trên đĩa:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Mở các tệp ánh xạ bộ nhớ bằng Vaex là tức thì (0,052 giây!), Ngay cả khi chúng lớn hơn 100GB.

Tại sao nó quá nhanh? Khi bạn mở một tệp ánh xạ bộ nhớ với Vaex, thực sự không có việc đọc dữ liệu nào đang diễn ra. Vaex chỉ đọc siêu dữ liệu tệp, chẳng hạn như vị trí của dữ liệu trên đĩa, cấu trúc dữ liệu (số lượng hàng, số cột, tên và loại cột), mô tả tệp, v.v. Vậy nếu chúng ta muốn kiểm tra hoặc tương tác với dữ liệu thì sao? Mở một bộ dữ liệu dẫn đến một DataFrame tiêu chuẩn và kiểm tra nó nhanh như tầm thường:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Xem trước dữ liệu taxi màu vàng của thành phố New York

Một lần nữa, lưu ý rằng thời gian thực hiện di động là điên rồ. Điều này là do việc hiển thị khung hoặc cột VAEX DataFrame chỉ yêu cầu 5 hàng đầu tiên và cuối cùng được đọc từ đĩa. Điều này dẫn chúng ta đến một điểm quan trọng khác: Vaex sẽ chỉ đi qua toàn bộ tập dữ liệu khi nó phải và nó sẽ cố gắng thực hiện nó với càng ít dữ liệu nhất có thể.

Dù sao đi nữa, hãy để bắt đầu bằng cách làm sạch bộ dữ liệu này từ các ngoại lệ cực đoan hoặc đầu vào dữ liệu sai lầm. Một cách tốt để bắt đầu là có được cái nhìn tổng quan cấp cao về dữ liệu bằng phương thức mô tả, hiển thị số lượng mẫu, số lượng giá trị bị thiếu và kiểu dữ liệu cho mỗi cột. Nếu loại dữ liệu của một cột là số, độ lệch trung bình, độ lệch chuẩn, cũng như các giá trị tối thiểu và tối đa cũng sẽ được hiển thị. Tất cả các số liệu thống kê này được tính toán với một lần truyền dữ liệu.

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Nhận được một cái nhìn tổng quan về cấp độ cao về một DataFrame với phương thức describe. Lưu ý rằng DataFrame chứa 18 cột, nhưng chỉ có 7 cột đầu tiên được hiển thị trên ảnh chụp màn hình này.

Phương pháp mô tả minh họa độc đáo sức mạnh và hiệu quả của VAEX: Tất cả các số liệu thống kê này được tính toán dưới 3 phút trên MacBook Pro của tôi (15 ", 2018, 2.6GHz Intel Core i7, RAM 32GB). Tính toán hoặc một phiên bản đám mây với hơn 100GB để tạo thành cùng các tính toán. Với Vaex, tất cả những gì bạn cần là dữ liệu và máy tính xách tay của bạn chỉ với một vài GB RAM dự phòng.

Nhìn vào đầu ra của mô tả, thật dễ dàng để nhận thấy rằng dữ liệu chứa một số ngoại lệ nghiêm trọng. Đầu tiên, hãy để bắt đầu bằng cách kiểm tra các địa điểm đón. Cách dễ nhất để loại bỏ các ngoại lệ là chỉ cần vẽ các vị trí đón và thả xuống và xác định trực quan khu vực NYC mà chúng tôi muốn tập trung phân tích. Vì chúng tôi đang làm việc với một bộ dữ liệu lớn như vậy, biểu đồ là hình ảnh hiệu quả nhất. Tạo và hiển thị biểu đồ và bản đồ nhiệt với Vaex quá nhanh, các lô như vậy có thể được thực hiện tương tác!

df.plot_widget(df.pickup_longitude,
               df.pickup_latitude,
               shape=512,
               limits='minmax',
               f='log1p',
               colormap='plasma')

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?

Khi chúng tôi tương tác quyết định về khu vực NYC mà chúng tôi muốn tập trung, chúng tôi chỉ có thể tạo một DataFrame được lọc:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?

Điều thú vị về khối mã ở trên là nó đòi hỏi số lượng bộ nhớ không đáng kể để thực thi! Khi lọc DataFrame VAEX, không có bản sao nào của dữ liệu được tạo. Thay vào đó chỉ có một tham chiếu đến đối tượng ban đầu được tạo, trên đó mặt nạ nhị phân được áp dụng. Mặt nạ chọn các hàng được hiển thị và sử dụng cho các tính toán trong tương lai. Điều này giúp chúng tôi tiết kiệm 100GB RAM cần thiết nếu dữ liệu được sao chép, như được thực hiện bởi nhiều công cụ khoa học dữ liệu tiêu chuẩn ngày nay.

Bây giờ, hãy để kiểm tra cột Pascet_count. Số lượng hành khách tối đa được ghi nhận trong một chuyến taxi là 255, có vẻ hơi cực đoan. Hãy để đếm số lượng chuyến đi cho mỗi số lượng hành khách. Điều này dễ dàng được thực hiện với phương thức value_counts:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Phương pháp value_counts được áp dụng trên 1 tỷ hàng chỉ mất ~ 20 giây!

Từ hình trên, chúng ta có thể thấy rằng các chuyến đi với hơn 6 hành khách có khả năng là các ngoại lệ hiếm hoặc chỉ là đầu vào dữ liệu sai lầm. Ngoài ra còn có một số lượng lớn các chuyến đi với 0 hành khách. Vì tại thời điểm này, chúng tôi không hiểu liệu đây có phải là những chuyến đi hợp pháp hay không, chúng tôi cũng hãy lọc chúng ra.

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?

Hãy để một bài tập tương tự với khoảng cách chuyến đi. Vì đây là một biến liên tục, chúng ta có thể vẽ sơ đồ phân phối khoảng cách chuyến đi. Nhìn vào khoảng cách tối thiểu (âm!) Và tối đa (xa hơn so với Sao Hỏa!), Hãy để âm mưu biểu đồ với một phạm vi hợp lý hơn.

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Một biểu đồ của khoảng cách chuyến đi cho bộ dữ liệu taxi NYC.

Từ lô trên, chúng ta có thể thấy số lượng chuyến đi giảm khi khoảng cách tăng lên. Ở khoảng cách ~ 100 dặm, có một sự sụt giảm lớn trong phân phối. Hiện tại, chúng tôi sẽ sử dụng điều này làm điểm giới hạn để loại bỏ các ngoại lệ cực đoan dựa trên khoảng cách chuyến đi:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?

Sự hiện diện của các ngoại lệ cực đoan trong các cột khoảng cách chuyến đi đóng vai trò là động lực để điều tra thời lượng chuyến đi và tốc độ trung bình của taxi. Các tính năng này không có sẵn trong bộ dữ liệu, nhưng là tầm thường để tính toán:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?

Khối mã ở trên yêu cầu không có bộ nhớ và không mất thời gian để thực thi! Điều này là do mã dẫn đến việc tạo các cột ảo. Các cột này chỉ chứa các biểu thức toán học, và chỉ được đánh giá khi được yêu cầu. Nếu không, các cột ảo hoạt động giống như bất kỳ cột thông thường nào khác. Lưu ý rằng các thư viện tiêu chuẩn khác sẽ yêu cầu 10 GB RAM cho các hoạt động tương tự.

Được rồi, vì vậy, hãy để âm mưu phân phối thời lượng chuyến đi:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Biểu đồ thời lượng của hơn 1 tỷ chuyến taxi ở NYC.

Từ âm mưu trên, chúng ta thấy rằng 95% tất cả các chuyến đi taxi mất ít hơn 30 phút để đến đích, mặc dù một số chuyến đi có thể mất nhiều hơn 4 giờ5 giờ. Bạn có thể tưởng tượng bị mắc kẹt trong một chiếc taxi trong hơn 3 giờ ở thành phố New York không? Dù sao đi nữa, hãy để tâm trí cởi mở và xem xét tất cả các chuyến đi kéo dài chưa đầy 3 giờ: tổng cộng:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?

Bây giờ, hãy để điều tra tốc độ trung bình của taxi, đồng thời chọn một phạm vi hợp lý cho các giới hạn dữ liệu:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Sự phân phối tốc độ taxi trung bình.

Dựa trên nơi phân phối làm phẳng, chúng tôi có thể suy ra rằng tốc độ taxi trung bình hợp lý nằm trong phạm vi từ 1 đến 60 dặm một giờ và do đó chúng tôi có thể cập nhật DataFrame được lọc của mình:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?

Hãy chuyển trọng tâm sang chi phí của các chuyến đi taxi. Từ đầu ra của phương thức mô tả, chúng ta có thể thấy rằng có một số ngoại lệ điên rồ trong các cột Fare_amount, Total_amount và TIP_AMOUNT. Đối với người mới bắt đầu, không có giá trị trong bất kỳ cột nào trong số này nên âm. Ở phía đối diện của quang phổ, các con số cho thấy rằng một số tài xế may mắn gần như đã trở thành một triệu phú với một chuyến đi taxi. Hãy cùng xem xét các phân phối của các đại lượng này, nhưng trong một phạm vi tương đối hợp lý:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Các phân phối của giá vé, tổng số tiền và tiền đầu cho hơn 1 tỷ chuyến taxi ở NYC. Việc tạo ra những lô này chỉ mất 31 giây trên máy tính xách tay!

Chúng tôi thấy rằng cả ba phân phối trên có đuôi khá dài. Có thể một số giá trị trong đuôi là hợp pháp, trong khi những giá trị khác có lẽ là đầu vào dữ liệu sai lầm. Trong mọi trường hợp, hãy để Lừa bảo thủ ngay bây giờ và chỉ xem xét các chuyến đi có Fare_amount, Total_amount và Tip_amount dưới 200 đô la. Chúng tôi cũng yêu cầu giá trị Fare_amount, Total_Amount lớn hơn $ 0.

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?

Cuối cùng, sau khi làm sạch dữ liệu ban đầu, hãy để Lôi xem có bao nhiêu chuyến taxi để phân tích của chúng tôi:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?

Chúng tôi còn lại với hơn 1,1 tỷ chuyến đi! Đó là rất nhiều dữ liệu để có được một số hiểu biết có giá trị về thế giới của du lịch taxi.

Vào ghế lái

Giả sử chúng tôi là một tài xế taxi tiềm năng hoặc người quản lý của một công ty taxi và quan tâm đến việc sử dụng bộ dữ liệu này để tìm hiểu cách tối đa hóa lợi nhuận của chúng tôi, giảm thiểu chi phí của chúng tôi hoặc chỉ cần cải thiện cuộc sống công việc của chúng tôi.

Hãy để bắt đầu bằng cách tìm ra các địa điểm để chọn hành khách, trung bình, sẽ dẫn đến thu nhập tốt nhất. Nguyên nhân, chúng ta chỉ có thể vẽ một bản đồ nhiệt của các vị trí nhận được mã hóa màu bởi số tiền giá vé trung bình và nhìn vào các điểm nóng. Tuy nhiên, tài xế taxi có chi phí. Ví dụ, họ phải trả tiền cho nhiên liệu. Do đó, việc đưa một hành khách ở đâu đó ở rất xa có thể dẫn đến số tiền giá vé lớn hơn, nhưng nó cũng có nghĩa là mức tiêu thụ nhiên liệu lớn hơn và thời gian bị mất. Ngoài ra, có thể không dễ dàng tìm thấy một hành khách từ vị trí xa xôi đó đến giá vé ở một nơi nào đó đến trung tâm thành phố, và do đó lái xe trở lại mà không có hành khách có thể tốn kém. Một cách để giải thích cho điều này là mã màu một bản đồ nhiệt theo giá trị trung bình của tỷ lệ giữa số tiền giá vé và khoảng cách chuyến đi. Hãy xem xét hai cách tiếp cận sau:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Nhiệt các bản đồ của NYC Colour được mã hóa bởi: Số tiền giá vé trung bình (trái) và tỷ lệ trung bình của số tiền giá vé trên khoảng cách chuyến đi.

Trong trường hợp ngây thơ, khi chúng tôi chỉ quan tâm đến việc có được giá vé tối đa cho dịch vụ được cung cấp, các khu vực tốt nhất để đón hành khách từ các sân bay NYC, và dọc theo các con đường chính như Van Wyck Expressway và Long Island Expressway. Khi chúng tôi đưa khoảng cách đi vào tài khoản, chúng tôi có được một bức tranh hơi khác. Đường cao tốc Van Wyck và Đại lộ Đường cao tốc Long Island, cũng như các sân bay vẫn là một nơi tốt để đón hành khách, nhưng chúng ít nổi bật hơn trên bản đồ. Tuy nhiên, một số điểm nóng mới tươi sáng xuất hiện ở phía tây của sông Hudson có vẻ khá có lãi.

Trở thành một người lái xe taxi có thể là một công việc khá linh hoạt. Để tận dụng tốt hơn tính linh hoạt đó, sẽ rất hữu ích khi biết khi lái xe có lợi nhuận cao nhất, ngoài việc người ta nên ẩn nấp. Để trả lời câu hỏi này, hãy để Lừa sản xuất một cốt truyện cho thấy tỷ lệ trung bình của giá vé trên khoảng cách chuyến đi cho mỗi ngày và giờ trong ngày:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Tỷ lệ trung bình của giá vé trong khoảng cách chuyến đi mỗi ngày trong tuần và giờ trong ngày.

Hình trên có ý nghĩa: thu nhập tốt nhất xảy ra trong giờ cao điểm, đặc biệt là vào khoảng trưa, trong những ngày làm việc trong tuần. Là một tài xế taxi, một phần thu nhập của chúng tôi dành cho công ty taxi, vì vậy chúng tôi có thể quan tâm đến ngày nào và lúc nào khách hàng giới thiệu nhiều nhất. Vì vậy, hãy để Lừa tạo ra một cốt truyện tương tự, lần này hiển thị tỷ lệ phần trăm đầu trung bình:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Tỷ lệ phần trăm tiền boa trung bình mỗi ngày trong tuần và giờ trong ngày.

Cốt truyện trên là thú vị. Nó cho chúng tôi biết rằng hành khách cho các tài xế taxi của họ nhiều nhất trong khoảng từ 7 giờ10 giờ sáng, và vào buổi tối vào đầu tuần. Đừng mong đợi những lời khuyên lớn nếu bạn đón hành khách lúc 3 hoặc 4 giờ sáng. Kết hợp những hiểu biết từ hai lô cuối cùng, thời gian làm việc tốt đẹp là 8 trận10 giờ sáng: người ta sẽ nhận được cả giá vé tốt cho mỗi dặm và một mẹo tốt.

Rev động cơ của bạn!

Trong phần trước của bài viết này, chúng tôi tập trung ngắn gọn vào cột trip_distance và trong khi làm sạch nó từ các ngoại lệ, chúng tôi giữ tất cả các chuyến đi có giá trị thấp hơn 100 dặm. Đó vẫn là một giá trị cắt khá lớn, đặc biệt là công ty taxi màu vàng hoạt động chủ yếu trên Manhattan. Cột *trip_distance *mô tả khoảng cách taxi di chuyển giữa vị trí đón và vị trí thả. Tuy nhiên, người ta thường có thể thực hiện các tuyến đường khác nhau với các khoảng cách khác nhau giữa hai địa điểm nhận và thả chính xác, ví dụ như để tránh ùn tắc giao thông hoặc đường. Do đó, với tư cách là một đối tác của cột *Trip_Distance *, hãy để tính toán khoảng cách ngắn nhất có thể giữa các vị trí nhận và thả, mà chúng tôi gọi là arc_distance:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Đối với các biểu thức phức tạp được viết bằng Numpy, Vaex có thể sử dụng biên dịch đúng lúc với sự trợ giúp của Numba, Pythran hoặc thậm chí CUDA (nếu bạn có GPU NVIDIA) để tăng tốc độ tính toán của bạn.

Công thức cho tính toán ARC_DISTANCE khá liên quan, nó chứa nhiều lượng giác và số học, và có thể tốn kém về mặt tính toán đặc biệt là khi chúng tôi làm việc với các bộ dữ liệu lớn. Nếu biểu thức hoặc hàm chỉ được viết bằng cách sử dụng các hoạt động và phương thức Python từ gói Numpy, VAEX sẽ tính toán song song nó bằng tất cả các lõi của máy của bạn. Ngoài ra, VAEX hỗ trợ biên dịch đúng lúc thông qua NUMBA (sử dụng LLVM) hoặc pythran (gia tốc thông qua C ++), mang lại hiệu suất tốt hơn. Nếu bạn tình cờ có card đồ họa NVIDIA, bạn có thể sử dụng CUDA thông qua phương thức JIT_CUDA để có được hiệu suất nhanh hơn.

Dù sao đi nữa, hãy để âm mưu phân phối của trip_distance và arc_distance:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Trái: So sánh giữa trip_distance và arc_distance. Phải: Phân phối Trip_Distance cho Arc_Distance

Thật thú vị khi thấy rằng Arc_Distance không bao giờ vượt quá 21 dặm, nhưng khoảng cách mà taxi thực sự đã đi có thể lớn gấp 5 lần. Trên thực tế, có hàng triệu chuyến đi taxi trong đó vị trí thả xuống trong phạm vi 100 mét (0,06 dặm) từ vị trí nhận hàng!

Taxi màu vàng trong những năm qua

Bộ dữ liệu mà chúng tôi đang sử dụng ngày nay kéo dài trong 7 năm. Nó có thể thú vị để xem một số lượng quan tâm phát triển như thế nào trong thời gian đó. Với VAEX, chúng tôi có thể thực hiện các hoạt động nhóm và tổng hợp nhanh chóng. Hãy cùng khám phá cách thức giá vé và khoảng cách chuyến đi phát triển trong 7 năm:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Một hoạt động theo nhóm với 8 tập hợp cho khung dữ liệu VAEX với hơn 1 tỷ mẫu chỉ mất chưa đầy 2 phút trên máy tính xách tay với bộ xử lý lõi tứ.

Trong khối ô trên, chúng tôi thực hiện một hoạt động theo nhóm theo sau là 8 tập hợp, 2 trong số đó là trên các cột ảo. Khối ô trên chỉ mất chưa đầy 2 phút để thực hiện trên máy tính xách tay của tôi. Điều này khá ấn tượng, cho rằng dữ liệu chúng tôi đang sử dụng chứa hơn 1 tỷ mẫu. Dù sao đi nữa, hãy để kiểm tra kết quả. Đây là cách chi phí đi taxi phát triển trong những năm qua:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Giá vé trung bình và tổng số tiền, cũng như tỷ lệ phần trăm tiền boa được trả bởi hành khách mỗi năm.

Chúng tôi thấy rằng giá vé taxi, cũng như các mẹo tăng lên khi năm tháng trôi qua. Bây giờ, hãy để Lôi nhìn vào trung bình trip_distance và arc_distance, taxi đã đi như một chức năng của năm:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Chuyến đi trung bình và khoảng cách vòng cung mà taxi di chuyển mỗi năm.

Hình trên cho thấy có một sự gia tăng nhỏ của cả *Trip_Distance *và Arc_Distance có nghĩa là, trung bình, mọi người có xu hướng di chuyển xa hơn một chút mỗi năm.

Cho tôi xem tiền

Trước khi kết thúc chuyến đi của chúng tôi, hãy để Lừa làm cho một điểm dừng thêm và điều tra cách hành khách trả tiền cho các chuyến đi của họ. Bộ dữ liệu chứa cột payague_type, vì vậy hãy để xem các giá trị mà nó chứa:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?

Từ tài liệu dữ liệu, chúng ta có thể thấy rằng chỉ có 6 mục hợp lệ cho cột này:

  • 1 = Thanh toán thẻ tín dụng

  • 2 = Thanh toán bằng tiền mặt

  • 3 = Không tính phí

  • 4 = Tranh chấp

  • 5 = Không xác định

  • 6 = chuyến đi vô hiệu

Do đó, chúng tôi chỉ có thể ánh xạ các mục trong cột payals_type cho các số nguyên:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?

Bây giờ chúng ta có thể theo nhóm dữ liệu mỗi năm và xem thói quen của người New York đã thay đổi như thế nào khi nói đến thanh toán đi xe taxi:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Phương thức thanh toán mỗi năm

Chúng tôi thấy rằng khi thời gian trôi qua, các khoản thanh toán thẻ dần trở nên thường xuyên hơn so với thanh toán bằng tiền mặt. Chúng tôi thực sự sống trong một thời đại kỹ thuật số! Lưu ý rằng trong khối mã trên, một khi chúng tôi đã tổng hợp dữ liệu, khung dữ liệu Vaex nhỏ có thể dễ dàng được chuyển đổi thành một khung dữ liệu gấu trúc, mà chúng tôi thuận tiện chuyển sang Seaborn. Không cố gắng phát minh lại bánh xe ở đây.

Cuối cùng, hãy để xem xem phương thức thanh toán có phụ thuộc vào thời gian trong ngày hay ngày trong tuần hay không bằng cách vẽ tỷ lệ giữa số lượng tiền mặt so với thanh toán thẻ. Để làm điều này, trước tiên chúng tôi sẽ tạo một bộ lọc chỉ chọn các chuyến đi được trả bằng tiền mặt hoặc thẻ. Bước tiếp theo là một trong những tính năng VAEX yêu thích của tôi: tập hợp với các lựa chọn. Các thư viện khác yêu cầu các tập hợp phải được thực hiện trên các khung dữ liệu được lọc riêng cho từng phương thức thanh toán mà sau đó được hợp nhất thành một. Mặt khác, với Vaex, chúng ta có thể thực hiện điều này trong một bước bằng cách cung cấp các lựa chọn trong hàm tổng hợp. Điều này khá thuận tiện và chỉ cần chỉ một lần truyền dữ liệu, cho chúng tôi hiệu suất tốt hơn. Sau đó, chúng ta chỉ có thể vẽ đồ dữ liệu kết quả theo cách tiêu chuẩn:

Hướng dẫn how much of data can handle python? - bao nhiêu dữ liệu có thể xử lý python?
Phần tiền mặt cho thanh toán thẻ trong một thời gian và ngày nhất định trong tuần.

Nhìn vào cốt truyện trên, chúng ta có thể nhận thấy một mô hình tương tự như mô hình cho thấy tỷ lệ phần trăm đầu là một chức năng của ngày trong tuần và thời gian trong ngày. Từ hai lô này, dữ liệu sẽ gợi ý rằng hành khách trả bằng thẻ có xu hướng vượt qua nhiều hơn những người trả bằng tiền mặt. Để tìm hiểu xem điều này có thực sự đúng hay không, tôi muốn mời bạn thử và tìm ra nó, vì bây giờ bạn có kiến ​​thức, các công cụ và dữ liệu! Bạn cũng có thể xem sổ ghi chép Jupyter này để biết thêm một số gợi ý.

Chúng tôi đã đến điểm đến của bạn

Tôi hy vọng bài viết này là một giới thiệu hữu ích về VAEX, và nó sẽ giúp bạn giảm bớt một số vấn đề dữ liệu khó chịu mà bạn có thể phải đối mặt, ít nhất là khi nói đến các bộ dữ liệu bảng. Nếu bạn quan tâm đến việc khám phá bộ dữ liệu được sử dụng trong bài viết này, nó có thể được sử dụng trực tiếp từ S3 với Vaex. Xem Notebook Jupyter đầy đủ để tìm hiểu làm thế nào để làm điều này.

Với Vaex, người ta có thể vượt qua một tỷ hàng và tính toán tất cả các loại thống kê, tập hợp và tạo ra các lô thông tin chỉ trong vài giây, ngay từ sự thoải mái của máy tính xách tay của bạn. Nó là miễn phí và nguồn mở, và tôi hy vọng bạn sẽ cho nó một shot!

Happy Data Sciencing!


Phân tích dữ liệu khám phá được trình bày trong bài viết này dựa trên bản demo VAEX sớm được tạo bởi Maarten Breddels.

Vui lòng xem bản demo trực tiếp của chúng tôi từ Pydata London 2019 dưới đây:

Có thể giữ bao nhiêu dữ liệu một biến Python?

Số nguyên và độ dài cho toàn bộ số, Python cung cấp hai loại dữ liệu: số nguyên và số nguyên dài. Biến số của số nguyên được gọi là INT và được lưu trữ bằng ít nhất 32 bit. Điều này có thể sẽ đáp ứng hầu hết các nhu cầu của bạn vì nó có thể giữ bất kỳ số lượng nào từ khoảng 2 tỷ đến 2 tỷ dương.from around negative 2 billion to positive 2 billion.

Python có thể xử lý các bộ dữ liệu lớn?

Câu trả lời là có.Bạn có thể xử lý các bộ dữ liệu lớn trong Python bằng cách sử dụng gấu trúc với một số kỹ thuật.Nhưng, đến một mức độ nhất định.Hãy xem một số kỹ thuật về cách xử lý các bộ dữ liệu lớn hơn trong Python bằng gấu trúc.You can handle large datasets in python using Pandas with some techniques. BUT, up to a certain extent. Let's see some techniques on how to handle larger datasets in Python using Pandas.

Các biến Python có độ dài không giới hạn không?

Định danh là không giới hạn về chiều dài.Trường hợp là đáng kể.Nói cách khác, các tên biến có thể có bất kỳ độ dài nào và có thể sử dụng bất kỳ trường hợp trên hoặc chữ thường, dấu gạch dưới và các chữ số 0-9.Tuy nhiên, tên biến không thể bắt đầu bằng một chữ số.. Case is significant. In other words, variable names can be of any length and can use any upper case or lowercase letters, the underscore, and the digits 0-9. However, variables names cannot begin with a digit.

Python có lưu trữ dữ liệu trong bộ nhớ không?

Python sử dụng thuật toán thu gom rác (được gọi là bộ thu rác) giữ cho bộ nhớ heap sạch sẽ và loại bỏ các đối tượng không cần thiết nữa.Bạn không cần phải gây rối với đống, nhưng tốt hơn là hiểu làm thế nào Python quản lý đống vì hầu hết dữ liệu của bạn được lưu trữ trong phần này của bộ nhớ.most of your data is stored in this section of the memory.