Hướng dẫn how do i read multiple csv files and append in python? - làm cách nào để đọc nhiều tệp csv và thêm vào python?

Xem Pandas: Công cụ IO cho tất cả các phương thức

all_files = glob.glob(os.path.join(path, "*.csv"))

df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)
5 có sẵn.

Hãy thử mã sau nếu tất cả các tệp CSV có cùng một cột.

Tôi đã thêm

all_files = glob.glob(os.path.join(path, "*.csv"))

df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)
6, để sau khi đọc hàng đầu tiên của tệp CSV, nó có thể được gán dưới dạng tên cột.

import pandas as pd
import glob
import os

path = r'C:\DRO\DCL_rawdata_files' # use your path
all_files = glob.glob(os.path.join(path , "/*.csv"))

li = []

for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0)
    li.append(df)

frame = pd.concat(li, axis=0, ignore_index=True)

Hoặc, với sự quy kết cho một nhận xét từ SID.

all_files = glob.glob(os.path.join(path, "*.csv"))

df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)

  • Thường cần phải xác định từng mẫu dữ liệu, có thể được thực hiện bằng cách thêm một cột mới vào DataFrame.
  • all_files = glob.glob(os.path.join(path, "*.csv"))
    
    df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)
    
    7 Từ thư viện tiêu chuẩn sẽ được sử dụng cho ví dụ này. Nó coi các đường dẫn là đối tượng bằng các phương pháp, thay vì các chuỗi được cắt lát.

Nhập khẩu và thiết lập

from pathlib import Path
import pandas as pd
import numpy as np

path = r'C:\DRO\DCL_rawdata_files'  # or unix / linux / mac path

# Get the files from the path provided in the OP
files = Path(path).glob('*.csv')  # .rglob to get subdirectories

Lựa chọn 1:

  • Thêm một cột mới với tên tệp
dfs = list()
for f in files:
    data = pd.read_csv(f)
    # .stem is method for pathlib objects to get the filename w/o the extension
    data['file'] = f.stem
    dfs.append(data)

df = pd.concat(dfs, ignore_index=True)

Lựa chọn 2:

  • Thêm một cột mới với tên chung bằng cách sử dụng
    all_files = glob.glob(os.path.join(path, "*.csv"))
    
    df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)
    
    8
dfs = list()
for i, f in enumerate(files):
    data = pd.read_csv(f)
    data['file'] = f'File {i}'
    dfs.append(data)

df = pd.concat(dfs, ignore_index=True)

Tùy chọn 3:

  • Tạo DataFrames với khả năng hiểu danh sách, sau đó sử dụng
    all_files = glob.glob(os.path.join(path, "*.csv"))
    
    df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)
    
    9 để thêm một cột mới.
    • from pathlib import Path
      import pandas as pd
      import numpy as np
      
      path = r'C:\DRO\DCL_rawdata_files'  # or unix / linux / mac path
      
      # Get the files from the path provided in the OP
      files = Path(path).glob('*.csv')  # .rglob to get subdirectories
      
      0 Tạo một danh sách các chuỗi để đặt tên cho mỗi DataFrame.
    • from pathlib import Path
      import pandas as pd
      import numpy as np
      
      path = r'C:\DRO\DCL_rawdata_files'  # or unix / linux / mac path
      
      # Get the files from the path provided in the OP
      files = Path(path).glob('*.csv')  # .rglob to get subdirectories
      
      1 tạo ra một danh sách độ dài
  • Thuộc tính cho tùy chọn này đi đến câu trả lời âm mưu này.
# Read the files into dataframes
dfs = [pd.read_csv(f) for f in files]

# Combine the list of dataframes
df = pd.concat(dfs, ignore_index=True)

# Add a new column
df['Source'] = np.repeat([f'S{i}' for i in range(len(dfs))], [len(df) for df in dfs])

Tùy chọn 4:

  • Một lớp lót sử dụng
    from pathlib import Path
    import pandas as pd
    import numpy as np
    
    path = r'C:\DRO\DCL_rawdata_files'  # or unix / linux / mac path
    
    # Get the files from the path provided in the OP
    files = Path(path).glob('*.csv')  # .rglob to get subdirectories
    
    2 để tạo cột mới, với sự quy kết thành nhận xét từ C8H10N4O2
df = pd.concat((pd.read_csv(f).assign(filename=f.stem) for f in files), ignore_index=True)

hoặc

df = pd.concat((pd.read_csv(f).assign(Source=f'S{i}') for i, f in enumerate(files)), ignore_index=True)

Trong hướng dẫn này, tôi sẽ giải thích cách nhập nhiều tệp CSV và kết hợp chúng vào một khung dữ liệu gấu trúc duy nhất trong Python.import multiple CSV files and combine them into a single pandas DataFrame in Python.

Trang chứa các nội dung sau:

Đó là thời gian để đi sâu vào mã Python mẫu mực!

Ví dụ Dữ liệu & Thư viện bổ trợ

Nếu chúng ta muốn sử dụng các chức năng của thư viện Pandas, trước tiên chúng ta phải tải gấu trúc:

import pandas as pd                                # Load pandas

Tiếp theo, chúng tôi cũng cần xây dựng một số dữ liệu mà chúng tôi có thể sử dụng trong ví dụ dưới đây:

data1 = pd.DataFrame({'x1':range(1, 7),            # Create first pandas DataFrame
                      'x2':['a', 'b', 'c', 'd', 'e', 'f'],
                      'x3':range(7, 1, - 1)})
print(data1)                                       # Print first pandas DataFrame

Hướng dẫn how do i read multiple csv files and append in python? - làm cách nào để đọc nhiều tệp csv và thêm vào python?

all_files = glob.glob(os.path.join(path, "*.csv"))

df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)
0

Hướng dẫn how do i read multiple csv files and append in python? - làm cách nào để đọc nhiều tệp csv và thêm vào python?

all_files = glob.glob(os.path.join(path, "*.csv"))

df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)
1

Hướng dẫn how do i read multiple csv files and append in python? - làm cách nào để đọc nhiều tệp csv và thêm vào python?

Như được hiển thị trong Bảng 1, 2 và 3, cú pháp lập trình Python trước đó đã xây dựng ba khung dữ liệu gấu trúc. Mỗi khung dữ liệu này chứa cùng tên cột, nhưng các giá trị khác nhau.

Hãy để xuất khẩu các khung dữ liệu này sang các tệp CSV khác nhau:

all_files = glob.glob(os.path.join(path, "*.csv"))

df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)
2

Sau khi chúng tôi thực hiện mã Python trước đó, ba tệp CSV mới sẽ xuất hiện trong thư mục làm việc hiện tại của chúng tôi. Các tệp CSV này sẽ được sử dụng làm cơ sở cho ví dụ sau.

Ví dụ: Nhập nhiều tệp CSV & Concatenate vào một Pandas DataFrame

Cú pháp lập trình Python sau đây cho thấy cách đọc nhiều tệp CSV và hợp nhất chúng theo chiều dọc thành một khung dữ liệu gấu trúc duy nhất.

Đối với nhiệm vụ này, trước tiên chúng tôi phải tạo một danh sách tất cả các tên tệp CSV mà chúng tôi muốn tải và nối vào nhau:

all_files = glob.glob(os.path.join(path, "*.csv"))

df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)
3

Trong bước tiếp theo, chúng ta có thể sử dụng một vòng lặp For để đọc và tham gia tất cả các bộ dữ liệu của chúng tôi vào một khung dữ liệu gấu trúc duy nhất.

Lưu ý rằng tôi cũng sử dụng hàm reset_index để đặt lại các số chỉ mục trong dữ liệu được nối của chúng tôi. Đây là một bước tùy chọn, mặc dù.

all_files = glob.glob(os.path.join(path, "*.csv"))

df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)
4

Hướng dẫn how do i read multiple csv files and append in python? - làm cách nào để đọc nhiều tệp csv và thêm vào python?

Đầu ra của mã Python trước đó được hiển thị trong Bảng 4 - chúng tôi đã tạo một khung dữ liệu gấu trúc mới chứa tất cả các hàng trong ba tệp CSV đầu vào của chúng tôi.

Video, Tài nguyên & Tóm tắt

Hãy xem video sau trên kênh YouTube của tôi. Trong video, tôi đã giải thích nội dung của bài viết này trong một phiên lập trình.

Video YouTube sẽ sớm được thêm vào.

Ngoài ra, bạn có thể muốn đọc các hướng dẫn khác mà tôi đã xuất bản trên trang web này.

  • Khóa học cơ bản cho Thư viện Pandas ở Python
  • Đọc tệp CSV dưới dạng Pandas DataFrame trong Python
  • Đọc tệp CSV mà không có cột chỉ mục không tên
  • Nối Pandas DataFrame vào tệp CSV hiện có
  • Nối ghi dữ liệu gấu trúc trong Python
  • Nước nối các hàng vào Pandas DataFrame trong Loop
  • Reindex & Reset Index của Pandas DataFrame từ 0
  • Giới thiệu về Python

Tóm lại: Trong hướng dẫn Python này, bạn đã học được cách đọc một số tệp CSV và kết hợp chúng thành một khung dữ liệu gấu trúc duy nhất. Trong trường hợp bạn có bất kỳ câu hỏi bổ sung, xin vui lòng cho tôi biết trong các ý kiến ​​dưới đây.read several CSV files and combine them into a single pandas DataFrame. In case you have any additional questions, please let me know in the comments below.