Tôi có nhiều tệp CSV, trong đó có gần 1k+ hàng trong mỗi tệp và chỉ có 2 cột, cột đầu tiên của mỗi tệp giống nhau đối với mọi tệp CSV nhưng cột thứ 2 dành riêng cho mọi giá trị khác như đối với Công suất động cơ xe máy . Tôi đã thử trích xuất dữ liệu từ tất cả các tệp CSV và thêm chúng vào danh sách nhưng tôi không nhận được câu trả lời thích hợp. Dưới đây là phương pháp tôi đã thử
import numpy as np
import pandas as pd
import glob
csvs = glob.glob['D:/Project/*.csv']
print[csvs]
a = []
for proj in csvs:
df1 = pd.read_csv[proj, index_col=None, header = 0]
a.append[df1]
print[a]#Check Output 1
df2 = pd.concat[a, axis=0, ignore_index=True]
df2.head[]#check output 2
#Đầu ra 1
[Unnamed: 0 engine capacity
0 0 1497.169492
1 1 1166.142857
2 2 1537.406593
3 3 1219.653846
4 4 1995.777778
[1035 rows x 2 columns],
Unnamed: 0 fuel
0 0 petrol
1 1 petrol
2 2 electrical
3 3 electrical
4 4 electrical
[1035 rows x 2 columns],
Unnamed: 0 power
0 0 57.342
1 1 64.232
2 2 56.405
3 3 98.109
4 4 101.455
[1035 rows x 2 columns]]
#Đầu ra 2
Unnamed: 0 enginecapacity fuel power
0 0 1500.134 NaN NaN
1 1 1299.132 NaN NaN
2 2 1200.455 NaN NaN
3 3 1700.456 NaN NaN
4 4 1430.232 NaN NaN
Nó không đưa ra đầu ra chính xác cho các cột khác, nó chỉ đưa ra đầu ra chính xác cho tệp đầu tiên, bất kể nó lấy gì và phần còn lại, nó cho NaN. Tôi đang làm gì ở đây
Thông thường, với tư cách là nhà phân tích dữ liệu, bạn có thể thấy mình bị quá tải với nhiều tệp CSV cần được kết hợp với nhau trước khi bạn có thể bắt đầu phân tích dữ liệu có sẵn. Tuy nhiên, không phải lúc nào tất cả các tệp đều được trích xuất từ cùng một nguồn dữ liệu và có cùng cột dữ liệu hoặc theo cùng một cấu trúc dữ liệu
Trong hướng dẫn này, bạn sẽ tìm hiểu cách kết hợp nhiều CSV với cấu trúc cột tương tự hoặc khác nhau và cách sử dụng các hàm
#import the modules5,
import os
import pandas as pd#read the path
file_path = "D:\Blog\Merge_Files\csv_files"#list all the files from the directory
file_list = os.listdir[file_path]
file_list
#import the modules6,
import os
import pandas as pd#read the path
file_path = "D:\Blog\Merge_Files\csv_files"#list all the files from the directory
file_list = os.listdir[file_path]
file_list
#import the modules7 và
import os
import pandas as pd#read the path
file_path = "D:\Blog\Merge_Files\csv_files"#list all the files from the directory
file_list = os.listdir[file_path]
file_list
#import the modules8 để làm như vậy
import os
import pandas as pd#read the path
file_path = "D:\Blog\Merge_Files\csv_files"#list all the files from the directory
file_list = os.listdir[file_path]
file_list
Trước khi chúng tôi làm điều đó, hãy xem cách nhập một tệp csv vào khung dữ liệu bằng gói Pandas
1. Nhập tệp vào DataFrames của gấu trúc
Để nhập một tệp vào khung dữ liệu, bạn chỉ cần sử dụng hàm
#import the modules9________số 8
import os
import pandas as pd#read the path
file_path = "D:\Blog\Merge_Files\csv_files"#list all the files from the directory
file_list = os.listdir[file_path]
file_list
Khi bạn có nhiều tệp để làm việc, cách tốt nhất là dán tất cả các tệp vào một thư mục và sau đó đọc tất cả các tệp này bằng hàm
#import the modules9
import os
import pandas as pd#read the path
file_path = "D:\Blog\Merge_Files\csv_files"#list all the files from the directory
file_list = os.listdir[file_path]
file_list
2. Thiết lập thư mục làm việc
Một phương pháp là chuyển đường dẫn của thư mục vào một biến và sau đó liệt kê tất cả các tệp trong thư mục đó
#import the modules
import os
import pandas as pd#read the path
file_path = "D:\Blog\Merge_Files\csv_files"#list all the files from the directory
file_list = os.listdir[file_path]
file_list
Mặt khác, nếu bạn muốn đọc các tệp từ cùng thư mục với tệp ipynb của mình, bạn có thể sử dụng mã bên dưới
[Unnamed: 0 engine capacity
0 0 1497.169492
1 1 1166.142857
2 2 1537.406593
3 3 1219.653846
4 4 1995.777778
[1035 rows x 2 columns],
Unnamed: 0 fuel
0 0 petrol
1 1 petrol
2 2 electrical
3 3 electrical
4 4 electrical
[1035 rows x 2 columns],
Unnamed: 0 power
0 0 57.342
1 1 64.232
2 2 56.405
3 3 98.109
4 4 101.455
[1035 rows x 2 columns]]
1Phương pháp thứ ba là sử dụng hàm
[Unnamed: 0 engine capacity
0 0 1497.169492
1 1 1166.142857
2 2 1537.406593
3 3 1219.653846
4 4 1995.777778
[1035 rows x 2 columns],
Unnamed: 0 fuel
0 0 petrol
1 1 petrol
2 2 electrical
3 3 electrical
4 4 electrical
[1035 rows x 2 columns],
Unnamed: 0 power
0 0 57.342
1 1 64.232
2 2 56.405
3 3 98.109
4 4 101.455
[1035 rows x 2 columns]]
11 để chỉ liệt kê các tệp csv từ thư mục làm việc[Unnamed: 0 engine capacity
0 0 1497.169492
1 1 1166.142857
2 2 1537.406593
3 3 1219.653846
4 4 1995.777778
[1035 rows x 2 columns],
Unnamed: 0 fuel
0 0 petrol
1 1 petrol
2 2 electrical
3 3 electrical
4 4 electrical
[1035 rows x 2 columns],
Unnamed: 0 power
0 0 57.342
1 1 64.232
2 2 56.405
3 3 98.109
4 4 101.455
[1035 rows x 2 columns]]
3Giờ đây, để đọc nhiều tệp CSV có cấu trúc bảng tương tự, bạn có thể sử dụng các hàm
[Unnamed: 0 engine capacity
0 0 1497.169492
1 1 1166.142857
2 2 1537.406593
3 3 1219.653846
4 4 1995.777778
[1035 rows x 2 columns],
Unnamed: 0 fuel
0 0 petrol
1 1 petrol
2 2 electrical
3 3 electrical
4 4 electrical
[1035 rows x 2 columns],
Unnamed: 0 power
0 0 57.342
1 1 64.232
2 2 56.405
3 3 98.109
4 4 101.455
[1035 rows x 2 columns]]
12 HOẶC [Unnamed: 0 engine capacity
0 0 1497.169492
1 1 1166.142857
2 2 1537.406593
3 3 1219.653846
4 4 1995.777778
[1035 rows x 2 columns],
Unnamed: 0 fuel
0 0 petrol
1 1 petrol
2 2 electrical
3 3 electrical
4 4 electrical
[1035 rows x 2 columns],
Unnamed: 0 power
0 0 57.342
1 1 64.232
2 2 56.405
3 3 98.109
4 4 101.455
[1035 rows x 2 columns]]
13Hãy xem 3 tệp CSV mẫu mà chúng tôi sẽ làm việc với
csv_sample1. csv
csv_sample2. csv
csv_sample3. csv
Cả ba tệp đều có tiêu đề cột giống nhau ngoại trừ csv_Sample2. csv có một cột bổ sung có tên “Ngày sinh”. Ngoài ra, lưu ý rằng có 2 mục phổ biến giữa csv_Sample1. csv và csv_Sample2. csv, như được đánh dấu. Đây, mục nhập cho “Tom R. Powell” có các giá trị “Ngày tham gia” khác nhau trong cả hai tệp. Lưu ý cách các mục này được kết hợp trong tất cả các phương pháp được sử dụng bên dưới
3. Kết hợp nhiều tệp với cấu trúc bảng tương tự bằng gấu trúc. Khung dữ liệu. nối thêm []
Sử dụng đoạn mã dưới đây để đọc và kết hợp tất cả các tệp csv từ thư mục đã đặt trước đó
[Unnamed: 0 engine capacity
0 0 1497.169492
1 1 1166.142857
2 2 1537.406593
3 3 1219.653846
4 4 1995.777778
[1035 rows x 2 columns],
Unnamed: 0 fuel
0 0 petrol
1 1 petrol
2 2 electrical
3 3 electrical
4 4 electrical
[1035 rows x 2 columns],
Unnamed: 0 power
0 0 57.342
1 1 64.232
2 2 56.405
3 3 98.109
4 4 101.455
[1035 rows x 2 columns]]
6Kết quả sau khi sử dụng hàm
#import the modules5 như bên dưới
import os
import pandas as pd#read the path
file_path = "D:\Blog\Merge_Files\csv_files"#list all the files from the directory
file_list = os.listdir[file_path]
file_list
Tại đây, bạn có thể thấy rằng tất cả các hàng dữ liệu từ các tệp đã được thêm vào bên dưới hàng khác. Tuy nhiên, các giá trị NaN đã được chèn vào cột “Ngày sinh” vì các giá trị này không có trong csv_sample1. csv và csv_sample3. tệp csv
4. Kết hợp nhiều tệp với cấu trúc bảng tương tự bằng gấu trúc. concat[]
Một cách khác để kết hợp các tệp là sử dụng
[Unnamed: 0 engine capacity
0 0 1497.169492
1 1 1166.142857
2 2 1537.406593
3 3 1219.653846
4 4 1995.777778
[1035 rows x 2 columns],
Unnamed: 0 fuel
0 0 petrol
1 1 petrol
2 2 electrical
3 3 electrical
4 4 electrical
[1035 rows x 2 columns],
Unnamed: 0 power
0 0 57.342
1 1 64.232
2 2 56.405
3 3 98.109
4 4 101.455
[1035 rows x 2 columns]]
15, như hình bên dưới[Unnamed: 0 engine capacity
0 0 1497.169492
1 1 1166.142857
2 2 1537.406593
3 3 1219.653846
4 4 1995.777778
[1035 rows x 2 columns],
Unnamed: 0 fuel
0 0 petrol
1 1 petrol
2 2 electrical
3 3 electrical
4 4 electrical
[1035 rows x 2 columns],
Unnamed: 0 power
0 0 57.342
1 1 64.232
2 2 56.405
3 3 98.109
4 4 101.455
[1035 rows x 2 columns]]
9Bây giờ, nếu bạn muốn nối các hàng dữ liệu của các tệp dựa trên các cột liên quan thì bạn có thể sử dụng hàm
[Unnamed: 0 engine capacity
0 0 1497.169492
1 1 1166.142857
2 2 1537.406593
3 3 1219.653846
4 4 1995.777778
[1035 rows x 2 columns],
Unnamed: 0 fuel
0 0 petrol
1 1 petrol
2 2 electrical
3 3 electrical
4 4 electrical
[1035 rows x 2 columns],
Unnamed: 0 power
0 0 57.342
1 1 64.232
2 2 56.405
3 3 98.109
4 4 101.455
[1035 rows x 2 columns]]
165. Sử dụng gấu trúc. Khung dữ liệu. merge[] để nối các hàng dữ liệu
Trước tiên, hãy đọc các tệp thành các tệp dữ liệu riêng biệt như bên dưới
Unnamed: 0 enginecapacity fuel power
0 0 1500.134 NaN NaN
1 1 1299.132 NaN NaN
2 2 1200.455 NaN NaN
3 3 1700.456 NaN NaN
4 4 1430.232 NaN NaN
1Unnamed: 0 enginecapacity fuel power
0 0 1500.134 NaN NaN
1 1 1299.132 NaN NaN
2 2 1200.455 NaN NaN
3 3 1700.456 NaN NaN
4 4 1430.232 NaN NaN
2Bây giờ, trong khi sử dụng
#import the modules7 giữa các khung dữ liệu này, bạn cần chỉ định các cột có liên quan mà bạn muốn nối các hàng
import os
import pandas as pd#read the path
file_path = "D:\Blog\Merge_Files\csv_files"#list all the files from the directory
file_list = os.listdir[file_path]
file_list
Unnamed: 0 enginecapacity fuel power
0 0 1500.134 NaN NaN
1 1 1299.132 NaN NaN
2 2 1200.455 NaN NaN
3 3 1700.456 NaN NaN
4 4 1430.232 NaN NaN
4Hàm chỉ nối tất cả các hàng khi tất cả các giá trị của các cột đã chỉ định khớp nhau
Ở đây, chúng tôi đã sử dụng phương pháp nối ngoài để hợp nhất các tệp. Để tìm hiểu thêm về loại hợp nhất sẽ được thực hiện, bạn có thể tham khảo liên kết này. gấu trúc. hợp nhất[]
Trong ví dụ trên, chúng tôi đã chuyển một danh sách các tên cột mà chúng tôi muốn nối các hàng. Thay vào đó, nếu chúng ta chỉ nối các hàng trên cột “Email” thì chúng ta sẽ nhận được kết quả như bên dưới
Unnamed: 0 enginecapacity fuel power
0 0 1500.134 NaN NaN
1 1 1299.132 NaN NaN
2 2 1200.455 NaN NaN
3 3 1700.456 NaN NaN
4 4 1430.232 NaN NaN
5Bây giờ, nếu bạn muốn tạo một khung dữ liệu với các giá trị giả sử, csv_sample1. csv và bất cứ nơi nào null, hãy lấy các giá trị từ một tệp khác, chẳng hạn như csv_sample2. csv sau đó sử dụng
#import the modules8
import os
import pandas as pd#read the path
file_path = "D:\Blog\Merge_Files\csv_files"#list all the files from the directory
file_list = os.listdir[file_path]
file_list
6. Cập nhật giá trị null trong các cột từ các cột khác bằng gấu trúc. tổ hợp_đầu tiên[]
Thay thế '_x' từ tiêu đề cột
#import the modules0
import os
import pandas as pd#read the path
file_path = "D:\Blog\Merge_Files\csv_files"#list all the files from the directory
file_list = os.listdir[file_path]
file_list
Vượt qua tất cả các tên cột mà bạn muốn áp dụng
#import the modules8. Một cách dễ dàng là tìm nạp các cột có '_y' trong tiêu đề và sau đó xóa '_y' khỏi chúng, như bên dưới
import os
import pandas as pd#read the path
file_path = "D:\Blog\Merge_Files\csv_files"#list all the files from the directory
file_list = os.listdir[file_path]
file_list