File CSV (comma separated values) là một trong những file phẳng phổ biến nhất để lưu trữ và chia sẻ dữ liệu cross-platform. Các cột được phân cách bằng dấu phẩy và có hàng tiêu đề tùy chọn chỉ tên cột. Python có thể đọc file CSV bằng nhiều module. Trong bài viết này, xem cách thư viện CSV trong Python dùng để đọc và ghi file CSV. Cũng xem thư viện pandas để đọc file CSV.
Đọc file CSV dùng module csv
Có thể lấy file CSV từ (https://www.guru99.com/python-csv.html)
Ví dụ
import csv
with open('C:\\iris.csv', 'rt') as file:
csv_rows = csv.reader(file)
for row in csv_rows:
print(row)
Kết quả
Chạy đoạn code trên cho kết quả sau:
['sepal.length', 'sepal.width', 'petal.length', 'petal.width', 'variety'] ['5.1', '3.5', '1.4', '.2', 'Setosa'] ['4.9', '3', '1.4', '.2', 'Setosa'] ['4.7', '3.2', '1.3', '.2', 'Setosa'] ['4.6', '3.1', '1.5', '.2', 'Setosa'] ['5', '3.6', '1.4', '.2', 'Setosa'] ['5.4', '3.9', '1.7', '.4', 'Setosa'] ['4.6', '3.4', '1.4', '.3', 'Setosa'] ............
Đọc file CSV dùng Pandas
Thư viện Pandas cũng có thể đọc file CSV. Nó có phương thức read_csv áp dụng trực tiếp truyền đường dẫn và tên file. Sau khi đọc, nó thành dataset và ta có thể in các phần khác nhau của dataset theo yêu cầu.
Ví dụ
import pandas as pd
datainput = pd.read_csv('C:\\iris.csv')
print("Giá trị dataset cho trước : \n", datainput)
# Kích thước dataset
print("\nKích thước dataset là :\n", datainput.shape)
# In vài hàng từ dataset
print("\n In vài hàng từ dataset :\n", datainput[0:6])
Kết quả
Chạy đoạn code trên cho kết quả sau:
Given dataset values : sepal.length sepal.width petal.length petal.width variety 0 5.1 3.5 1.4 0.2 Setosa 1 4.9 3.0 1.4 0.2 Setosa 2 4.7 3.2 1.3 0.2 Setosa 3 4.6 3.1 1.5 0.2 Setosa 4 5.0 3.6 1.4 0.2 Setosa ... The size of the dataset is : (150, 5) printing few rows from the dataset : sepal.length sepal.width petal.length petal.width variety 0 5.1 3.5 1.4 0.2 Setosa 1 4.9 3.0 1.4 0.2 Setosa 2 4.7 3.2 1.3 0.2 Setosa 3 4.6 3.1 1.5 0.2 Setosa 4 5.0 3.6 1.4 0.2 Setosa 5 5.4 3.9 1.7 0.4 Setosa
Ghi file CSV dùng module csv
Để tạo file CSV, dùng list Python. Khai báo dataset chứa mỗi hàng là list và tất cả hàng là sublist trong một list lớn. Cũng tạo dataset khác chỉ đại diện cho hàng tiêu đề. Sau đó dùng các phương thức như writerow() và csv.writer để ghi file ra hệ thống cục bộ.
Ví dụ
import csv
data = ["Month", "1958", "1959", "1960"]
x = [
["JAN", 340, 360, 417],
["FEB", 318, 342, 391],
["MAR", 362, 406, 419],
["APR", 348, 396, 461],
["MAY", 363, 420, 472],
["JUN", 435, 472, 535],
["JUL", 491, 548, 622],
["AUG", 505, 559, 606],
["SEP", 404, 463, 508],
["OCT", 359, 407, 461],
["NOV", 310, 362, 390],
["DEC", 337, 405, 432],
]
y = "C:\\years.csv"
with open(y, 'w') as work:
z = csv.writer(work)
z.writerow(data)
z.writerows(x)
Kết quả
Chạy đoạn code trên cho kết quả sau:
Month,1958,1959,1960 JAN,340,360,417 FEB,318,342,391 MAR,362,406,419 APR,348,396,461 MAY,363,420,472 JUN,435,472,535 JUL,491,548,622 AUG,505,559,606 SEP,404,463,508 OCT,359,407,461 NOV,310,362,390 DEC,337,405,432
Ghi file CSV dùng pandas
Dùng pandas, tạo DataFrame chứa hàng và tiêu đề hàng. Sau đó dùng to_csv với tham số tên file và đường dẫn để ghi dữ liệu ra file CSV.
Ví dụ
from pandas import DataFrame
C = {'Month': ['JAN', 'FEB', 'MAR'],
'1958': ['345', '435', '545'],
'1959': ['377', '135', '985'],
'1960': ['498', '354', '765']}
df = DataFrame(C, columns=["Month", "1958", "1959", "1960"])
export_csv = df.to_csv(r'C:\years_p.csv', index=None, header=True)
print(df)
Kết quả
Chạy đoạn code trên cho kết quả sau:
Month 1958 1959 1960 0 JAN 345 377 498 1 FEB 435 135 354 2 MAR 545 985 765