Chọn một trang web để nhận nội dung đã dịch nếu có và xem các sự kiện và ưu đãi tại địa phương. Dựa trên vị trí của bạn, chúng tôi khuyên bạn nên chọn.
Bạn cũng có thể chọn một trang web từ danh sách sau
Làm thế nào để có được hiệu suất trang web tốt nhất
Chọn trang Trung Quốc [bằng tiếng Trung hoặc tiếng Anh] để có hiệu suất trang tốt nhất. Các trang web quốc gia khác của MathWorks không được tối ưu hóa cho các lượt truy cập từ vị trí của bạn
Đôi khi, bạn có thể cần đọc hoặc nhập nhiều tệp CSV từ một thư mục hoặc từ danh sách tệp và chuyển đổi chúng thành DataFrame của gấu trúc. Bạn có thể thực hiện việc này bằng cách đọc từng tệp CSV vào DataFrame và nối thêm hoặc nối các DataFrame để tạo một DataFrame duy nhất có dữ liệu từ tất cả các tệp
Ở đây, tôi sẽ sử dụng read_csv[] để đọc tệp CSV và hàm concat[] để nối các DataFrame lại với nhau để tạo một DataFrame lớn
1. Đọc nhiều tệp CSV từ danh sách
Khi bạn muốn đọc nhiều tệp CSV tồn tại trong các thư mục khác nhau, trước tiên hãy tạo danh sách các chuỗi có đường dẫn tuyệt đối và sử dụng danh sách đó như được hiển thị bên dưới để tải tất cả các tệp CSV và tạo một Khung dữ liệu gấu trúc lớn
# Read CSV files from List
df = pd.concat[map[pd.read_csv, ['d1.csv', 'd2.csv','d3.csv']]]
Lưu ý rằng theo mặc định, phương thức concat[] thực hiện nghĩa hoạt động nối thêm, nó nối thêm từng DataFrame vào cuối một DataFrame khác và tạo một DataFrame duy nhất. Tương tự với SQL union
2. Đọc nhiều tệp CSV từ một thư mục
Thật không may, read_csv[] không hỗ trợ đọc nhiều tệp CSV từ một thư mục vào DataFrame, có thể trong các phiên bản gấu trúc trong tương lai, nó có thể hỗ trợ nó, cho đến lúc đó chúng tôi phải sử dụng giải pháp thay thế để đọc nhiều tệp CSV từ một thư mục và hợp nhất chúng vào DataFrame
# Import libraries
import glob
import pandas as pd
# Get CSV files list from a folder
path = '/apps/data_csv_files
csv_files = glob.glob[path + "/*.csv"]
# Read each CSV file into DataFrame
# This creates a list of dataframes
df_list = [pd.read_csv[file] for file in csv_files]
# Concatenate all DataFrames
big_df = pd.concat[df_list, ignore_index=True]
Một cách tiếp cận khác sử dụng hàm map[]
df = pd.concat[map[pd.read_csv, glob.glob[path + "/*.csv"]]]
Trong trường hợp bạn muốn sử dụng các tham số tùy chọn của hàm read_csv[], hãy sử dụng nó bằng cách xác định hàm
# By using function
def readcsv[args]:
return pd.read_csv[args, header=None]
df = pd.concat[map[readcsv, filepaths]]
3. Sử dụng khung dữ liệu Dask
Dask Dataframes triển khai một tập hợp con của API khung dữ liệu Pandas. Nếu tất cả dữ liệu phù hợp với bộ nhớ, bạn có thể chuyển đổi DataFrame thành Pandas DataFrame
Thư viện Dask có thể được sử dụng để đọc khung dữ liệu từ nhiều tệp. Trước khi bạn sử dụng thư viện Dask, trước tiên bạn cần cài đặt nó bằng lệnh pip hoặc bất kỳ phương pháp nào khác
# Using data library
import dask.dataframe as dd
df = dd.read_csv[path + "/*.csv"]
Phần kết luận
Trong bài viết này, bạn đã học được nhiều cách đọc tệp CSV từ một thư mục và tạo một DataFrame lớn. Vì hàm read_csv[] không hỗ trợ đọc nên bạn phải sử dụng cách tải từng CSV vào một DataFrame riêng biệt và kết hợp chúng bằng hàm concat[]
Một cảnh báo chính của Pandas là không có khả năng mở rộng ra nhiều lõi CPU [thường là]. Về cơ bản, khi bạn chạy bất kỳ hoạt động nào, nơi có thể song song hóa lý tưởng, Pandas vẫn sẽ tuân theo cách thực thi lõi đơn truyền thống và các lõi khác sẽ không hoạt động. Điều này đặc biệt liên quan khi bạn đang xây dựng các ứng dụng quy mô lớn
Làm việc với các ứng dụng dựa trên dữ liệu quy mô lớn yêu cầu thực thi nhanh hơn thông qua các thuật toán được tối ưu hóa và loại bỏ/giảm thời gian chạy trong mọi bit có thể có của đường ống. Theo tôi, một lĩnh vực như vậy thường bị bỏ qua là tối ưu hóa các hoạt động đầu vào-đầu ra
Hãy tưởng tượng bạn có 100 tệp CSV mà bạn cần đọc vào môi trường python của mình. Không còn nghi ngờ gì nữa, lựa chọn đầu tiên của bạn sẽ là Pandas. Bên cạnh đó, ngay cả khi bạn không xử lý nhiều tệp CSV, tôi luôn khuyên bạn nên loại bỏ tất cả các tệp CSV và chuyển đổi chúng thành các tệp thay thế tương đối nhanh hơn và tiết kiệm dung lượng hơn như Pickle, Feather hoặc Parquet
Tại sao tôi ngừng kết xuất khung dữ liệu sang CSV và tại sao bạn cũng nên làm như vậy
Đã đến lúc nói lời tạm biệt với pd. to_csv[] và pd. read_csv[]
hướng tới khoa học dữ liệu. com
Nếu ngay cả khi bạn buộc phải sử dụng CSV, cá nhân tôi không bao giờ khuyên bạn nên sử dụng các chức năng đọc và ghi CSV có sẵn trong Pandas, câu trả lời mà bạn có thể tìm thấy trong bài đăng của tôi bên dưới
Đã đến lúc nói lời tạm biệt với pd. read_csv[] và pd. to_csv[]
Thảo luận về một cảnh báo lớn khác của Pandas
hướng tới khoa học dữ liệu. com
Vì vậy, quay lại kịch bản 100 tệp CSV của chúng tôi, ở đây, một cách tiếp cận ngây thơ để đọc nhiều tệp CSV có thể là lặp lại chúng trong một vòng lặp, lấy danh sách các Khung dữ liệu Pandas và nối danh sách thành một Khung dữ liệu duy nhất. Điều này được thể hiện dưới đây
Tuy nhiên, có một vài vấn đề với cách tiếp cận này
- Vòng lặp chắc chắn giới thiệu một quá trình lặp đi lặp lại, tôi. e. , chỉ có thể đọc một tệp CSV cùng một lúc — dẫn đến việc sử dụng tài nguyên dưới mức
- Bản thân phương thức read-csv của Pandas là một quá trình tuần tự hóa
Bài đăng này nhằm giải quyết cả hai vấn đề nêu trên liên quan đến Pandas liên quan đến việc đọc nhiều tệp CSV và chúng tôi sẽ khám phá DataTable trong bài đăng này
Đọc nhiều CSV bằng DataTable [Không lặp lại]Datatable là một thư viện python để thao tác dữ liệu dạng bảng. Nó hỗ trợ bộ dữ liệu hết bộ nhớ, xử lý dữ liệu đa luồng và API linh hoạt
Đoạn mã dưới đây trình bày cách đọc nhiều tệp CSV bằng DataTable
Đoạn mã để đọc nhiều tệp CSV bằng DataTable [Hình ảnh của tác giả]Thiết lập thử nghiệm
- Đối với mục đích thử nghiệm, tôi đã tạo mười tệp CSV ngẫu nhiên và khác nhau bằng Python với 0. Mỗi hàng 1 triệu và ba mươi cột — bao gồm các kiểu dữ liệu chuỗi, float và số nguyên
- Tôi đã lặp lại thí nghiệm được mô tả bên dưới năm lần để giảm tính ngẫu nhiên và rút ra kết luận hợp lý từ các kết quả quan sát được. Các số liệu tôi báo cáo dưới đây là số liệu trung bình của năm thử nghiệm
- Môi trường và thư viện Python
- Trăn 3. 9. 12
- gấu trúc 1. 4. 2
- Dữ liệuBảng 1. 0. 0
Biểu đồ bên dưới mô tả thời gian [tính bằng giây] của Pandas và DataTable để đọc mười tệp CSV và tạo một Khung dữ liệu Pandas duy nhất
Biểu đồ thanh mô tả thời gian cần thiết để đọc các tệp CSV của Pandas và DataTable [Hình ảnh của tác giả]
- Kết quả thử nghiệm cho thấy DataTable có thể tăng tốc hơn hai lần so với Pandas để đọc tệp CSV
- Ngược lại với Pandas, những kết quả này cũng đóng vai trò là bằng chứng cho cách tiếp cận đa luồng được DataTable áp dụng
Thành thật mà nói, tôi không phải là một fan hâm mộ lớn của CSV. Nếu bạn đọc kỹ các bài đăng trước đó của tôi [mà tôi đã liên kết ở trên] và bài đăng bạn đang đọc ngay bây giờ, bạn cũng có thể đồng cảm với tôi. Kể từ khi tôi phát hiện ra nhiều vấn đề liên quan đến CSV, tôi đã ngừng sử dụng chúng nhiều nhất có thể
Để kết luận, tôi muốn nói rằng trừ khi bạn cần xem Khung dữ liệu của mình bên ngoài môi trường không phải python chẳng hạn như Excel, BẠN KHÔNG CẦN CÓ CSV. Thích các định dạng như Parquet, Feather hoặc Pickle để lưu trữ DataFrames của bạn vào. Tuy nhiên, nếu bạn không thấy tùy chọn nào khác, thì ít nhất hãy tối ưu hóa hoạt động đầu vào và đầu ra của bạn bằng cách tận dụng DataTable thay vì Pandas