Python CSV: Membaca dan Menulis file CSV

Dalam tutorial ini, kita akan belajar cara membaca dan menulis ke dalam file CSV dengan Python dengan bantuan contoh.

Format CSV (Comma Separated Values) adalah salah satu cara paling sederhana dan umum untuk menyimpan data tabel. Untuk merepresentasikan file CSV, file tersebut harus disimpan dengan ekstensi file .csv .

Mari kita ambil contoh:

Jika Anda membuka file CSV di atas menggunakan editor teks seperti teks sublim, Anda akan melihat:

 SN, Nama, Kota 1, Michael, New Jersey 2, Jack, California 

Seperti yang Anda lihat, elemen file CSV dipisahkan dengan koma. Di sini, ,adalah pembatas.

Anda dapat memiliki satu karakter sebagai pembatas sesuai kebutuhan Anda.

Catatan: Modul csv juga dapat digunakan untuk ekstensi file lain (seperti: .txt ) selama isinya dalam struktur yang benar.

Bekerja dengan file CSV dengan Python

Meskipun kami dapat menggunakan open()fungsi bawaan untuk bekerja dengan file CSV dengan Python, ada csvmodul khusus yang membuat bekerja dengan file CSV jauh lebih mudah.

Sebelum kita dapat menggunakan metode ke csvmodul, kita perlu mengimpor modul terlebih dahulu menggunakan:

 import csv 

Membaca file CSV Menggunakan csv.reader ()

Untuk membaca file CSV dengan Python, kita bisa menggunakan csv.reader()fungsinya. Misalkan kita memiliki csvfile bernama people.csv di direktori saat ini dengan entri berikut.

Nama Usia Profesi
Mendongkrak 23 Dokter
Tukang giling 22 Insinyur

Mari baca file ini menggunakan csv.reader():

Contoh 1: Membaca CSV yang Memiliki Pembatas Koma

 import csv with open('people.csv', 'r') as file: reader = csv.reader(file) for row in reader: print(row) 

Keluaran

 ('Nama', 'Usia', 'Profesi') ('Jack', '23', 'Dokter') ('Miller', '22', 'Insinyur') 

Di sini, kami telah membuka file people.csv dalam mode membaca menggunakan:

 with open('people.csv', 'r') as file:… 

Untuk mempelajari lebih lanjut tentang membuka file dengan Python, kunjungi: Python File Input / Output

Kemudian, csv.reader()digunakan untuk membaca file, yang mengembalikan readerobjek yang dapat diulang .

The readerobjek kemudian mengulangi menggunakan forloop untuk mencetak isi dari setiap baris.

Dalam contoh di atas, kami menggunakan csv.reader()fungsi dalam mode default untuk file CSV yang memiliki pembatas koma.

Namun, fungsinya jauh lebih bisa disesuaikan.

Misalkan file CSV kita menggunakan tab sebagai pembatas. Untuk membaca file seperti itu, kita dapat mengirimkan parameter opsional ke csv.reader()fungsi tersebut. Mari kita ambil contoh.

Contoh 2: Membaca file CSV yang Memiliki Tab Delimiter

 import csv with open('people.csv', 'r',) as file: reader = csv.reader(file, delimiter = ' ') for row in reader: print(row) 

Perhatikan parameter opsional delimiter = ' 'pada contoh di atas.

Sintaks lengkap dari csv.reader()fungsinya adalah:

 csv.reader(csvfile, dialect='excel', **optional_parameters) 

Seperti yang Anda lihat dari sintaks, kita juga bisa meneruskan parameter dialek ke csv.reader()fungsi. The dialectparameter memungkinkan kita untuk membuat fungsi yang lebih fleksibel. Untuk mempelajari lebih lanjut, kunjungi: Membaca file CSV dengan Python.

Menulis file CSV Menggunakan csv.writer ()

Untuk menulis ke file CSV dengan Python, kita dapat menggunakan csv.writer()fungsi tersebut.

The csv.writer()mengembalikan fungsi writerobjek yang mengubah data pengguna ke dalam string dibatasi. String ini nantinya dapat digunakan untuk menulis ke file CSV menggunakan writerow()fungsi tersebut. Mari kita ambil contoh.

Contoh 3: Menulis ke file CSV

 import csv with open('protagonist.csv', 'w', newline='') as file: writer = csv.writer(file) writer.writerow(("SN", "Movie", "Protagonist")) writer.writerow((1, "Lord of the Rings", "Frodo Baggins")) writer.writerow((2, "Harry Potter", "Harry Potter")) 

Ketika kami menjalankan program di atas, file protagonist.csv dibuat dengan konten berikut:

 SN, Film, Protagonis 1, Lord of the Rings, Frodo Baggins 2, Harry Potter, Harry Potter 

Dalam program di atas, kami telah membuka file dalam mode penulisan.

Kemudian, kami melewati setiap baris sebagai daftar. Daftar ini diubah menjadi string yang dipisahkan dan ditulis ke dalam file CSV.

Contoh 4: Menulis beberapa baris dengan writerows ()

Jika kita perlu menulis konten dari daftar 2 dimensi ke file CSV, berikut cara melakukannya.

 import csv csv_rowlist = (("SN", "Movie", "Protagonist"), (1, "Lord of the Rings", "Frodo Baggins"), (2, "Harry Potter", "Harry Potter")) with open('protagonist.csv', 'w') as file: writer = csv.writer(file) writer.writerows(csv_rowlist) 

The output of the program is the same as in Example 3.

Here, our 2-dimensional list is passed to the writer.writerows() method to write the content of the list to the CSV file.

Example 5: Writing to a CSV File with Tab Delimiter

 import csv with open('protagonist.csv', 'w') as file: writer = csv.writer(file, delimiter = ' ') writer.writerow(("SN", "Movie", "Protagonist")) writer.writerow((1, "Lord of the Rings", "Frodo Baggins")) writer.writerow((2, "Harry Potter", "Harry Potter")) 

Notice the optional parameter delimiter = ' ' in the csv.writer() function.

The complete syntax of the csv.writer() function is:

 csv.writer(csvfile, dialect='excel', **optional_parameters) 

Similar to csv.reader(), you can also pass dialect parameter the csv.writer() function to make the function much more customizable. To learn more, visit: Writing CSV files in Python

Python csv.DictReader() Class

The objects of a csv.DictReader() class can be used to read a CSV file as a dictionary.

Example 6: Python csv.DictReader()

Suppose we have the same file people.csv as in Example 1.

Name Age Profession
Jack 23 Doctor
Miller 22 Engineer

Let's see how csv.DictReader() can be used.

 import csv with open("people.csv", 'r') as file: csv_file = csv.DictReader(file) for row in csv_file: print(dict(row)) 

Output

 ('Name': 'Jack', ' Age': ' 23', ' Profession': ' Doctor') ('Name': 'Miller', ' Age': ' 22', ' Profession': ' Engineer') 

As we can see, the entries of the first row are the dictionary keys. And, the entries in the other rows are the dictionary values.

Here, csv_file is a csv.DictReader() object. The object can be iterated over using a for loop. The csv.DictReader() returned an OrderedDict type for each row. That's why we used dict() to convert each row to a dictionary.

Notice that, we have explicitly used the dict() method to create dictionaries inside the for loop.

 print(dict(row)) 

Note: Starting from Python 3.8, csv.DictReader() returns a dictionary for each row, and we do not need to use dict() explicitly.

The full syntax of the csv.DictReader() class is:

 csv.DictReader(file, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds) 

To learn more about it in detail, visit: Python csv.DictReader() class

Python csv.DictWriter() Class

The objects of csv.DictWriter() class can be used to write to a CSV file from a Python dictionary.

The minimal syntax of the csv.DictWriter() class is:

 csv.DictWriter(file, fieldnames) 

Here,

  • file - CSV file where we want to write to
  • fieldnames - a list object which should contain the column headers specifying the order in which data should be written in the CSV file

Example 7: Python csv.DictWriter()

 import csv with open('players.csv', 'w', newline='') as file: fieldnames = ('player_name', 'fide_rating') writer = csv.DictWriter(file, fieldnames=fieldnames) writer.writeheader() writer.writerow(('player_name': 'Magnus Carlsen', 'fide_rating': 2870)) writer.writerow(('player_name': 'Fabiano Caruana', 'fide_rating': 2822)) writer.writerow(('player_name': 'Ding Liren', 'fide_rating': 2801)) 

The program creates a players.csv file with the following entries:

 player_name,fide_rating Magnus Carlsen,2870 Fabiano Caruana,2822 Ding Liren,2801 

The full syntax of the csv.DictWriter() class is:

 csv.DictWriter(f, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds) 

To learn more about it in detail, visit: Python csv.DictWriter() class

Using the Pandas library to Handle CSV files

Pandas is a popular data science library in Python for data manipulation and analysis. If we are working with huge chunks of data, it's better to use pandas to handle CSV files for ease and efficiency.

Before we can use pandas, we need to install it. To learn more, visit: How to install Pandas?

Once we install it, we can import Pandas as:

 import pandas as pd 

To read the CSV file using pandas, we can use the read_csv() function.

 import pandas as pd pd.read_csv("people.csv") 

Di sini, program membaca people.csv dari direktori saat ini.

Untuk menulis ke file CSV, kita perlu memanggil to_csv()fungsi DataFrame.

 import pandas as pd # creating a data frame df = pd.DataFrame((('Jack', 24), ('Rose', 22)), columns = ('Name', 'Age')) # writing data frame to a CSV file df.to_csv('person.csv') 

Di sini, kami telah membuat DataFrame menggunakan pd.DataFrame()metode. Kemudian, to_csv()fungsi dari objek ini dipanggil, untuk menulis ke person.csv .

Untuk mempelajari lebih lanjut, kunjungi:

  • Python pandas.read_csv (situs resmi)
  • Python pandas.pandas.DataFrame.to_csv (situs resmi)

Artikel yang menarik...