Viết nhiều tệp csv trong python bằng vòng lặp for

Đô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 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[]

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 xem

THÊ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ào

THÊ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"]
0

bạ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 csv

cho f trong tên tệp

________số 8

nế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

Làm cách nào để tạo nhiều tệp CSV từ tệp CSV hiện có bằng gấu trúc?

Tạo tập dữ liệu bằng phương pháp khung dữ liệu của gấu trúc rồi lưu vào “Khách hàng. csv” hoặc chúng tôi có thể tải tập dữ liệu hiện có bằng hàm Pandas read_csv[].

Bạn có thể kết hợp các tệp CSV bằng Python không?

Tùy chọn 2. lập trình . Chúng có các chức năng hoặc gói hữu ích cho phép bạn xử lý các tệp CSV. you can certainly write a script such as Python, to combine CSV files. They have useful functions or packages that allow you to process CSV files.

Chủ Đề