Đọc tách csv python

Với tư cách là Kỹ sư dữ liệu, chúng tôi đã vô số lần chia tệp thành các tệp con một cách ngẫu nhiên dựa trên số dòng hoặc dựa trên một cột cụ thể

Ảnh của Jackson Simmer trên Bapt

Gần đây khi tôi đang làm việc với cơ sở dữ liệu Đồ thị, tôi đã yêu cầu thành viên trong nhóm của mình cung cấp cho tôi tất cả các mối quan hệ trong tệp CSV, do thời gian hạn chế, nhóm đã cung cấp cho tôi một tệp CSV lớn với tất cả các loại (21 loại) mối quan hệ trong cùng một tệp. Yêu cầu của tôi là phải có tệp cho mối quan hệ phạm vi tiếp cận. Nếu tôi bắt đầu tách riêng chúng theo cách thủ công, đôi khi sẽ mất. Do đó, tôi đã viết một Chương trình Python đơn giản bằng cách sử dụng gấu trúc để chia tệp này thành 21 tệp nhỏ khác nhau

Sau đó, tôi đã tổng quát hóa đoạn mã để yêu cầu bất kỳ cột nào trong tệp và phân tách dựa trên cột đã chọn. Tôi đang chia sẻ đoạn mã và giải thích về cách thức và những gì tôi đã làm để chia tệp CSV dựa trên một cột

Đây là cách tiếp cận từng bước, tôi đang sử dụng gói gấu trúc để thực hiện hoạt động phân tách này

## Import pandas
import pandas as pd

Đọc tệp từ thư mục cục bộ hoặc bạn có thể mở rộng mã để đọc tệp từ xa

## Provide the File Name
split_source_file = 'flights_info.csv'

Tạo khung dữ liệu bằng gấu trúc với tệp được cung cấp

## Create a Pandas data frame
df = pd.read_csv(split_source_file, header=0, delimiter=",")

Chỉ trích xuất các cột từ tệp (khung dữ liệu) và giữ chúng trong danh sách

## Extract only the columns of the DataFrame
columns = df.columns.values.tolist()

Chuyển đổi các cột thành chữ hoa (Điều này hữu ích khi chúng tôi yêu cầu đầu vào — cột nào sẽ được sử dụng để tách)

## Convert Columns into upper case (pandas way of doing it)
columns_list = list(pd.Series(columns).str.upper())

Hiển thị các cột trên màn hình và yêu cầu người dùng chọn cột để cắt tệp

## Ask user to provide a column to split
column_choosen = input(f"Which column to choose to split file? type in: {columns} ?:")

Kiểm tra xem cột người dùng đã chọn có trong danh sách không (có thể có một số lỗi chính tả khi nhập)

## Check if the column typed in by user is actually in the column list
if column_choosen.upper() in (columns_list):

Tìm chỉ mục của cột, vì chúng tôi đang chuyển đổi sang các cột và đầu vào của người dùng lên trên, khung dữ liệu không nhận ra nếu trường hợp không chính xác

## Find the index value of the column
indx_val = columns_list.index(column_choosen.upper())

Bây giờ hãy tìm cột thực tế với chính tả chính xác từ danh sách cột Khung dữ liệu dựa trên chỉ mục cột ở trên

________số 8

Hiển thị cho người dùng rằng, đoạn mã này tạo #n số tệp. Nếu người dùng chọn một cột tạo nhiều tệp (chúng tôi có thể cần dừng)

## Indicate how many sub files this programming is going to create
proceed = input(
f"This code splits the CSV into {df.nunique()[column_to_split]} parts? want to proceed? yes / no: ")

Nếu người dùng nói ok. tìm các giá trị duy nhất từ ​​cột đã chọn

## Provide the File Name
split_source_file = 'flights_info.csv'
0

Lặp qua tất cả các giá trị duy nhất

## Provide the File Name
split_source_file = 'flights_info.csv'
1

Xác định tên tệp đích, hàm tạo này lấy tên tệp gốc và nối thêm từng giá trị duy nhất để tạo tên tệp

## Provide the File Name
split_source_file = 'flights_info.csv'
2

Tạo một khung dữ liệu khác từ khung dữ liệu chính bằng cách sử dụng bộ lọc trên cột với từng giá trị của nó trong vòng lặp

## Provide the File Name
split_source_file = 'flights_info.csv'
3

Ghi dữ liệu vào tệp đích bằng phương thức pandas to_csv

## Provide the File Name
split_source_file = 'flights_info.csv'
4

Nếu người dùng cung cấp tên cột sai hoặc tên cột không có trong danh sách. Đặt lại câu hỏi

Muốn đọc và tìm hiểu thêm về Python và Kỹ thuật dữ liệu, vui lòng theo dõi Ramesh Nelluri và đăng ký phương tiện

Bây giờ chúng ta hãy đặt các phần này lại với nhau thành mã Python, tôi cũng giữ tệp csv mẫu được sử dụng cho các thử nghiệm của mình trong ý chính GitHub bên dưới

Chúng tôi có thể đọc trong các tệp CSV giống như cách chúng tôi có với các tệp văn bản khác. Do cấu trúc dữ liệu được tiêu chuẩn hóa nên có một mẫu chung để xử lý dữ liệu. Để thực hành điều này, chúng tôi sẽ sử dụng dữ liệu về các sự kiện olympic

Thông thường, tệp CSV sẽ có tiêu đề là dòng đầu tiên chứa tên cột. Sau đó, mỗi hàng tiếp theo trong tệp sẽ chứa dữ liệu tương ứng với các cột thích hợp

Tất cả các phương thức tệp mà chúng tôi đã đề cập -

## Provide the File Name
split_source_file = 'flights_info.csv'
6,
## Provide the File Name
split_source_file = 'flights_info.csv'
7 và
## Provide the File Name
split_source_file = 'flights_info.csv'
8 và chỉ cần lặp lại trên chính đối tượng tệp - sẽ hoạt động trên các tệp CSV. Trong các ví dụ của chúng tôi, chúng tôi sẽ lặp qua các dòng. Vì các giá trị trên mỗi dòng được phân tách bằng dấu phẩy, nên chúng ta có thể sử dụng phương pháp
## Provide the File Name
split_source_file = 'flights_info.csv'
9 để phân tích từng dòng thành một tập hợp các giá trị riêng biệt

Trong đoạn mã trên, chúng tôi mở tệp, olympics. txt, chứa dữ liệu về một số vận động viên Olympic. Nội dung tương tự như tệp olympic trước đây của chúng tôi, nhưng bao gồm một cột bổ sung có thông tin về các huy chương mà họ đã giành được

Chúng tôi chia hàng đầu tiên để lấy tên trường. Chúng tôi chia các hàng khác để lấy giá trị. Lưu ý rằng chúng tôi chỉ định phân tách bằng dấu phẩy bằng cách chuyển đó làm tham số. Cũng lưu ý rằng trước tiên chúng tôi chuyển hàng qua. strip() để loại bỏ dấu n

Khi chúng tôi đã phân tích cú pháp các dòng thành các giá trị riêng biệt của chúng, chúng tôi có thể sử dụng các giá trị đó trong chương trình. Ví dụ: trong mã ở trên, chúng tôi chỉ chọn những hàng mà vận động viên Olympic đã giành được huy chương và chúng tôi chỉ in ra ba trong số các trường, ở định dạng khác

Lưu ý rằng mẹo tách văn bản cho mỗi hàng dựa trên sự hiện diện của dấu phẩy chỉ hoạt động vì dấu phẩy không được sử dụng trong bất kỳ giá trị trường nào. Giả sử rằng một số sự kiện của chúng tôi cụ thể hơn và sử dụng dấu phẩy. Ví dụ: “Bơi lội, 100M tự do”. Làm thế nào một chương trình sẽ xử lý một. csv biết khi nào dấu phẩy phân tách các cột và khi nào dấu phẩy chỉ là một phần của chuỗi văn bản đưa ra giá trị trong một cột?

Định dạng CSV thực sự chung chung hơn một chút so với những gì chúng tôi đã mô tả và có một số giải pháp cho vấn đề đó. Một định dạng thay thế sử dụng dấu tách cột khác, chẳng hạn như. hoặc một tab (t). Đôi khi, khi một tab được sử dụng, định dạng được gọi là tsv, dành cho các giá trị được phân tách bằng tab). Nếu bạn nhận tệp bằng cách sử dụng dấu tách khác, bạn chỉ cần gọi số

## Create a Pandas data frame
df = pd.read_csv(split_source_file, header=0, delimiter=",")
0 hoặc
## Create a Pandas data frame
df = pd.read_csv(split_source_file, header=0, delimiter=",")
1

Định dạng CSV nâng cao khác sử dụng dấu phẩy để phân tách nhưng đặt tất cả các giá trị trong dấu ngoặc kép

Ví dụ: tệp dữ liệu có thể trông giống như

## Provide the File Name
split_source_file = 'flights_info.csv'
5

Nếu bạn đang đọc một. csv đã bao gồm tất cả các giá trị trong dấu ngoặc kép, việc chia văn bản cho một hàng thành danh sách các giá trị thực sự là một vấn đề lập trình khá phức tạp. Bạn sẽ không muốn cố gắng làm điều đó trực tiếp. Thay vào đó, bạn nên sử dụng mô-đun csv tích hợp sẵn của python. Tuy nhiên, có một chút đường cong học tập cho điều đó và chúng tôi nhận thấy rằng học sinh hiểu rõ hơn về cách đọc định dạng CSV bằng cách trước tiên học cách đọc định dạng đơn giản, không có dấu ngoặc kép và phân tách các dòng bằng dấu phẩy

Làm cách nào để tách dữ liệu CSV bằng Python?

API hệ thống tệp Python .
chunk_size = 40000
def write_chunk(phần, dòng)
với mở ('. /tmp/split_csv_python/data_part_'+ str(part) +'. csv', 'w') dưới dạng f_out
f_out. viết (tiêu đề)
f_out. dòng viết (dòng)
với mở (". /nyc-parking-tickets/Parking_Violations_Issued-Fiscal Year 2015. csv", "r") dưới dạng f
đếm = 0
tiêu đề = f

Làm cách nào để chia nhỏ tệp CSV bằng gấu trúc?

Bước 1 (Sử dụng Pandas). Tìm số lượng hàng từ các tập tin. Bước 1 (Sử dụng Python truyền thống). Tìm số lượng hàng từ các tập tin. Bước 2. Người dùng nhập số dòng trên mỗi tệp (Phạm vi) và tạo một số ngẫu nhiên. Trong trường hợp bạn muốn chia đều, hãy cung cấp cùng một số cho tối đa và tối thiểu

Làm cách nào để đọc tệp CSV dưới dạng danh sách trong Python?

Để làm như vậy, chúng tôi sử dụng csv. DictReader() . Đúng như tên gọi, nó phân tích cú pháp từng hàng dưới dạng từ điển, sử dụng hàng tiêu đề để xác định tên cột. Nếu bạn không có hàng tiêu đề, bạn có thể chỉ định đối số tên trường.