Python đếm hàng trong tệp CSV mà không cần mở

Trong bài viết này, chúng tôi sẽ thảo luận về cách bỏ qua các hàng từ trên cùng, dưới cùng hoặc tại các chỉ số cụ thể trong khi đọc tệp csv và tải nội dung vào Khung dữ liệu

Thư viện của gấu trúc Python cung cấp chức năng đọc tệp csv và tải dữ liệu trực tiếp vào khung dữ liệu cũng như bỏ qua các dòng được chỉ định từ tệp csv i. e

pandas.read_csv[filepath_or_buffer, skiprows=N, ....]

Nó có thể chấp nhận số lượng lớn các đối số. Nhưng ở đây chúng ta sẽ chỉ thảo luận về một vài lập luận quan trọng mà thôi. e
Tranh luận

  • filepath_or_buffer. đường dẫn của tệp csv hoặc đối tượng của nó
  • mũi dùi. Số dòng cần bỏ qua khi đọc csv
    • Nếu đó là một int thì bỏ qua các dòng đó từ trên xuống
    • Nếu đó là danh sách int thì bỏ qua các dòng ở các vị trí chỉ mục đó
    • Nếu đó là một chức năng có thể gọi được thì hãy chuyển từng chỉ mục cho chức năng này để kiểm tra xem dòng có bị bỏ qua hay không

Nó sẽ đọc tệp csv đã cho bằng cách bỏ qua các dòng đã chỉ định và tải các dòng còn lại vào một khung dữ liệu

quảng cáo

Để sử dụng mô-đun gấu trúc nhập này như thế này,

import pandas as pd

Hãy hiểu bằng các ví dụ,

Giả sử chúng tôi có một người dùng tệp CSV đơn giản. csv và nội dung của nó là,

>>cat users.txt
Name,Age,City
jack,34,Sydeny
Riti,31,Delhi
Aadi,16,New York
Suse,32,Lucknow
Mark,33,Las vegas
Suri,35,Patna

Hãy tải tệp csv này vào một khung dữ liệu bằng cách sử dụng read_csv[] và bỏ qua các hàng theo các cách khác nhau,

Bỏ qua N hàng từ trên cùng trong khi đọc tệp csv sang Dataframe

Trong khi gọi gấu trúc. read_csv[] nếu chúng ta chuyển đối số bỏ qua với giá trị int, thì nó sẽ bỏ qua các hàng đó từ đầu trong khi đọc tệp csv và khởi tạo khung dữ liệu
Ví dụ: nếu chúng tôi muốn bỏ qua 2 dòng từ trên xuống trong khi đọc người dùng. csv và khởi tạo một khung dữ liệu tôi. e

# Skip 2 rows from top in csv and initialize a dataframe
usersDf = pd.read_csv['users.csv', skiprows=2]

print['Contents of the Dataframe created by skipping top 2 lines from csv file ']
print[usersDf]

đầu ra

Contents of the Dataframe created by skipping top 2 lines from csv file 
   Riti  31      Delhi
0  Aadi  16   New York
1  Suse  32    Lucknow
2  Mark  33  Las vegas
3  Suri  35      Patna

Nó bỏ qua 2 dòng trên cùng từ csv và sử dụng dòng thứ 3 [tại chỉ mục 2] làm hàng tiêu đề và tải các hàng còn lại từ csv làm hàng dữ liệu trong khung dữ liệu

Bây giờ nếu chúng ta chỉ muốn bỏ qua một số hàng cụ thể trong khi đọc csv thì sao?

Bỏ qua các hàng tại các vị trí chỉ mục cụ thể trong khi đọc tệp csv vào Dataframe

Trong khi gọi gấu trúc. read_csv[] nếu chúng ta chuyển đối số bỏ qua dưới dạng danh sách các số nguyên, thì nó sẽ bỏ qua các hàng từ csv tại các chỉ mục được chỉ định trong danh sách. Ví dụ: nếu chúng tôi muốn bỏ qua các dòng ở chỉ mục 0, 2 và 5 trong khi đọc người dùng. csv và khởi tạo một khung dữ liệu tôi. e

# Skip  rows at specific index
usersDf = pd.read_csv['users.csv', skiprows=[0,2,5]]

print['Contents of the Dataframe created by skipping specifying lines from csv file ']
print[usersDf]

đầu ra

Contents of the Dataframe created by skipping specifying lines from csv file 
   jack  34    Sydeny
0  Aadi  16  New York
1  Suse  32   Lucknow
2  Suri  35     Patna

Nó bỏ qua các dòng ở vị trí chỉ mục 0, 2 & 5 từ csv và tải các hàng còn lại từ csv vào khung dữ liệu

Bỏ qua N hàng từ đầu trừ tiêu đề trong khi đọc tệp csv vào Dataframe

Như chúng ta đã thấy trong ví dụ đầu tiên khi đọc người dùng. csv khi bỏ qua 3 dòng từ trên xuống sẽ tạo dòng thứ 3 làm hàng tiêu đề. Nhưng đó không phải là hàng chứa tên cột
Vì vậy, nếu tệp csv của chúng tôi có hàng tiêu đề và chúng tôi muốn bỏ qua 2 hàng dữ liệu đầu tiên thì chúng tôi cần chuyển một danh sách tới bỏ qua i. e

# Skip 2 rows from top except header
usersDf = pd.read_csv['users.csv', skiprows=[i for i in range[1,3]]]

print['Contents of the Dataframe created by skipping 2 rows after header row from csv file ']
print[usersDf]

đầu ra

________số 8_______

Nó sẽ đọc tệp csv vào khung dữ liệu bằng cách bỏ qua 2 dòng sau hàng tiêu đề trong tệp csv

Bỏ qua các hàng dựa trên điều kiện trong khi đọc tệp csv sang Dataframe

Chúng ta cũng có thể chuyển một hàm có thể gọi được hoặc hàm lambda để quyết định bỏ qua hàng nào. Khi chuyển chức năng có thể gọi làm đối số trong bỏ qua trong khi gọi gấu trúc. read_csv[], nó sẽ gọi hàm trước khi đọc từng hàng để kiểm tra xem có nên bỏ qua các hàng này hay không. Nó sẽ chuyển vị trí chỉ mục của mỗi hàng trong hàm này
Hãy bỏ qua các hàng trong tệp csv có vị trí chỉ mục là bội số của 3 i. e. bỏ qua mọi dòng thứ 3 trong khi đọc tệp csv và tải khung dữ liệu ra khỏi tệp,

def logic[index]:
    if index % 3 == 0:
       return True
    return False


# Skip rows from based on condition like skip every 3rd line
usersDf = pd.read_csv['users.csv', skiprows= lambda x: logic[x] ]

print['Contents of the Dataframe created by skipping every 3rd row from csv file ']
print[usersDf]

đầu ra

import pandas as pd
0

Bỏ qua N hàng từ dưới cùng/chân trang trong khi đọc tệp csv sang Dataframe

Để bỏ qua N số hàng từ dưới lên trong khi đọc tệp csv sang khung dữ liệu, vui lòng chuyển đối số skipfooter & engine trong  pandas. read_csv[] tôi. e

import pandas as pd
1

đầu ra

import pandas as pd
2

Theo mặc định, read_csv[] sử dụng công cụ C để phân tích cú pháp nhưng nó không cung cấp chức năng bỏ qua từ dưới lên. Nếu chúng tôi muốn sử dụng chức năng này, chúng tôi phải chuyển đối số động cơ cùng với skipfooter nếu không chúng tôi sẽ nhận được cảnh báo như thế này,

Làm cách nào để lấy số hàng trong tệp CSV bằng python pandas?

Bạn có thể sử dụng len[df. index] để tìm số hàng trong pandas DataFrame, df. index trả về RangeIndex[start=0, stop=8, step=1] và sử dụng nó trên len[] để lấy số lượng. Bạn cũng có thể sử dụng len[df] nhưng cách này hoạt động chậm hơn khi so sánh với len[df.

Có bao nhiêu hàng trong tệp CSV?

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. Bạn có thể đọc thêm về các giới hạn này và các giới hạn khác từ bài viết hỗ trợ của Microsoft tại đây.

Chủ Đề