Đô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 vừa với bộ nhớ, bạn có thể gọi
# 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]
0 để chuyển đổi DataFrame thành Pandas DataFrameThư 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[]
tôi có bàn. csv với các giống cây trồng được liên kết với SNP Markers[400]. Một điểm đánh dấu đang xảy ra ở 20 giống. Tôi muốn tạo một tệp csv riêng cho từng điểm đánh dấu phải có nhiều cột và các cột khác. Tôi mới sử dụng python và đang cố gắng sử dụng Pandas. tôi đã viết như sau
import os
from io import open
import pandas as pd
dfs = pd.read_csv['/home/System/Variety_Marker.csv', sep='\t', encoding='latin-1', low_memory=False]
for i in dfs.groupby['MARKER']:
tables = i
df = pd.DataFrame[i] # tuple change into dataframe
df.to_csv[f"/home/System/table_{i}.csv"]
Hệ điều hànhLỗi. [Errno 36] Tên tệp quá dài
Các lệnh đang lấy các giá trị, tiêu đề và tất cả thông tin khi đặt tên tệp csv. Tôi biết ơn trước. Xin hãy giúp giải quyết vấn đề này
Gấu trúc Python R • 1. 0k lượt xemTHÊM NHẬN XÉT • liên kết 6 tháng trước bởi Nai ▴ 20
0
Vào chế độ chỉnh sửa
Hãy thử in kết quả của
# 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]
1 và xem tên tệp mà nó đang cố ghi vàoTHÊM TRẢ LỜI • liên kết 6 tháng trước bởi Asaf 9. 5k
0
Vào chế độ chỉnh sửa
Tại sao điều này được gắn thẻ với
# 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]
2?THÊM TRẢ LỜI • liên kết 6 tháng trước bởi Joe 20k
0
Vào chế độ chỉnh sửa
Nếu tôi cũng có thể nhận được giải pháp trong R
ADD REPLY • link 6 tháng trước bởi Nai ▴ 20
4
Vào chế độ chỉnh sửa
6 tháng trước
ông chủ. kassa. sc3na ▴ 550
Xin chào, vấn đề chính là bạn đang chuyển
# 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]
3 [là một bộ của
# 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]
4 và
# 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]
5] cho chuỗi định dạng.
# 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]
6 trả về biểu diễn chuỗi của bộ dữ liệu, bao gồm một phần dữ liệu của bạn. Đây là lý do tại sao bạn đang nhận được for i, df in dfs.groupby['MARKER']:
df.to_csv[f"/home/System/table_{i}.csv"]
0bạn nên làm gì
for i, df in dfs.groupby['MARKER']:
df.to_csv[f"/home/System/table_{i}.csv"]
THÊM NHẬN XÉT • liên kết 6 tháng trước bởi massa. kassa. sc3na ▴ 550
0
Vào chế độ chỉnh sửa
Cảm ơn bạn. Tôi muốn biết về biến df trong vòng lặp for. Tôi đã tạo nhiều tệp csv. Bây giờ tôi muốn đọc tất cả csv. tôi đã làm bằng cách
đường dẫn = '/ home/System/PCA_1/' tên tệp = toàn cầu. toàn cầu [đường dẫn + "/*. csv"]
lặp qua danh sách các tệp csvcho f trong tên tệp
________số 8nếu df1. groupby["GIỐNG"]. get_value["C61"] HOẶC. nhóm["AGE"]. get_value["10"]
df.to_csv[f"/home/System/Marker_filter.csv"]
Tôi muốn đề cập riêng các điều kiện trên 5 cột trong mỗi tệp và tạo tệp mới MARKER_filter. csv. Tôi không nhận được câu lệnh if trên nhiều cột trong nhiều tệp csv