API hệ thống tệp gấu trúc giúp dễ dàng tải nhiều tệp được lưu trữ trong một thư mục hoặc trong các thư mục lồng nhau
Các thư viện Python khác thậm chí có thể làm cho việc này dễ dàng hơn và có thể mở rộng hơn. Hãy xem một ví dụ trên một tập dữ liệu nhỏ
Đọc CSV với chức năng hệ thống tập tin
Giả sử bạn có các tệp sau
animals/ file1.csv file2.csvĐây là cách tải các tệp vào DataFrame của gấu trúc
import glob import os import pandas as pd all_files = glob.glob("animals/*.csv") df = pd.concat((pd.read_csv(f) for f in all_files)) print(df)Đây là những gì được in
animal_name animal_type 0 susy sparrow 1 larry lion 0 dan dolphin 1 camila catTập lệnh này tải từng tệp vào một DataFrames gấu trúc riêng biệt và sau đó nối tất cả các DataFrames riêng lẻ thành một kết quả cuối cùng
Dưới đây là cách tải các tệp vào DataFrame của gấu trúc khi các tệp không nằm trong thư mục làm việc hiện tại. Các tệp nằm trong thư mục import glob import os import pandas as pd all_files = glob.glob("animals/*.csv") df = pd.concat((pd.read_csv(f) for f in all_files)) print(df)0 trên máy của tôi
home = os.path.expanduser("~") path = f"{home}/Documents/code/coiled/coiled-datasets/data/animals/" all_files = glob.glob(path + "/*.csv") df = pd.concat((pd.read_csv(f) for f in all_files)) print(df)Kịch bản này cho kết quả tương tự
Bạn cần chỉnh sửa tập lệnh để làm cho nó đa nền tảng. Thật tẻ nhạt khi viết logic để liệt kê các tệp khi tạo Khung dữ liệu Pandas từ nhiều tệp. Hãy thử Dask mà không yêu cầu chúng tôi viết mã danh sách tệp hoặc lo lắng về khả năng tương thích đa nền tảng
Đang tải nhiều tệp bằng Dask
Đọc các tệp vào Khung dữ liệu Dask bằng phương pháp import glob import os import pandas as pd all_files = glob.glob("animals/*.csv") df = pd.concat((pd.read_csv(f) for f in all_files)) print(df)1 của Dask
import dask.dataframe as dd ddf = dd.read_csv(f"{path}/*.csv")Bây giờ hãy chuyển đổi Khung dữ liệu Dask thành Khung dữ liệu gấu trúc bằng phương thức import glob import os import pandas as pd all_files = glob.glob("animals/*.csv") df = pd.concat((pd.read_csv(f) for f in all_files)) print(df)2 và in nội dung
________số 8_______Đây là những gì được in
animal_name animal_type 0 susy sparrow 1 larry lion 0 dan dolphin 1 camila catDask đảm nhận thao tác liệt kê tệp và không yêu cầu bạn thực hiện thủ công. Dask giúp đọc và ghi nhiều tệp dễ dàng hơn nhiều so với gấu trúc
Lợi ích của dask
Dask cũng được thiết kế để xử lý các tập dữ liệu lớn mà không bị lỗi như pandas
Dask chia dữ liệu thành các phân vùng để có thể xử lý song song. Nó cũng cho phép thực hiện tính toán theo cách truyền phát mà không cần tải tất cả dữ liệu vào bộ nhớ cùng một lúc
Tính toán Dask có thể được mở rộng để sử dụng tất cả các lõi của một máy hoặc được mở rộng để tận dụng một cụm nhiều máy tính song song. Dask là một lựa chọn tốt bất cứ khi nào bạn gặp phải các vấn đề về quy mô liên quan đến gấu trúc
Đọc các tệp CSV lồng nhau
Giả sử bạn muốn đọc dữ liệu CSV vào DataFrame gấu trúc được lưu trữ trên đĩa như sau
fish/ files/ file1.csv more-files/ file2.csv file3.csvTải tất cả các tệp này vào DataFrame của gấu trúc và in kết quả
path = f"{home}/Documents/code/coiled/coiled-datasets/data/fish/" all_files = glob.glob(path + "/**/*.csv") df = pd.concat((pd.read_csv(f) for f in all_files)) print(df)Đây là kết quả được in ra
fish_name fish_type 0 carol catfish 1 maria mackerel 0 betty bass 1 sally snapper 0 marvin marlin 1 tony tunaimport glob import os import pandas as pd all_files = glob.glob("animals/*.csv") df = pd.concat((pd.read_csv(f) for f in all_files)) print(df)3 giúp việc tìm nạp các tệp CSV được lưu trữ trong cấu trúc thư mục lồng nhau tương đối dễ dàng
Phần kết luận
Bài đăng này trình bày cách đơn giản để tải nhiều tệp CSV trong DataFrame của gấu trúc
Dask giúp tải nhiều tệp vào Dask DataFrame dễ dàng hơn, có thể dễ dàng chuyển đổi thành DataFrame gấu trúc
gấu trúc chỉ có thể xử lý các bộ dữ liệu đủ nhỏ để vừa với bộ nhớ (quy tắc ngón tay cái từ năm 2017 là dữ liệu phải nhỏ hơn 5-10 lần so với RAM). Khi bạn đang tải nhiều tệp CSV, nhiều khả năng là bạn đang làm việc với tập dữ liệu lớn hơn, điều này sẽ gây ra sự cố về bộ nhớ của gấu trúc
Khi bộ dữ liệu đủ nhỏ để vừa với bộ nhớ, gấu trúc là lựa chọn tốt nhất. Nếu bạn bắt đầu gặp vấn đề về bộ nhớ hoặc muốn bản phân tích của bạn chạy nhanh hơn với tính toán song song, hãy thử mở rộng quy mô với Dask