Hướng dẫn how do i read a row data from a csv file in python? - làm cách nào để đọc dữ liệu hàng từ tệp csv trong python?

Mô -đun

a,b,c
1,2,3
4,5,6
7,8,9
0 xử lý các tệp CSV theo hàng. Nếu bạn muốn xử lý nó theo cột,
a,b,c
1,2,3
4,5,6
7,8,9
1 là một giải pháp tốt.

Bên cạnh đó, có 2 cách để có được tất cả (hoặc cụ thể) với mã Python đơn giản thuần túy.

1. CSV.Dictreader

with open('demo.csv') as file:
    data = {}
    for row in csv.DictReader(file):
        for key, value in row.items():
            if key not in data:
                data[key] = []
            data[key].append(value)

Nó rất dễ hiểu.

2. CSV.Reader với zip

with open('demo.csv') as file:
    data = {values[0]: values[1:] for values in zip(*csv.reader(file))}

Điều này không rõ ràng lắm, nhưng hiệu quả.

a,b,c
1,2,3
4,5,6
7,8,9
2 Chuyển đổi
a,b,c
1,2,3
4,5,6
7,8,9
3, trong khi
a,b,c
1,2,3
4,5,6
7,8,9
4,
a,b,c
1,2,3
4,5,6
7,8,9
5,
a,b,c
1,2,3
4,5,6
7,8,9
6 là danh sách.
a,b,c
1,2,3
4,5,6
7,8,9
7 Tạo
a,b,c
1,2,3
4,5,6
7,8,9
3 cho
a,b,c
1,2,3
4,5,6
7,8,9
9, với tên cột.

Kết quả demo

Nội dung của

>>> print(data)
{'c': ['3', '6', '9'], 'b': ['2', '5', '8'], 'a': ['1', '4', '7']}
0:

a,b,c
1,2,3
4,5,6
7,8,9

Kết quả của 1:

>>> print(data)
{'c': ['3', '6', '9'], 'b': ['2', '5', '8'], 'a': ['1', '4', '7']}

Kết quả của 2:

>>> print(data)
{'c': ('3', '6', '9'), 'b': ('2', '5', '8'), 'a': ('1', '4', '7')}

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']

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,

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,

with open('demo.csv') as file:
    data = {values[0]: values[1:] for values in zip(*csv.reader(file))}
0

Đầu ra:

with open('demo.csv') as file:
    data = {values[0]: values[1:] for values in zip(*csv.reader(file))}
1

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ẻ.

Nó là một giải pháp hiệu quả bộ nhớ, bởi vì tại một thời điểm chỉ có một dòng trong bộ nhớ.

Nhận tên cột từ tiêu đề trong tệp CSV

Lớp DicTreader có chức năng thành viên trả về tên cột của tệp CSV làm danh sách. Hãy để xem cách sử dụng nó,
let’s see how to use it,

with open('demo.csv') as file:
    data = {values[0]: values[1:] for values in zip(*csv.reader(file))}
2

Đầu ra:

with open('demo.csv') as file:
    data = {values[0]: values[1:] for values in zip(*csv.reader(file))}
3

Đọc các cột cụ thể từ tệp CSV trong khi lặp lại từng dòng

Đọc các cột cụ thể (theo tên cột) trong tệp CSV trong khi lặp lại từng hàng

Lặp lại trên tất cả các hàng của tập tin học sinh.csv từng dòng, nhưng chỉ in hai cột cho mỗi hàng,

with open('demo.csv') as file:
    data = {values[0]: values[1:] for values in zip(*csv.reader(file))}
4

Đầu ra:

with open('demo.csv') as file:
    data = {values[0]: values[1:] for values in zip(*csv.reader(file))}
5

Đọc các cột cụ thể từ tệp CSV trong khi lặp lại từng dòng

Đọc các cột cụ thể (theo tên cột) trong tệp CSV trong khi lặp lại từng hàng

Lặp lại trên tất cả các hàng của tập tin học sinh.csv từng dòng, nhưng chỉ in hai cột cho mỗi hàng,

with open('demo.csv') as file:
    data = {values[0]: values[1:] for values in zip(*csv.reader(file))}
6

Đầu ra:

with open('demo.csv') as file:
    data = {values[0]: values[1:] for values in zip(*csv.reader(file))}
7

Đọc các cột cụ thể từ tệp CSV trong khi lặp lại từng dòng

Đọc các cột cụ thể (theo tên cột) trong tệp CSV trong khi lặp lại từng hàng

with open('demo.csv') as file:
    data = {values[0]: values[1:] for values in zip(*csv.reader(file))}
8

Output:

with open('demo.csv') as file:
    data = {values[0]: values[1:] for values in zip(*csv.reader(file))}
9

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 để trích xuất các hàng và cột từ tệp CSV trong Python?

Lập danh sách các cột phải được trích xuất ..
Sử dụng phương thức read_csv () để trích xuất tệp CSV vào khung dữ liệu ..
In dữ liệu bị xáo trộn ..
Biểu đồ khung dữ liệu bằng phương thức Plot () ..
Để hiển thị hình, sử dụng phương thức show () ..

Làm cách nào để bạn đọc một cột dữ liệu trong tệp CSV trong Python?

Python3.Trong phương thức này, chúng tôi sẽ nhập thư viện CSV và mở tệp ở chế độ đọc, sau đó chúng tôi sẽ sử dụng hàm dictreader () để đọc dữ liệu của tệp CSV.Hàm này giống như một người đọc thông thường, nhưng nó ánh xạ thông tin đến một từ điển có các khóa được đưa ra bởi các tên cột và tất cả các giá trị dưới dạng các khóa.use the DictReader() function to read the data of the CSV file. This function is like a regular reader, but it maps the information to a dictionary whose keys are given by the column names and all the values as keys.

Làm thế nào tôi có thể đọc một cột cụ thể của một hàng cụ thể của tệp CSV trong Java?

-> Bạn có một chuỗi, tức là hàng từ tệp sau đó bạn chỉ cần sử dụng phương thức Split (,,) để phân chia hàng và tách từng trường.-> bây giờ chức năng split () sẽ trả về một mảng sẽ là dữ liệu khôn ngoan của cột ...
Đọc dòng đầu tiên của tệp ..
Bắt đầu vòng lặp để đọc phần còn lại của tệp ..
tiến hành như bình thường ..