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.
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.
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:
Data setiap siswa berada pada satu baris.
Contohnya:
Dengan demikian, CSV dapat menjadi sumber data bagi sebuah program Python.
import csv
Setelah itu, fungsi dan kelas yang tersedia pada modul tersebut dapat digunakan.
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.
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.
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:
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
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.
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.
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.
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
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.
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.
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.
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.
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`.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
`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"])
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"]
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:
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
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.
data = csv.reader(file)
jika `csv` belum diimpor.
Gunakan:
import csv
open("siswa.csv", "r")
Jika berkas bernama `data_siswa.csv`, kode tersebut tidak akan menemukan berkas yang dimaksud.
baris["Nama"]
pastikan kolom memang bernama `Nama`. Perbedaan huruf besar dan kecil dapat menyebabkan kesalahan.
total += baris["Nilai"]
dapat menghasilkan kesalahan jika `total` berupa bilangan.
Gunakan:
total += int(baris["Nilai"])
csv.reader(file, delimiter=";")
Jika menggunakan koma, cukup gunakan:
csv.reader(file)
Nama,Umur,Kelas
Tambahkan minimal lima data siswa.
`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.
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() |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
`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:
- Membuka berkas CSV.
- Membaca data menggunakan `DictReader`.
- Menampilkan nama, umur, dan kelas.
- Menghitung jumlah siswa.
- 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"
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 -
Wih lumayan banyak juga ya judul skripsinya, lumayan ini bisa jadi bahan referensi mahaasiswa.
BalasHapusIya boleh banget nih.
HapusKlo boleh tahu ini sumbernya dapat darimana ya?
BalasHapusDapat dari internet, sumber penyimpanan yang opensource, di Google aja nanti muncul sendiri.
HapusEmang skripsi boleh dibagikan ke publik?
BalasHapusSudah diatur untuk tidak bisa didownload dari perangkat manapun, cuma bisa dilihat atau dibaca saja.
Hapus