Làm cách nào để hợp nhất 3 tệp CSV trong Python?

Trong hướng dẫn này, tôi sẽ chỉ cho bạn một số cách để hợp nhất/kết hợp nhiều tệp CSV thành một tệp duy nhất bằng cách sử dụng Python (nó cũng sẽ hoạt động với văn bản và các tệp khác). Sẽ có phần thưởng - cách hợp nhất nhiều tệp CSV với một lớp lót cho Linux và Windows. Cuối cùng, với một vài dòng mã, bạn sẽ có thể kết hợp hàng trăm tệp với toàn quyền kiểm soát dữ liệu đã tải - bạn có thể chuyển đổi tất cả các tệp CSV thành Khung dữ liệu Pandas và sau đó đánh dấu từng hàng mà tệp CSV sẽ đến

Ghi chú. Đối với các tệp JSON, hãy kiểm tra. Cách hợp nhất nhiều tệp JSON vào Pandas DataFrame

tập tin ví dụ

  • dữ liệu_201901. csv
  • dữ liệu_201902. csv
  • dữ liệu_201903. csv

sản lượng dự kiến

sáp nhập. csv

Video hướng dẫn
Notebook với tất cả các ví dụ. Kho lưu trữ Github của Softhint

Các bước để hợp nhất nhiều tệp CSV (giống hệt nhau) với Python

Ghi chú. mà chúng tôi giả định - tất cả các tệp có cùng số cột và thông tin giống hệt nhau bên trong

Ví dụ mã ngắn - nối tất cả các tệp CSV trong thư mục Tải xuống

import pandas as pd
import glob

path = r'~/Downloads'
all_files = glob.glob(path + "/*.csv")
all_files

Bước 1. Nhập mô-đun và đặt thư mục làm việc

Đầu tiên chúng ta sẽ bắt đầu với việc tải các mô-đun cần thiết cho chương trình và chọn thư mục làm việc

import os, glob
import pandas as pd

path = "/home/user/data/"

Bước 2. Khớp các tệp CSV theo mẫu

Bước tiếp theo là thu thập tất cả các tệp cần thiết để được kết hợp. Điều này sẽ được thực hiện bởi

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

Mã tiếp theo.

import os, glob
import pandas as pd

path = "/home/user/data/"
4 tập tin chỉ khớp

  • bắt đầu bằng
    import os, glob
    import pandas as pd
    
    path = "/home/user/data/"
    
    5
  • với phần mở rộng tập tin
    import os, glob
    import pandas as pd
    
    path = "/home/user/data/"
    
    6

Bạn có thể tùy chỉnh lựa chọn cho nhu cầu của mình, lưu ý rằng đối sánh regex được sử dụng

Bước 3. Kết hợp tất cả các tệp trong danh sách và xuất dưới dạng CSV

Bước cuối cùng là tải tất cả các tệp đã chọn vào một DataFrame duy nhất và chuyển đổi lại thành csv nếu cần

df_merged = (pd.read_csv(f, sep=',') for f in all_files)
df_merged   = pd.concat(df_from_each_file, ignore_index=True)
df_merged.to_csv( "merged.csv")

Lưu ý rằng bạn có thể thay đổi dấu phân cách bằng cách.

import os, glob
import pandas as pd

path = "/home/user/data/"
7 hoặc thay đổi tiêu đề và hàng sẽ được tải

Bạn có thể tìm hiểu thêm về cách chuyển đổi DataFrame thành tệp CSV tại đây. gấu trúc. Khung dữ liệu. to_csv

Mã đầy đủ

Dưới đây, bạn có thể tìm thấy mã đầy đủ có thể được sử dụng để hợp nhất nhiều tệp CSV

________số 8_______

Làm cách nào để hợp nhất 3 tệp CSV trong Python?

Các bước để hợp nhất nhiều tệp CSV (giống hệt nhau) với Python bằng dấu vết

Bây giờ, giả sử rằng bạn muốn hợp nhất nhiều tệp CSV vào một DataFrame duy nhất nhưng cũng có một cột đại diện cho hàng sắp đến từ tệp nào. Cái gì đó như

hàngcolcol2file1ABdata_201901. csv2CDdata_201902. csv

Điều này có thể đạt được rất dễ dàng bằng cách thay đổi mã nhỏ ở trên

import os, glob
import pandas as pd

path = "/home/user/data/"

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

all_df = []
for f in all_files:
    df = pd.read_csv(f, sep=',')
    df['file'] = f.split('/')[-1]
    all_df.append(df)
    
merged_df = pd.concat(all_df, ignore_index=True, sort=True)

Trong ví dụ này, chúng tôi lặp lại tất cả các tệp đã chọn, sau đó chúng tôi trích xuất tên tệp và tạo một cột chứa tên này

Kết hợp nhiều tệp CSV khi các cột khác nhau

Đôi khi, các tệp CSV sẽ khác nhau đối với một số cột hoặc chúng có thể giống nhau chỉ theo thứ tự sai. Trong ví dụ này, bạn có thể tìm thấy cách kết hợp các tệp CSV không có cấu trúc giống hệt nhau

import os, glob
import pandas as pd

path = "/home/user/data/"

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

all_df = []
for f in all_files:
    df = pd.read_csv(f, sep=',')
    f['file'] = f.split('/')[-1]
    all_df.append(df)
    
merged_df = pd.concat(all_df, ignore_index=True, , sort=True)

Pandas sẽ căn chỉnh dữ liệu theo phương pháp này.

import os, glob
import pandas as pd

path = "/home/user/data/"
8. Trong trường hợp thiếu cột, các hàng của tệp CSV nhất định sẽ chứa các giá trị NaN

rowcolcol2col_201901file1ABAAdata_201901. csv2CDNaNdata_201902. csv

Nếu bạn cần so sánh hai tệp csv để tìm sự khác biệt với Python và Pandas, bạn có thể kiểm tra. Python Pandas So sánh hai tệp CSV dựa trên một cột

Tìm hiểu thêm về pandas concat. gấu trúc. concat

Thưởng. Hợp nhất nhiều tệp với Windows/Linux

Linux

Để biết thêm chi tiết bạn có thể kiểm tra. Cách hợp nhất nhiều tệp CSV trong Linux Mint

Đôi khi, chỉ cần sử dụng các công cụ có sẵn từ hệ điều hành của bạn hoặc trong trường hợp tệp lớn là đủ. Sử dụng python để nối nhiều tệp lớn có thể là một thách thức. Trong trường hợp này cho Linux, nó có thể được sử dụng

sed 1d data_*.csv > merged.csv

Trong trường hợp này, chúng tôi đang làm việc trong thư mục hiện tại bằng cách khớp tất cả các tệp bắt đầu bằng

import os, glob
import pandas as pd

path = "/home/user/data/"
5. Điều này rất quan trọng vì nếu bạn cố gắng thực hiện một cái gì đó như

sed 1d *.csv > merged.csv

Bạn cũng sẽ cố hợp nhất tệp đầu ra mới, điều này có thể gây ra sự cố. Một lưu ý quan trọng khác là điều này sẽ bỏ qua các dòng đầu tiên hoặc tiêu đề của mỗi tệp. Để bao gồm các tiêu đề bạn có thể làm

sed -n 1p data_1.csv > merged.csv
sed 1d data_*.csv >> merged.csv

Nếu các lệnh trên không hiệu quả với bạn thì bạn có thể thử với hai lệnh tiếp theo. Cái đầu tiên sẽ hợp nhất tất cả các tệp csv nhưng gặp sự cố nếu các tệp kết thúc mà không có dòng mới

Làm cách nào để hợp nhất nhiều tệp trong Python?

Sử dụng vòng lặp . Mỗi tệp tạo một bộ mô tả tệp, đọc nội dung của nó theo từng dòng, sau đó ghi thông tin vào tệp nâng cao. tập tin py. Nó thêm một ký tự xuống dòng, hoặc \n, vào tệp mới ở cuối mỗi dòng.

Làm cách nào để kết hợp 2 tệp CSV trong gấu trúc?

Từng bước hợp nhất hai tệp CSV .
nhập gấu trúc dưới dạng pd
csv1 = pd. read_csv("dữ liệu/Danh sách doanh thu. csv") csv1. cái đầu()
csv2 = pd. read_csv("dữ liệu/EquityList. csv") csv2. cái đầu()
merge_data = csv1. hợp nhất(csv2,on=["Mã bảo mật"]) merge_data. cái đầu()
dữ liệu1 = pd. read_csv("dữ liệu/trang tính 1. csv") dữ liệu1. đầu()

Làm cách nào để kết hợp nhiều tệp văn bản thành một CSV bằng Python?

Nếu tất cả các tệp có cùng cấu trúc bảng (cùng tiêu đề & số cột), hãy để tập lệnh Python nhỏ này thực hiện công việc. .
Bước 1. Nhập gói và đặt thư mục làm việc. .
Bước 2. Sử dụng toàn cầu để khớp với mẫu 'csv'.
Bước 3. Kết hợp tất cả các tệp trong danh sách và xuất dưới dạng CSV

Làm cách nào để đọc nhiều tệp CSV trong python bằng gấu trúc?

# Đọc tệp CSV từ Danh sách df = pd. concat(bản đồ(pd. .
# Nhập thư viện nhập toàn cầu nhập gấu trúc dưới dạng pd # Nhận danh sách tệp CSV từ đường dẫn thư mục = '/apps/data_csv_files csv_files = global. .
df = pd. .
# Bằng cách sử dụng hàm def readcsv(args). trả lại pd. .
# Sử dụng dask nhập thư viện dữ liệu