Sau khi làm việc trên tập dữ liệu và thực hiện tất cả quá trình tiền xử lý, chúng tôi cần lưu dữ liệu đã được xử lý trước vào một số định dạng như trong csv, excel hoặc các định dạng khác
Mã nguồn python này thực hiện như sau.
1. Tạo từ điển dữ liệu và chuyển đổi nó thành khung dữ liệu
2. Lưu nó ở định dạng CSV
Vì vậy, đây là công thức về cách chúng tôi có thể lưu Pandas DataFrame dưới dạng tệp CSV
Bước 1 - Nhập thư viện
import psutil8
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
Chúng tôi chỉ nhập gấu trúc cần thiết
Bước 2 - Thiết lập dữ liệu
Chúng tôi đã tạo một từ điển dữ liệu và chuyển nó vào pd. DataFrame để tạo khung dữ liệu với các cột 'first_name', 'last_name', 'age', 'Comedy_Score' và 'Rating_Score'.
import psutil9
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
Bước 3 - Lưu DataFrame
Vì vậy, bây giờ chúng ta phải lưu tập dữ liệu mà chúng ta đã tạo. Chúng tôi lưu nó ở nhiều định dạng, ở đây chúng tôi đang thực hiện nó trong csv và excel bằng cách sử dụng hàm to_csv và to_excel tương ứng.
import psutil0 Vì vậy, đầu ra là hai tệp đã lưu, một ở định dạng csv và một ở định dạng excel
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
Thiếu CPU, chương trình của bạn chạy chậm hơn; . Nhưng bạn có thể xử lý bộ dữ liệu lớn hơn RAM bằng Python, như bạn sẽ tìm hiểu trong loạt bài viết sau
cấu trúc mã
Kỹ thuật quản lý dữ liệu
gấu trúc
NumPy
Đo mức sử dụng bộ nhớ
Tìm hiểu các kỹ năng kỹ thuật phần mềm Python thực tế mà bạn có thể sử dụng trong công việc của mình
Đăng ký nhận bản tin của tôi và tham gia cùng hơn 6500 nhà phát triển Python và nhà khoa học dữ liệu học các công cụ và kỹ thuật thực tế, từ hiệu suất Python đến đóng gói Docker, với một bài viết mới miễn phí trong hộp thư đến của bạn mỗi tuần
Nếu bạn có một tệp CSV lớn mà bạn muốn xử lý bằng gấu trúc một cách hiệu quả, bạn có một số tùy chọn sẽ được giải thích trong bài đăng này
Vấn đề tốc độ khi xử lý dữ liệu
import psutil3
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
Bạn cần có khả năng điều chỉnh dữ liệu của mình trong bộ nhớ để sử dụng gấu trúc với nó. Nếu bạn có thể xử lý các phần của nó cùng một lúc, bạn có thể đọc nó thành nhiều phần và xử lý từng phần. Ngoài ra, nếu bạn biết rằng mình phải có đủ bộ nhớ để tải tệp, thì có một vài gợi ý giúp giảm kích thước tệp
Lưu ý rằng nói chung, bạn nên có dung lượng bộ nhớ gấp ba đến mười lần kích thước của Khung dữ liệu mà bạn muốn thao tác. Bộ nhớ bổ sung sẽ cung cấp cho bạn đủ dung lượng để thực hiện nhiều thao tác phổ biến
1. Kiểm tra bộ nhớ hệ thống của bạn bằng PythonHãy bắt đầu bằng cách kiểm tra bộ nhớ hệ thống của chúng tôi.
import psutil4 sẽ hoạt động trên Windows, MAC và Linux. Có thể tải xuống
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
import psutil5 từ trình quản lý gói của Python với cài đặt pip
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
Trong trường hợp bạn gặp lỗi biên dịch với
import psutil4 khi cài đặt, hãy thử các bước bên dưới
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
sudo yum install python3-devel
sudo pip install psutil# now check the version using
pip freeze | grep psutil
Bây giờ hãy xem bộ nhớ hiện tại của hệ thống của chúng tôi
import psutil
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
2. Xác định mức sử dụng bộ nhớ của tệp CSV của chúng tôi
Bây giờ chúng tôi sẽ ước tính toàn bộ tệp sẽ chiếm bao nhiêu bộ nhớ. Tôi đã sử dụng bộ dữ liệu
import psutil7 từ
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
import psutil8________số 8
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
Phương pháp
import psutil9 hiển thị mức sử dụng bộ nhớ của khung dữ liệu của chúng tôi trong khi
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
import pandas as pddata = pd.read_csv["tmdb_5000_movies.csv"]# Lets check the memory usage of the file0 hiển thị tổng số hàng của khung dữ liệu
print[f" ** Memory usage of the file - {sum[data.memory_usage[]] * 0.000001} MB for {len[data.index]} Rows"]>> # Output
** Memory usage of the file - 8.453408 MB for 52833 Rows
Chúng ta có thể thấy rằng 52833 hàng sử dụng khoảng hơn 8 MB bộ nhớ. Nếu chúng tôi có một tỷ hàng, thì sẽ chiếm khoảng hơn 151 GB bộ nhớ. Bây giờ, đó là một ý tưởng tồi để phù hợp với mọi thứ vào bộ nhớ và khiến nó bị treo, đừng làm điều đó
3. Hiểu các loại dữ liệu trong tệp csv của chúng tôi
Các tệp CSV không chứa thông tin về các loại dữ liệu, không giống như cơ sở dữ liệu, gấu trúc cố gắng suy ra các loại cột và suy ra chúng từ NumPy
Làm thế nào nó làm?
Bây giờ, hãy xem giới hạn của các loại dữ liệu này
import psutil1
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
4. Chuyển đổi kiểu dữ liệu số
Hãy chạy phương thức
import pandas as pddata = pd.read_csv["tmdb_5000_movies.csv"]# Lets check the memory usage of the file1 để xác thực chuyên sâu các loại dữ liệu của chúng ta
print[f" ** Memory usage of the file - {sum[data.memory_usage[]] * 0.000001} MB for {len[data.index]} Rows"]>> # Output
** Memory usage of the file - 8.453408 MB for 52833 Rows
import psutil3
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
Bây giờ, hãy tóm tắt các loại dữ liệu và số lượng cột và xem cách gấu trúc phân loại dữ liệu của chúng tôi
import psutil4
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
Chúng tôi sẽ tập trung vào các loại dữ liệu
import pandas as pddata = pd.read_csv["tmdb_5000_movies.csv"]# Lets check the memory usage of the file2 và
print[f" ** Memory usage of the file - {sum[data.memory_usage[]] * 0.000001} MB for {len[data.index]} Rows"]>> # Output
** Memory usage of the file - 8.453408 MB for 52833 Rows
import pandas as pddata = pd.read_csv["tmdb_5000_movies.csv"]# Lets check the memory usage of the file3, nghiên cứu dữ liệu/độ chính xác và chuyển đổi chúng
print[f" ** Memory usage of the file - {sum[data.memory_usage[]] * 0.000001} MB for {len[data.index]} Rows"]>> # Output
** Memory usage of the file - 8.453408 MB for 52833 Rows
Tôi sẽ sử dụng tham số `dtype` để yêu cầu gấu trúc sử dụng các loại số nhỏ hơn thay vì 64 bit mặc định, bây giờ bạn đã hiểu tại sao bước hiểu các loại dữ liệu trước lại quan trọng ở trên
import psutil7
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
Như bạn có thể thấy bằng cách thay đổi các loại dữ liệu để sử dụng các loại số nhỏ hơn đã tiết kiệm cho chúng tôi 23% Tiết kiệm, bạn cũng có thể sử dụng
import pandas as pddata = pd.read_csv["tmdb_5000_movies.csv"]# Lets check the memory usage of the file4 nếu bạn đang giữ một dữ liệu nhỏ có thể giúp tiết kiệm thêm
print[f" ** Memory usage of the file - {sum[data.memory_usage[]] * 0.000001} MB for {len[data.index]} Rows"]>> # Output
** Memory usage of the file - 8.453408 MB for 52833 Rows
Chúng tôi hiện ở mức 67% so với kích thước ban đầu. Đó là khoảng 23% bộ nhớ được lưu
5. Chuyển đổi kiểu dữ liệu đối tượng
Các kiểu dữ liệu đối tượng coi các giá trị là chuỗi. Giá trị chuỗi trong gấu trúc chiếm nhiều bộ nhớ vì mỗi giá trị được lưu trữ dưới dạng chuỗi Python, Nếu cột không phải là số, gấu trúc sẽ chuyển đổi nó thành cột đối tượng
Chuyển đổi các loại dữ liệu Đối tượng thành phân loại sẽ sử dụng ít bộ nhớ hơn vì Pandas chỉ lưu trữ chuỗi một lần, thay vì tạo chuỗi mới cho mỗi hàng
Điều đầu tiên, hãy kiểm tra phương pháp
import pandas as pddata = pd.read_csv["tmdb_5000_movies.csv"]# Lets check the memory usage of the file5 của các cột đối tượng. Bạn có thể chuyển đổi chúng thành các cột phân loại để tiết kiệm nhiều bộ nhớ hơn Nếu chúng có số lượng thẻ thấp
print[f" ** Memory usage of the file - {sum[data.memory_usage[]] * 0.000001} MB for {len[data.index]} Rows"]>> # Output
** Memory usage of the file - 8.453408 MB for 52833 Rows
import psutil0
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
Bản số không cao, tôi sẽ bắt đầu chuyển đổi các loại dữ liệu Đối tượng thành Danh mục
import psutil1
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
Chúng tôi hiện ở mức 46% so với kích thước ban đầu. Đó là khoảng 54% bộ nhớ được lưu
6. Xác định và loại bỏ các bản sao trong Pandas
Có nhiều khả năng xảy ra các bản sao trong tệp nguồn mà bạn đang xử lý, việc loại bỏ chúng nếu không cần thiết sẽ giúp bạn tiết kiệm thêm một số bộ nhớ.
Trong trường hợp của tôi, để tăng kích thước tệp, tôi phải lặp lại các bản ghi. ]
Hãy xác thực số lượng mục nhập trùng lặp trong tệp nguồn của chúng tôi trước khi loại bỏ chúng
import psutil2
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
import pandas as pddata = pd.read_csv["tmdb_5000_movies.csv"]# Lets check the memory usage of the file6 xuất ra tổng số hàng trong khung dữ liệu trong khi len[dataframe. drop_duplicates[]] sẽ xuất các giá trị duy nhất trong DataFrame
print[f" ** Memory usage of the file - {sum[data.memory_usage[]] * 0.000001} MB for {len[data.index]} Rows"]>> # Output
** Memory usage of the file - 8.453408 MB for 52833 Rows
Nên file của mình như đã nói ở trên có khá nhiều file trùng lặp, bỏ đi sẽ đỡ tốn bộ nhớ
import psutil0
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
Chà, đó là một số tiết kiệm sau khi xóa các bản sao. Nếu bạn có các bản sao và muốn loại bỏ chúng thì hãy sử dụng bước này
7. Xóa các cột không mong muốn
Nếu có các cột mà bạn biết có thể bỏ qua, hãy chỉ định tham số
import pandas as pddata = pd.read_csv["tmdb_5000_movies.csv"]# Lets check the memory usage of the file7 để bao gồm các cột bạn muốn tải
print[f" ** Memory usage of the file - {sum[data.memory_usage[]] * 0.000001} MB for {len[data.index]} Rows"]>> # Output
** Memory usage of the file - 8.453408 MB for 52833 Rows
Ở đây, chúng ta sẽ bỏ qua các cột "trang chủ", "từ khóa",
"origin_title" và "khẩu hiệu".
import psutil1
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
Chúng tôi hiện ở mức 32% so với kích thước ban đầu. Đó là khoảng 68% bộ nhớ được lưu
8. Xử lý khối dữ liệu với Pandas
Nếu bạn có thể xử lý các khối dữ liệu tại một thời điểm và không cần tất cả dữ liệu đó trong bộ nhớ, bạn có thể sử dụng tham số kích thước khối. Cá nhân tôi khuyên đây là lựa chọn cuối cùng của bạn
import psutil2
memory = psutil.virtual_memory[]
print[f" {'*' * 3} Memory used percentage - {memory.percent} \n {'*' * 4} Free Memory available - { round[memory.free / [1024.0 ** 3]]} GB"]# Output
*** Memory used percentage - 63.0
**** Free Memory available - 6 GB
Chúng tôi hiện ở mức 14% so với kích thước ban đầu. Đó là khoảng 86% bộ nhớ được lưu
Cảm ơn bạn đã đọc qua bài viết. Đó là nó cho tôi ngày hôm nay. Nếu bạn thích bài viết này và nếu nó giúp bạn theo bất kỳ cách nào, vui lòng theo dõi tôi