Làm cách nào để đếm các mục trong tệp csv trong python?

Có nhiều cách để người ta có thể tìm thấy số lượng bản ghi từ tệp CSV bằng Python. Bài viết này mô tả 6 cách khác nhau và khám phá phương pháp hiệu quả để kết nối với điện toán phân tán bằng Pandas và Koalas

Ảnh của Sigmund trên Bapt

Trong khi tôi đang viết bài "Chia một tệp CSV lớn một cách ngẫu nhiên hoặc bằng nhau thành các tệp nhỏ hơn", tôi đã sử dụng một vài phương pháp để tìm số dòng trong một tệp nhất định. Điều đó khiến tôi tò mò muốn xem phương pháp tốt nhất để tìm số dòng trong tệp đã cho

Hãy xem xét 6 phương pháp khác nhau [có thể có nhiều cách hơn để giải quyết vấn đề này], đây đều là những phương pháp cơ bản mà bất kỳ ai cũng có thể hiểu và sử dụng

Phương pháp1. Đếm số lượng bản ghi bằng cách sử dụng liệt kê và vòng lặp python

Trong phương pháp này, trước tiên hãy mở tệp ở chế độ đọc và lặp qua nội dung tệp được liệt kê, khi vòng lặp hoàn thành lần lặp cuối cùng bao gồm line_count

def count_lines_enumrate[file_name]:
fp = open[file_name,'r']
for line_count, line in enumerate[fp]:
pass
return line_count

Phương pháp2. Đếm số lượng bản ghi bằng cách sử dụng liệt kê và danh sách python

Trong phương pháp này, trước tiên hãy mở tệp ở chế độ đọc và chuyển đổi kết quả liệt kê thành danh sách và trích xuất phần tử cuối cùng của danh sách

def count_lines_enumrate[file_name]:
fp = open[file_name,'r']
line_count = list[enumerate[fp]][-1][0]
return line_count

Phương pháp3. Đếm số bản ghi bằng python sum 1 cho mỗi dòng

Trong phương pháp này, mở tệp ở chế độ đọc và chức năng tính tổng giống như hiểu danh sách

def count_line_sum[file_name]:
fp = open[file_name,'r']
line_count = sum[1 for line in fp]
return line_count

Phương pháp4. Đếm số lượng bản ghi bằng cách sử dụng phương pháp tệp đọc dòng

Trong phương pháp này, mở tệp ở chế độ đọc và độ dài của danh sách được tạo bởi phương pháp tệp dòng đọc

def count_lines_readlines[file_name]:
fp = open[file_name,'r']
line_count = len[fp.readlines[]]
return line_count

Phương pháp5. Đếm số bản ghi bằng python cơ bản bằng cách sử dụng các dòng đếm

Trong phương pháp này, hãy mở tệp ở chế độ đọc và lặp qua từng dòng một và tăng số đếm cho đến khi tất cả các dòng được lặp

def count_lines_traditional[file_name]:
fp = open[file_name,'r']
line_count = 0
for line in fp:
line_count += 1
return line_count

Phương pháp6. Đếm số lượng hồ sơ sử dụng gấu trúc

Trong phương pháp này, hãy sử dụng phương pháp pandas read_csv để đọc tệp và tìm độ dài của chỉ mục khung dữ liệu

import pandas
def count_lines_pandas[file_name]:
df = pd.read_csv[file_name, header=0]
return len[df.index]

Tôi đã thử nghiệm tất cả 6 phương pháp này trong máy của mình để tìm ra chức năng nào hoạt động tốt nhất. Trong hầu hết các chức năng này, trình đọc tệp đi qua tất cả các dòng và lưu trong bộ nhớ ngoại trừ phương thức liệt kê

Tôi đã thử nghiệm các đoạn mã này với tập dữ liệu sau

Kích thước tệp và số lượng bản ghi

Hãy xem kết quả

Thời gian thực hiện của tất cả các phương pháp trên

Phương pháp-1 vượt trội hơn tất cả các chức năng dòng đếm khác. Điều này là do thực tế là, liệt kê không đi qua các dòng và thực hiện thêm bất kỳ thao tác nào để đếm dữ liệu

Đáng ngạc nhiên, phương pháp gấu trúc hoạt động kém nhất đối với tất cả các kích thước tệp. Tuy nhiên, với phiên bản mới nhất của Spark 3. 2 pandas cũng hỗ trợ tính toán phân tán và đọc dữ liệu nhanh hơn nhiều như spark

Một cột của tệp CSV chứa nhiều giá trị có thể có và tôi muốn tìm 5 giá trị phổ biến nhất. Một vài mã python có thể giúp tôi hoàn thành

Ví dụ về tệp CSV

Giả sử tệp CSV có tên là "test_data. csv" và nội dung của nó là

"date","url","method","status_code","bytes"
"Jun 18, 2022","/posts/find_biggest_files",GET,200,"2.7KB"
"Jun 18, 2022","/posts/gunicorn_concurrency",GET,200,3KB
"Jun 18, 2022","/posts/gunicorn_concurrency",GET,301,169B
"Jun 18, 2022","/posts/auto_sqlalchemy_models",GET,200,"2.2KB"
"Jun 18, 2022","/posts/python_memcached",GET,200,"2.4KB"
"Jun 18, 2022","/posts/python_memcached",GET,200,"2.4KB"
"Jun 17, 2022","/posts/dynamic_table",GET,200,"2.9KB"
"Jun 17, 2022","/posts/python_sys_path",GET,200,"2.3KB"
"Jun 17, 2022","/posts/dynamic_table",GET,200,"2.9KB"
"Jun 17, 2022","/posts/gunicorn_concurrency",GET,200,3KB
"Jun 17, 2022","/posts/gunicorn_concurrency",GET,301,169B
"Jun 17, 2022","/posts/vscode_flake8_line_width",GET,200,"2.3KB"
"Jun 17, 2022","/posts/vscode_flake8_line_width",GET,301,169B
"Jun 17, 2022","/posts/dynamic_table",GET,200,"2.9KB"
"Jun 17, 2022","/posts/aws_content_type",GET,200,"2.2KB"
"Jun 17, 2022","/posts/curl_upload_flask",GET,200,"2.7KB"
"Jun 17, 2022","/posts/dynamic_table",GET,200,"2.9KB"
"Jun 17, 2022","/posts/es_less_mem",GET,200,"2.2KB"
"Jun 17, 2022","/posts/dynamic_table",GET,200,"2.9KB"

Trên thực tế, đó là một phần trong tệp nhật ký của easydevguide.com. Tôi muốn tìm 5 url thường xuyên nhất trong tệp này. url là cột thứ hai của tệp CSV này

Tệp CSV có thể có bao nhiêu dòng?

tệp csv có giới hạn 32.767 ký tự trên mỗi ô. Excel có giới hạn 1.048.576 hàng và 16.384 cột trên mỗi trang tính. Tệp CSV có thể chứa nhiều hàng hơn.

Mô-đun nào được sử dụng trên tệp CSV?

Việc đọc từ tệp CSV được thực hiện bằng cách sử dụng đối tượng trình đọc . Tệp CSV được mở dưới dạng tệp văn bản với hàm open[] tích hợp sẵn của Python, hàm này trả về một đối tượng tệp.

Chủ Đề