Hướng dẫn read csv line by line python - đọc csv từng dòng python

Hướng dẫn read csv line by line python - đọc csv từng dòng python

Trong bài viết này, chúng tôi sẽ thảo luận về cách đọc một dòng tệp CSV theo dòng có hoặc không có tiêu đề. Đồng thời chọn các cột cụ thể trong khi lặp qua dòng tệp CSV từng dòng.

Giả sử chúng ta có một tập tin CSV sinh viên.csv và nội dung của nó là,students.csv and its contents are,

Id,Name,Course,City,Session
21,Mark,Python,London,Morning
22,John,Python,Tokyo,Evening
23,Sam,Python,Paris,Morning
32,Shaun,Java,Tokyo,Morning

Chúng tôi muốn đọc tất cả các hàng của dòng tệp CSV này từng dòng và xử lý từng dòng tại một thời điểm.

Ngoài ra, lưu ý rằng, ở đây chúng tôi không muốn đọc tất cả các dòng vào danh sách danh sách và sau đó lặp lại nó, bởi vì đó sẽ không phải là một giải pháp hiệu quả cho tệp CSV lớn, tức là tệp có kích thước tính bằng GBS. Chúng tôi đang tìm kiếm các giải pháp trong đó chúng tôi đọc và xử lý chỉ một dòng tại một thời điểm trong khi lặp qua tất cả các hàng CSV, do đó, bộ nhớ tối thiểu được sử dụng.

Hãy để xem cách làm điều này,

Quảng cáo

Python có mô -đun CSV, cung cấp hai lớp khác nhau để đọc nội dung của tệp CSV, tức là CSV.Reader và CSV.DicTreader. Hãy để thảo luận và sử dụng từng cái một để đọc từng dòng tệp CSV, từng dòng,

Đọc từng dòng tệp CSV bằng CSV.Reader

Với đối tượng lớp đọc mô -đun CSV, chúng tôi có thể lặp lại các dòng của tệp CSV dưới dạng danh sách các giá trị, trong đó mỗi giá trị trong danh sách là giá trị ô. Hãy để hiểu với một ví dụ,

from csv import reader

# open file in read mode
with open('students.csv', 'r') as read_obj:
    # pass the file object to reader() to get the reader object
    csv_reader = reader(read_obj)
    # Iterate over each row in the csv using reader object
    for row in csv_reader:
        # row variable is a list that represents a row in csv
        print(row)

Đầu ra:

['Id', 'Name', 'Course', 'City', 'Session']
['21', 'Mark', 'Python', 'London', 'Morning']
['22', 'John', 'Python', 'Tokyo', 'Evening']
['23', 'Sam', 'Python', 'Paris', 'Morning']
['32', 'Shaun', 'Java', 'Tokyo', 'Morning']

Nó lặp lại trên tất cả các hàng của tập tin sinh viên.csv. Đối với mỗi hàng, nó lấy nội dung của hàng đó dưới dạng danh sách và in danh sách đó.

Nó hoạt động như thế nào?

Nó thực hiện các bước sau,

  1. Mở tệp ‘sinh viên.csv, trong chế độ đọc và tạo đối tượng tệp.
  2. Tạo một đối tượng đầu đọc (iterator) bằng cách chuyển đối tượng tệp trong hàm csv.Reader ().
  3. Bây giờ một khi chúng ta có đối tượng đầu đọc này, đó là một trình lặp, sau đó sử dụng trình lặp này với vòng lặp để đọc các hàng riêng lẻ của CSV làm danh sách các giá trị. Trong đó mỗi giá trị trong danh sách đại diện cho một ô riêng lẻ.

Bằng cách này, chỉ có một dòng trong bộ nhớ tại một thời điểm trong khi lặp qua tệp CSV, điều này làm cho nó trở thành một giải pháp hiệu quả bộ nhớ.

Trong ví dụ trước, chúng tôi đã lặp lại tất cả các hàng của tệp CSV bao gồm cả tiêu đề. Nhưng giả sử chúng tôi muốn bỏ qua tiêu đề và lặp qua các hàng còn lại của tệp CSV. Hãy để xem cách làm điều đó,
Let’s see how to do that,

from csv import reader

# skip first line i.e. read header first and then iterate over each row od csv as a list
with open('students.csv', 'r') as read_obj:
    csv_reader = reader(read_obj)
    header = next(csv_reader)
    # Check file as empty
    if header != None:
        # Iterate over each row after the header in the csv
        for row in csv_reader:
            # row variable is a list that represents a row in csv
            print(row)

Đầu ra:

['21', 'Mark', 'Python', 'London', 'Morning']
['22', 'John', 'Python', 'Tokyo', 'Evening']
['23', 'Sam', 'Python', 'Paris', 'Morning']
['32', 'Shaun', 'Java', 'Tokyo', 'Morning']
Header was: 
['Id', 'Name', 'Course', 'City', 'Session']

['Id', 'Name', 'Course', 'City', 'Session']
['21', 'Mark', 'Python', 'London', 'Morning']
['22', 'John', 'Python', 'Tokyo', 'Evening']
['23', 'Sam', 'Python', 'Paris', 'Morning']
['32', 'Shaun', 'Java', 'Tokyo', 'Morning']

Nó hoạt động như thế nào?

Nó thực hiện các bước sau,

Mở tệp ‘sinh viên.csv, trong chế độ đọc và tạo đối tượng tệp.

Tạo một đối tượng đầu đọc (iterator) bằng cách chuyển đối tượng tệp trong hàm csv.Reader ().
for each row a dictionary is returned, which contains the pair of column names and cell values for that row.
Let’s understand with an example,

from csv import DictReader

# open file in read mode
with open('students.csv', 'r') as read_obj:
    # pass the file object to DictReader() to get the DictReader object
    csv_dict_reader = DictReader(read_obj)
    # iterate over each line as a ordered dictionary
    for row in csv_dict_reader:
        # row variable is a dictionary that represents a row in csv
        print(row)

Đầu ra:

{'Id': '21', 'Name': 'Mark', 'Course': 'Python', 'City': 'London', 'Session': 'Morning'}
{'Id': '22', 'Name': 'John', 'Course': 'Python', 'City': 'Tokyo', 'Session': 'Evening'}
{'Id': '23', 'Name': 'Sam', 'Course': 'Python', 'City': 'Paris', 'Session': 'Morning'}
{'Id': '32', 'Name': 'Shaun', 'Course': 'Java', 'City': 'Tokyo', 'Session': 'Morning'}

['Id', 'Name', 'Course', 'City', 'Session']
['21', 'Mark', 'Python', 'London', 'Morning']
['22', 'John', 'Python', 'Tokyo', 'Evening']
['23', 'Sam', 'Python', 'Paris', 'Morning']
['32', 'Shaun', 'Java', 'Tokyo', 'Morning']

Nó hoạt động như thế nào?

Nó thực hiện các bước sau,

  1. Mở tệp ‘sinh viên.csv, trong chế độ đọc và tạo đối tượng tệp.
  2. Tạo một đối tượng đầu đọc (iterator) bằng cách chuyển đối tượng tệp trong hàm csv.Reader ().
  3. Bây giờ một khi chúng ta có đối tượng đầu đọc này, đó là một trình lặp, sau đó sử dụng trình lặp này với vòng lặp để đọc các hàng riêng lẻ của CSV làm danh sách các giá trị. Trong đó mỗi giá trị trong danh sách đại diện cho một ô riêng lẻ.

Bằng cách này, chỉ có một dòng trong bộ nhớ tại một thời điểm trong khi lặp qua tệp CSV, điều này làm cho nó trở thành một giải pháp hiệu quả bộ nhớ.

Trong ví dụ trước, chúng tôi đã lặp lại tất cả các hàng của tệp CSV bao gồm cả tiêu đề. Nhưng giả sử chúng tôi muốn bỏ qua tiêu đề và lặp qua các hàng còn lại của tệp CSV. Hãy để xem cách làm điều đó,

Nó đã bỏ qua hàng tiêu đề của tệp CSV và lặp lại trên tất cả các hàng còn lại của tệp sinh viên.csv. Đối với mỗi hàng, nó lấy nội dung của hàng đó dưới dạng danh sách và in danh sách đó. Trong lần lưu ban đầu, hàng tiêu đề trong một biến riêng biệt và được in vào cuối.
let’s see how to use it,

from csv import DictReader

# open file in read mode
with open('students.csv', 'r') as read_obj:
    # pass the file object to DictReader() to get the DictReader object
    csv_dict_reader = DictReader(read_obj)
    # get column names from a csv file
    column_names = csv_dict_reader.fieldnames
    print(column_names)

Đầu ra:

['Id', 'Name', 'Course', 'City', 'Session']

['Id', 'Name', 'Course', 'City', 'Session'] ['21', 'Mark', 'Python', 'London', 'Morning'] ['22', 'John', 'Python', 'Tokyo', 'Evening'] ['23', 'Sam', 'Python', 'Paris', 'Morning'] ['32', 'Shaun', 'Java', 'Tokyo', 'Morning']

Nó lặp lại trên tất cả các hàng của tập tin sinh viên.csv. Đối với mỗi hàng, nó lấy nội dung của hàng đó dưới dạng danh sách và in danh sách đó.

Nó hoạt động như thế nào?

from csv import DictReader

# iterate over each line as a ordered dictionary and print only few column by column name
with open('students.csv', 'r') as read_obj:
    csv_dict_reader = DictReader(read_obj)
    for row in csv_dict_reader:
        print(row['Id'], row['Name'])

Đầu ra:

from csv import reader

# open file in read mode
with open('students.csv', 'r') as read_obj:
    # pass the file object to reader() to get the reader object
    csv_reader = reader(read_obj)
    # Iterate over each row in the csv using reader object
    for row in csv_reader:
        # row variable is a list that represents a row in csv
        print(row)
0

['Id', 'Name', 'Course', 'City', 'Session']
['21', 'Mark', 'Python', 'London', 'Morning']
['22', 'John', 'Python', 'Tokyo', 'Evening']
['23', 'Sam', 'Python', 'Paris', 'Morning']
['32', 'Shaun', 'Java', 'Tokyo', 'Morning']

Nó lặp lại trên tất cả các hàng của tập tin sinh viên.csv. Đối với mỗi hàng, nó lấy nội dung của hàng đó dưới dạng danh sách và in danh sách đó.

Nó hoạt động như thế nào?

from csv import reader

# open file in read mode
with open('students.csv', 'r') as read_obj:
    # pass the file object to reader() to get the reader object
    csv_reader = reader(read_obj)
    # Iterate over each row in the csv using reader object
    for row in csv_reader:
        # row variable is a list that represents a row in csv
        print(row)
1

Đầu ra:

from csv import reader

# open file in read mode
with open('students.csv', 'r') as read_obj:
    # pass the file object to reader() to get the reader object
    csv_reader = reader(read_obj)
    # Iterate over each row in the csv using reader object
    for row in csv_reader:
        # row variable is a list that represents a row in csv
        print(row)
2

Với CSV.Reader, mỗi hàng tệp CSV được tìm nạp dưới dạng danh sách các giá trị, trong đó mỗi giá trị đại diện cho một giá trị cột. Vì vậy, chọn cột thứ 2 & 3 cho mỗi hàng, chọn các phần tử tại INDEX 1 và 2 từ danh sách.

Ví dụ hoàn chỉnh như sau,

from csv import reader

# open file in read mode
with open('students.csv', 'r') as read_obj:
    # pass the file object to reader() to get the reader object
    csv_reader = reader(read_obj)
    # Iterate over each row in the csv using reader object
    for row in csv_reader:
        # row variable is a list that represents a row in csv
        print(row)
3

Output:

from csv import reader

# open file in read mode
with open('students.csv', 'r') as read_obj:
    # pass the file object to reader() to get the reader object
    csv_reader = reader(read_obj)
    # Iterate over each row in the csv using reader object
    for row in csv_reader:
        # row variable is a list that represents a row in csv
        print(row)
4

Làm cách nào để đọc một tệp CSV theo từng dòng trong Python?

Sử dụng độc giả..
Bước 1: Để đọc các hàng trong Python, trước tiên, chúng ta cần tải tệp CSV trong một đối tượng. Vì vậy, để tải tệp CSV vào một đối tượng sử dụng phương thức Open () ..
Bước 2: Tạo đối tượng đầu đọc bằng cách chuyển đối tượng tệp được tạo ở trên cho hàm đầu đọc ..
Bước 3: Sử dụng cho vòng lặp trên đối tượng đầu đọc để có được mỗi hàng ..

Làm cách nào để đọc một hàng tệp CSV theo hàng trong Python bằng Pandas?

Đọc tệp CSV..
Tải CSV vào DataFrame: Nhập Pandas dưới dạng PD. df = pd.read_csv ('data.csv') ....
In DataFrame mà không cần phương thức TO_STRING (): Nhập gấu trúc dưới dạng pd. ....
Kiểm tra số lượng các hàng được trả lại tối đa: nhập pandas dưới dạng PD. ....
Tăng số lượng hàng tối đa để hiển thị toàn bộ DataFrame: Nhập Pandas dưới dạng PD ..

Làm cách nào để đọc tệp CSV trong dòng thứ hai trong Python?

Ví dụ: Đọc tệp văn bản từ dòng 2 bằng islice () islice () có ba đối số. Đối số đầu tiên là tệp để đọc dữ liệu, thứ hai là vị trí từ đó việc đọc tệp sẽ bắt đầu và đối số thứ ba không có gì đại diện cho bước.

Làm cách nào để trích xuất một hàng từ tệp CSV trong Python?

Bước 1: Để đọc các hàng trong Python, trước tiên, chúng ta cần tải tệp CSV trong một đối tượng.Vì vậy, để tải tệp CSV vào một đối tượng sử dụng phương thức Open ().Bước 2: Tạo một đối tượng đầu đọc bằng cách chuyển đối tượng tệp được tạo ở trên cho hàm đầu đọc.Bước 3: Sử dụng cho vòng lặp trên đối tượng đầu đọc để có được mỗi hàng.