Lompat ke konten Lompat ke sidebar Lompat ke footer

Membaca Berkas CSV dalam Python

Berkas CSV merupakan salah satu bentuk penyimpanan data yang banyak digunakan untuk menyimpan informasi dalam bentuk tabel. Data pada berkas CSV tersusun dalam baris dan kolom sehingga mudah digunakan untuk menyimpan daftar siswa, nilai, barang, pelanggan, transaksi, dan berbagai jenis data lainnya.

Sebelum mempelajari materi tentang cara Membaca Berkas CSV dalam Python, terlebih dahulu pelajari materi tentang: Fungsi Utama main dalam Python, Direktori dalam Python, dan Berkas CSV dalam Python.

Python menyediakan modul `csv` yang dapat digunakan untuk membaca data dari berkas CSV. Dengan modul tersebut, data yang tersimpan dalam berkas dapat dibaca baris demi baris, diambil berdasarkan kolom tertentu, dicari berdasarkan kondisi, hingga diolah menjadi informasi baru.

Kemampuan membaca CSV menjadi dasar penting sebelum mempelajari pengolahan data yang lebih kompleks menggunakan Python.

Pengertian Berkas CSV

CSV merupakan singkatan dari Comma-Separated Values. Secara sederhana, CSV adalah berkas teks yang menyimpan data dengan tanda pemisah antarkolom.

Contoh berkas `siswa.csv`:
Nama,  Umur, Kelas
Andi,  16,   10A
Budi,  17,   11B
Citra, 16,   10B
Dina,  17,   11A


Baris pertama biasanya berisi nama kolom. Baris berikutnya berisi data. Pada contoh tersebut terdapat tiga kolom:
  • Nama
  • Umur
  • Kelas

Data setiap siswa berada pada satu baris.

Alasan untuk Membaca CSV dengan Python

Membaca CSV menggunakan Python memungkinkan data yang tersimpan dalam tabel digunakan oleh program.

Contohnya:
  • Menghitung nilai siswa
  • Mencari data tertentu
  • Menghitung jumlah data
  • Menyaring data berdasarkan kondisi
  • Mengurutkan data
  • Membuat laporan
  • Mengubah data
  • Memindahkan data ke berkas lain

Dengan demikian, CSV dapat menjadi sumber data bagi sebuah program Python.

Mengimpor Modul csv

Python menyediakan modul bawaan bernama `csv`. Untuk menggunakannya, tuliskan:
import csv

Setelah itu, fungsi dan kelas yang tersedia pada modul tersebut dapat digunakan.

Membuka Berkas CSV

Berkas CSV dapat dibuka menggunakan fungsi `open()`.

Contoh:
import csv
file = open("siswa.csv", "r")


Huruf `"r"` menunjukkan mode membaca. Namun, cara yang lebih baik adalah menggunakan `with`.
import csv
with open("siswa.csv", "r") as file:
data = csv.reader(file)


Penggunaan `with` membantu memastikan berkas ditutup setelah selesai digunakan.

Membaca CSV dengan csv.reader()

Fungsi `csv.reader()` digunakan untuk membaca berkas CSV baris demi baris.

Contoh:
import csv
with open("siswa.csv", "r") as file:
data = csv.reader(file)
for baris in data:
print(baris)


Jika berkas berisi:
Nama,  Umur, Kelas
Andi,  16,   10A
Budi,  17,   11B
Citra, 16,   10B


hasilnya:
['Nama',  'Umur', 'Kelas' ]
['Andi',  '16',   '10A'   ]
['Budi',  '17',   '11B'   ]
['Citra', '16',   '10B'   ]


Setiap baris CSV dibaca sebagai sebuah daftar.

Mengakses Kolom Berdasarkan Indeks

Karena setiap baris berbentuk daftar, data dapat diakses berdasarkan indeks.

Contoh:
import csv
with open("siswa.csv", "r") as file:
data = csv.reader(file)
for baris in data:
print(baris[0])


Hasil:
Nama
Andi
Budi
Citra


Penjelasan:
  • Kolom pertama memiliki indeks `0`.
  • Kolom kedua memiliki indeks `1`.
  • Kolom ketiga memiliki indeks `2`.

Contoh mengambil nama dan kelas:
import csv
with open("siswa.csv", "r") as file:
data = csv.reader(file)
for baris in data:
print(baris[0], baris[2])


Hasil:
Nama  Kelas
Andi  10A
Budi  11B
Citra 10B


Melewati Baris Header

Dalam banyak berkas CSV, baris pertama digunakan sebagai nama kolom. Baris tersebut sering tidak perlu diproses sebagai data. Fungsi `next()` dapat digunakan untuk melewati baris pertama.
import csv
with open("siswa.csv", "r") as file:
data = csv.reader(file)
next(data)
for baris in data:
print(baris)


Hasil:
['Andi',  '16', '10A']
['Budi',  '17', '11B']
['Citra', '16', '10B']


Cara ini berguna ketika baris pertama hanya digunakan sebagai judul kolom.

Membaca CSV Menggunakan DictReader

Selain `csv.reader()`, Python menyediakan `csv.DictReader()`. Metode ini membaca setiap baris sebagai kamus.

Contoh:
import csv
with open("siswa.csv", "r") as file:
data = csv.DictReader(file)
for baris in data:
print(baris)


Hasilnya:
{'Nama': 'Andi',  'Umur': '16', 'Kelas': '10A'}
{'Nama': 'Budi',  'Umur': '17', 'Kelas': '11B'}
{'Nama': 'Citra', 'Umur': '16', 'Kelas': '10B'}


Cara ini membuat data lebih mudah dipahami karena setiap nilai dikaitkan dengan nama kolom.

Mengambil Data dengan Nama Kolom

Dengan `DictReader`, data dapat diambil berdasarkan nama kolom.

Contoh:
import csv
with open("siswa.csv", "r") as file:
data = csv.DictReader(file)
for baris in data:
print(baris["Nama"])


Hasil:
Andi
Budi
Citra


Untuk mengambil umur:
print(baris["Umur"])

Untuk mengambil kelas:
print(baris["Kelas"])

Cara ini lebih mudah dibaca dibandingkan penggunaan indeks.

Membaca Nama dan Kelas

Contoh program:
import csv
with open("siswa.csv", "r") as file:
data = csv.DictReader(file)
for baris in data:
nama = baris["Nama"]
kelas = baris["Kelas"]
print(nama, "-", kelas)


Hasil:
Andi  - 10A
Budi  - 11B
Citra - 10B


Membaca Data dengan Encoding UTF-8

Berkas CSV dapat berisi huruf atau karakter tertentu. Untuk mengurangi masalah pembacaan karakter, encoding dapat ditentukan.

Contoh:
import csv
with open("siswa.csv", "r", encoding="utf-8") as file:
data = csv.reader(file)
for baris in data:
print(baris)


Penggunaan `encoding="utf-8"` membantu membaca teks dengan karakter yang lebih beragam.

Menggunakan newline

Ketika membaca CSV, penggunaan `newline=""` juga dapat digunakan.
import csv
with open("siswa.csv", "r", newline="", encoding="utf-8") as file:
data = csv.reader(file)
for baris in data:
print(baris)


Penulisan seperti ini dapat digunakan sebagai pola yang konsisten ketika bekerja dengan berkas CSV.

Data CSV Dibaca sebagai Teks

Hal penting yang perlu diperhatikan adalah data yang dibaca dari CSV pada umumnya berupa teks.

Misalnya:
Nama,  Nilai
Andi,  80
Budi,  75
Citra, 90


Ketika membaca nilai:
import csv
with open("nilai.csv", "r") as file:
data = csv.DictReader(file)
for baris in data:
print(type(baris["Nilai"]))


Hasil:
<class 'str'>
<class 'str'>
<class 'str'>


Artinya nilai `80`, `75`, dan `90` masih berupa teks.

Mengubah Data Menjadi Bilangan

Jika data akan digunakan untuk perhitungan, ubah terlebih dahulu menjadi bilangan. Gunakan `int()` untuk bilangan bulat.
nilai = int(baris["Nilai"])

Contoh lengkap:
import csv
with open("nilai.csv", "r") as file:
data = csv.DictReader(file)
for baris in data:
nilai = int(baris["Nilai"])
print(nilai)


Sekarang nilai dapat digunakan dalam operasi matematika.

Menghitung Total Nilai

Data nilai dari CSV dapat digunakan untuk menghitung jumlah seluruh nilai.
import csv
total = 0
with open("nilai.csv", "r") as file:
data = csv.DictReader(file)
for baris in data:
total += int(baris["Nilai"])
print("Total nilai:", total)


Program membaca setiap baris dan menambahkan nilai ke variabel `total`.

Menghitung Rata-Rata Nilai

Rata-rata dapat dihitung dengan membagi total nilai dengan jumlah data.
import csv
total = 0
jumlah = 0
with open("nilai.csv", "r") as file:
data = csv.DictReader(file)
for baris in data:
total += int(baris["Nilai"])
jumlah += 1
rata_rata = total / jumlah
print("Rata-rata:", rata_rata)


Jika terdapat data:
Nama,  Nilai
Andi,  80
Budi,  75
Citra, 90


hasil rata-ratanya:
Rata-rata: 81.66666666666667

Mencari Nilai Tertinggi

Data CSV juga dapat digunakan untuk mencari nilai tertinggi.
import csv
nilai_tertinggi = 0
nama_tertinggi = ""
with open("nilai.csv", "r") as file:
data = csv.DictReader(file)
for baris in data:
nilai = int(baris["Nilai"])
if nilai > nilai_tertinggi:
nilai_tertinggi = nilai
nama_tertinggi = baris["Nama"]
print("Nilai tertinggi:", nilai_tertinggi)
print("Nama:", nama_tertinggi)


Program tersebut membandingkan setiap nilai yang ditemukan.

Mencari Nilai Terendah

Cara yang sama dapat digunakan untuk mencari nilai terendah.
import csv
nilai_terendah = None
nama_terendah = ""
with open("nilai.csv", "r") as file:
data = csv.DictReader(file)
for baris in data:
nilai = int(baris["Nilai"])
if nilai_terendah is None or nilai < nilai_terendah:
nilai_terendah = nilai
nama_terendah = baris["Nama"]
print("Nilai terendah:", nilai_terendah)
print("Nama:", nama_terendah)


Penggunaan `None` membuat program dapat menentukan nilai pertama sebagai nilai awal.

Menyaring Data CSV

Data dapat ditampilkan berdasarkan kondisi tertentu. Misalnya hanya menampilkan siswa yang mendapatkan nilai minimal 80.
import csv
with open("nilai.csv", "r") as file:
data = csv.DictReader(file)
for baris in data:
nilai = int(baris["Nilai"])
if nilai >= 80:
print(baris["Nama"], nilai)


Program tersebut hanya menampilkan data yang memenuhi kondisi.

Mencari Nama Tertentu

Pencarian data juga dapat dilakukan berdasarkan nama.
import csv
nama_dicari = "Andi"
with open("siswa.csv", "r") as file:
data = csv.DictReader(file)
for baris in data:
if baris["Nama"] == nama_dicari:
print("Data ditemukan")
print(baris)


Jika nama ditemukan, data siswa akan ditampilkan.

Menghitung Jumlah Data

Jumlah baris data dapat dihitung menggunakan variabel penghitung.
import csv
jumlah = 0
with open("siswa.csv", "r") as file:
data = csv.DictReader(file)
for baris in data:
jumlah += 1
print("Jumlah siswa:", jumlah)


Cara ini berguna untuk mengetahui jumlah data yang terdapat dalam CSV.

Menyimpan Data CSV ke dalam List

Data CSV dapat disimpan ke dalam daftar agar dapat diproses kembali setelah berkas ditutup.

Contoh:
import csv
data_siswa = []
with open("siswa.csv", "r") as file:
data = csv.DictReader(file)
for baris in data:
data_siswa.append(baris)
print(data_siswa)


Setelah proses tersebut selesai, `data_siswa` berisi seluruh data yang telah dibaca.

Menggunakan List Comprehension

Jika hanya membutuhkan bagian tertentu dari data, list comprehension dapat digunakan. Contoh mengambil seluruh nama:
import csv
with open("siswa.csv", "r") as file:
data = csv.DictReader(file)
nama = [baris["Nama"] for baris in data]
print(nama)


Hasil:
['Andi', 'Budi', 'Citra', 'Dina']

Cara tersebut dapat membuat kode lebih singkat.

Membaca CSV dengan Pemisah Titik Koma

Tidak semua berkas menggunakan koma sebagai pemisah.

Contoh:
Nama;  Umur; Kelas
Andi;  16;   10A
Budi;  17;   11B
Citra; 16;   10B


Untuk membacanya, tentukan `delimiter`.
import csv
with open("siswa.csv", "r") as file:
data = csv.reader(file, delimiter=";")
for baris in data:
print(baris)


Tanpa menentukan `delimiter`, data dapat terbaca sebagai satu kolom.

Membaca CSV dengan Kutipan

CSV dapat memiliki data yang mengandung koma.

Contoh:
Nama,Alamat
Andi,"Jalan Merdeka, Nomor 10"
Budi,"Jalan Diponegoro, Nomor 15"


Modul `csv` dapat membaca data tersebut dengan benar.
import csv
with open("siswa.csv", "r") as file:
data = csv.reader(file)
for baris in data:
print(baris)


Hasil:
['Nama', 'Alamat']
['Andi', 'Jalan Merdeka, Nomor 10']
['Budi', 'Jalan Diponegoro, Nomor 15']


Koma yang berada di dalam tanda kutip tidak dianggap sebagai pemisah kolom.

Menangani Berkas yang Tidak Ditemukan

Jika berkas tidak tersedia, Python dapat menghasilkan `FileNotFoundError`.

Contoh:
import csv
with open("data_tidak_ada.csv", "r") as file:
data = csv.reader(file)


Untuk menangani kesalahan tersebut, gunakan `try` dan `except`.
import csv
try:
with open("data.csv", "r") as file:
data = csv.reader(file)
for baris in data:
print(baris)
except FileNotFoundError:
print("Berkas tidak ditemukan")


Dengan cara tersebut, program tidak langsung berhenti ketika berkas tidak tersedia.

Membaca CSV dengan Nomor Baris

Terkadang setiap data perlu diberi nomor.
import csv
with open("siswa.csv", "r") as file:
data = csv.DictReader(file)
nomor = 1
for baris in data:
print(nomor, baris["Nama"])
nomor += 1


Hasil:
1 Andi
2 Budi
3 Citra
4 Dina


Cara ini berguna ketika data akan ditampilkan dalam bentuk daftar.

Membaca CSV dengan enumerate()

Nomor baris juga dapat dibuat menggunakan `enumerate()`.
import csv
with open("siswa.csv", "r") as file:
data = csv.DictReader(file)
for nomor, baris in enumerate(data, start=1):
print(nomor, baris["Nama"])


Hasilnya sama, tetapi kode menjadi lebih ringkas.


Perbedaan reader dan DictReader


Fitur

csv.reader()

csv.DictReader()

  • Bentuk data
  • Daftar
  • Kamus
  • Akses data
  • Berdasarkan indeks
  • Berdasarkan nama kolom
  • Contoh
  • baris[0]
  • baris["Nama"]
  • Cocok untuk
  • Data sederhana
  • Data bertabel dengan nama kolom

`csv.reader()` cocok digunakan ketika posisi kolom sudah diketahui.

Contoh:
print(baris[0])

Sedangkan `csv.DictReader()` lebih mudah digunakan ketika data memiliki nama kolom yang jelas.
print(baris["Nama"])

Perbedaan Membaca Baris dan Kolom

CSV sebenarnya dibaca berdasarkan baris. Setiap baris kemudian dapat diakses berdasarkan kolom.

Contoh:
Nama, Umur, Kelas
Andi, 16,   10A


Baris kedua:
Andi, 16, 10A

terdiri atas tiga nilai:
Andi
16
10A


Dengan `csv.reader()`:
baris[0]
baris[1]
baris[2]


Dengan `csv.DictReader()`:
baris["Nama"]
baris["Umur"]
baris["Kelas"]


Contoh Program Lengkap

Berikut contoh program sederhana untuk membaca data siswa dan menampilkan informasi yang lebih terstruktur.
import csv
try:
with open("siswa.csv", "r", encoding="utf-8") as file:
data = csv.DictReader(file)
jumlah = 0
for baris in data:
jumlah += 1
print("Nama :", baris["Nama"])
print("Umur :", baris["Umur"])
print("Kelas:", baris["Kelas"])
print()
print("Jumlah siswa:", jumlah)
except FileNotFoundError:
print("Berkas siswa.csv tidak ditemukan")


Program tersebut melakukan beberapa pekerjaan:
  1. Membuka berkas CSV.
  2. Membaca data menggunakan `DictReader`.
  3. Menampilkan nama, umur, dan kelas.
  4. Menghitung jumlah siswa.
  5. Menangani kesalahan jika berkas tidak ditemukan.

Contoh Program Pengolahan Nilai

Contoh berikut membaca nilai siswa dan menentukan status kelulusan berdasarkan nilai minimal 75.
import csv
with open("nilai.csv", "r", encoding="utf-8") as file:
data = csv.DictReader(file)
for baris in data:
nama = baris["Nama"]
nilai = int(baris["Nilai"])
if nilai >= 75:
status = "Lulus"
else:
status = "Belum lulus"
print(nama, "-", nilai, "-", status)


Jika berkas berisi:
Nama,  Nilai
Andi,  80
Budi,  70
Citra, 90
Dina,  65


hasilnya:
Andi -  80 - Lulus
Budi -  70 - Belum lulus
Citra - 90 - Lulus
Dina -  65 - Belum lulus


Alur Membaca Berkas CSV

Secara umum, langkah membaca CSV dapat diringkas menjadi:
Buka berkas

Baca menggunakan csv.reader()
atau csv.DictReader()

Periksa setiap baris

Ambil data yang diperlukan

Olah data

Tampilkan hasil


Pola tersebut dapat digunakan untuk berbagai jenis data.

Kesalahan yang Sering Terjadi

Berikut diberikan beberapa contoh kesalahan yang sering terjadi ketika melakukan proses Membaca Berkas CSV dalam Python.

Lupa Mengimpor Modul

Kode berikut akan menghasilkan kesalahan:
data = csv.reader(file)

jika `csv` belum diimpor.

Gunakan:
import csv

Salah Nama Berkas

Pastikan nama berkas sesuai dengan nama yang digunakan dalam program.
open("siswa.csv", "r")

Jika berkas bernama `data_siswa.csv`, kode tersebut tidak akan menemukan berkas yang dimaksud.

Salah Nama Kolom

Jika menggunakan:
baris["Nama"]

pastikan kolom memang bernama `Nama`. Perbedaan huruf besar dan kecil dapat menyebabkan kesalahan.

Lupa Mengubah Teks Menjadi Angka

Kode berikut:
total += baris["Nilai"]

dapat menghasilkan kesalahan jika `total` berupa bilangan.

Gunakan:
total += int(baris["Nilai"])

Salah Menentukan Delimiter

Jika data menggunakan `;`, tentukan:
csv.reader(file, delimiter=";")

Jika menggunakan koma, cukup gunakan:
csv.reader(file)

Latihan

Berikut beberapa latihan untuk memperkuat pemahaman.

Latihan 1

Buat berkas `siswa.csv` yang berisi kolom:
Nama,Umur,Kelas

Tambahkan minimal lima data siswa.

Latihan 2

Buat program untuk menampilkan seluruh isi CSV menggunakan `csv.reader()`.

Latihan 3

Buat program untuk menampilkan hanya nama siswa.

Latihan 4

Buat program untuk menampilkan nama dan kelas siswa.

Latihan 5

Baca data menggunakan `csv.DictReader()`.

Latihan 6

Buat program untuk menghitung jumlah siswa.

Latihan 7

Buat berkas `nilai.csv` dan hitung rata-rata nilai.

Latihan 8

Cari siswa dengan nilai tertinggi.

Latihan 9

Tampilkan siswa yang mendapatkan nilai minimal 75.

Latihan 10

Tambahkan penanganan `FileNotFoundError` pada program pembacaan CSV.

Kesimpulan

Membaca berkas CSV merupakan salah satu kemampuan penting dalam pengolahan data menggunakan Python. Modul `csv` menyediakan berbagai alat yang memudahkan proses tersebut.

`csv.reader()` digunakan untuk membaca data dalam bentuk daftar sehingga setiap kolom diakses berdasarkan indeks. Sementara itu, `csv.DictReader()` membaca setiap baris sebagai kamus sehingga data dapat diakses berdasarkan nama kolom.

Data yang dibaca dari CSV pada umumnya berupa teks. Karena itu, data angka perlu diubah menggunakan `int()` atau `float()` sebelum digunakan dalam operasi matematika.

Beberapa kemampuan penting yang perlu dikuasai meliputi membuka berkas dengan `open()`, membaca menggunakan `reader()` atau `DictReader()`, melewati baris judul, mengambil kolom tertentu, menyaring data, melakukan perhitungan, menangani pemisah yang berbeda, serta menangani kesalahan ketika berkas tidak ditemukan.

Setelah memahami pembacaan CSV, tahap berikutnya dapat dilanjutkan dengan mempelajari cara menulis dan mengubah data CSV menggunakan Python.

Artikel ini akan dibaca oleh: Diana Dwi Novianingrum, Difa Yuristika Bilqist, Dika Bayu Wirawan, Dimas Putri Meilani, dan Dionisius Adrian Raditya Respati.

6 komentar untuk "Membaca Berkas CSV dalam Python"

  1. Wih lumayan banyak juga ya judul skripsinya, lumayan ini bisa jadi bahan referensi mahaasiswa.

    BalasHapus
  2. Klo boleh tahu ini sumbernya dapat darimana ya?

    BalasHapus
    Balasan
    1. Dapat dari internet, sumber penyimpanan yang opensource, di Google aja nanti muncul sendiri.

      Hapus
  3. Emang skripsi boleh dibagikan ke publik?

    BalasHapus
    Balasan
    1. Sudah diatur untuk tidak bisa didownload dari perangkat manapun, cuma bisa dilihat atau dibaca saja.

      Hapus

Hubungi admin melalui Wa : +62-896-2414-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -