Lompat ke konten Lompat ke sidebar Lompat ke footer

Berkas CSV dalam Python

CSV merupakan salah satu bentuk berkas yang banyak digunakan untuk menyimpan data dalam bentuk tabel. CSV sering digunakan untuk menyimpan data siswa, daftar nilai, data barang, hasil penelitian, data pelanggan, dan berbagai jenis data lainnya.

Sebelum lebih lanjut mempelajari materi tentang Berkas CSV dalam Python, terlebih dahulu pelajari materi tentang: Paket dalam Python, Fungsi Utama main dalam Python, dan Direktori dalam Python.

Python menyediakan modul bawaan bernama `csv` yang dapat digunakan untuk membaca dan menulis berkas CSV. Modul ini memudahkan pengolahan data tanpa harus memasang pustaka tambahan.

Dengan memahami berkas CSV, pemrogram dapat membuat program yang mampu membaca data dari tabel, mengubah data, menambahkan data baru, serta menyimpan hasil pengolahan kembali ke dalam berkas.

Pengertian CSV

CSV merupakan singkatan dari Comma-Separated Values. Secara sederhana, CSV adalah berkas teks yang menyimpan data dalam bentuk baris dan kolom.

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


Setiap baris menunjukkan satu data. Baris pertama biasanya digunakan sebagai nama kolom, sedangkan baris berikutnya berisi data. Dalam contoh tersebut terdapat tiga kolom:
  • Nama
  • Umur
  • Kelas

Data pertama adalah:
Andi, 16, 10A

Artinya:
  • Nama = Andi
  • Umur = 16
  • Kelas = 10A

Alasan Penggunaan CSV

Berkas CSV memiliki beberapa kelebihan.

Mudah Dibaca

Isi CSV berupa teks biasa sehingga dapat dibuka menggunakan berbagai aplikasi pengolah teks.

Mudah Diolah

Data CSV dapat diproses menggunakan Python dan berbagai bahasa pemrograman lainnya.

Ukuran Relatif Ringan

CSV hanya menyimpan data dalam bentuk teks sehingga biasanya memiliki ukuran yang lebih kecil dibandingkan beberapa format berkas tabel lainnya.

Mudah Dipindahkan

CSV dapat digunakan untuk bertukar data antara berbagai aplikasi.

Sebagai contoh, data dari aplikasi lembar kerja dapat disimpan sebagai CSV kemudian diproses menggunakan Python.

Modul csv dalam Python

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

Setelah modul diimpor, berbagai fungsi dan kelas yang berkaitan dengan CSV dapat digunakan.

Membaca Berkas CSV

Salah satu operasi yang paling sering dilakukan adalah membaca berkas CSV. Misalnya terdapat berkas `data.csv` dengan isi:
Nama,  Umur, Kelas
Andi,  16,   10A
Budi,  17,   11B
Citra, 16,   10B


Program Python untuk membacanya:
import csv
with open("data.csv", "r") as file:
data = csv.reader(file)
for baris in data:
print(baris)


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


Setiap baris dibaca sebagai daftar.

Alasan Menggunakan with open()

Berikut dijelaskan alasan menggunakan with open().

Perintah:
with open("data.csv", "r") as file:

digunakan untuk membuka berkas.

Kata `with` membantu memastikan berkas ditutup setelah selesai digunakan. Cara tersebut lebih aman dan lebih praktis dibandingkan membuka dan menutup berkas secara manual.

Membaca CSV Tanpa Header

Jika berkas CSV tidak memiliki nama kolom, setiap baris dapat langsung diproses.

Contoh:
Andi,  16, 10A
Budi,  17, 11B
Citra, 16, 10B


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


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


Mengambil Data dari Kolom Tertentu

Karena setiap baris berbentuk daftar, data dapat diakses menggunakan indeks.
import csv
with open("data.csv", "r") as file:
data = csv.reader(file)
for baris in data:
print(baris[0])


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


hasilnya:
Nama
Andi
Budi
Citra


Keterangan:
  • Indeks `0` menunjukkan kolom pertama.
  • Indeks `1` menunjukkan kolom kedua.
  • Indeks `2` menunjukkan kolom ketiga.

Melewati Baris Header

Sering kali baris pertama hanya berisi nama kolom sehingga tidak perlu diproses sebagai data. Cara sederhana untuk melewatinya:
import csv
with open("data.csv", "r") as file:
data = csv.reader(file)
next(data)
for baris in data:
print(baris)


Fungsi `next()` digunakan untuk mengambil baris pertama sebelum perulangan dimulai.

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


Membaca CSV Menggunakan DictReader

Python juga menyediakan `csv.DictReader()`. Dengan `DictReader`, setiap baris dibaca sebagai pasangan nama kolom dan nilai.

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


Hasil dapat berupa:
{'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 memiliki nama kolom.

Mengambil Nilai Berdasarkan Nama Kolom

Dengan `DictReader`, nilai dapat diambil menggunakan nama kolom.
import csv
with open("data.csv", "r") as file:
data = csv.DictReader(file)
for baris in data:
print(baris["Nama"])


Hasil:
Andi
Budi
Citra


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


Hasil:
Andi 10A
Budi 11B
Citra 10B


Menulis Data ke Berkas CSV

Selain membaca, Python juga dapat membuat berkas CSV. Gunakan `csv.writer()`.

Contoh:
import csv
with open("siswa.csv", "w", newline="") as file:
penulis = csv.writer(file)
penulis.writerow(["Nama", "Umur", "Kelas"])
penulis.writerow(["Andi", 16, "10A"])
penulis.writerow(["Budi", 17, "11B"])
penulis.writerow(["Citra", 16, "10B"])


Program tersebut membuat berkas `siswa.csv`.

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


Fungsi writerow()

Fungsi `writerow()` digunakan untuk menulis satu baris.

Contoh:
penulis.writerow(["Andi", 16, "10A"])

Setiap pemanggilan `writerow()` menghasilkan satu baris dalam berkas CSV.

Menulis Banyak Baris

Jika data sudah tersedia dalam bentuk daftar, `writerows()` dapat digunakan.
import csv
data = [
["Nama",  "Umur", "Kelas"],
["Andi",  16,     "10A"  ],
["Budi",  17,     "11B"  ],
["Citra", 16,     "10B"  ]
]
with open("siswa.csv", "w", newline="") as file:
penulis = csv.writer(file)
penulis.writerows(data)


Program tersebut menulis seluruh data sekaligus.

Menambahkan Data ke CSV

Jika ingin menambahkan data tanpa menghapus isi sebelumnya, gunakan mode `"a"`.
import csv
with open("siswa.csv", "a", newline="") as file:
penulis = csv.writer(file)
penulis.writerow(["Dina", 17, "11A"])


Data baru akan ditambahkan pada bagian akhir berkas.

Perbedaan Mode w dan a

Mode `"w"` digunakan untuk menulis ulang berkas.
open("data.csv", "w")

Jika berkas sudah memiliki isi, isi lama dapat digantikan. Mode `"a"` digunakan untuk menambahkan data.
open("data.csv", "a")

Isi sebelumnya tetap dipertahankan dan data baru ditambahkan di bagian akhir.

Menulis CSV Menggunakan DictWriter

Selain `csv.writer()`, tersedia `csv.DictWriter()`. Metode ini cocok jika data disimpan dalam bentuk kamus.

Contoh:
import csv
data = [
{"Nama": "Andi", "Umur": 16, "Kelas": "10A"},
{"Nama": "Budi", "Umur": 17, "Kelas": "11B"},
{"Nama": "Citra", "Umur": 16, "Kelas": "10B"}
]
with open("siswa.csv", "w", newline="") as file:
kolom = ["Nama", "Umur", "Kelas"]
penulis = csv.DictWriter(file, fieldnames=kolom)
penulis.writeheader()
penulis.writerows(data)


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


Fungsi writeheader()

Pada `DictWriter`, fungsi `writeheader()` digunakan untuk menulis nama kolom.
penulis.writeheader()

Jika nama kolom yang digunakan adalah:
kolom = ["Nama", "Umur", "Kelas"]

maka baris pertama CSV menjadi:
Nama, Umur, Kelas

Pemisah Data Selain Koma

Walaupun CSV biasanya menggunakan koma sebagai pemisah, beberapa berkas menggunakan tanda lain seperti titik koma.

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


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


Hasilnya tetap berupa daftar.

Menggunakan Tab sebagai Pemisah

Data juga dapat menggunakan tab sebagai pemisah.

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


Penggunaan pemisah perlu disesuaikan dengan struktur berkas.

Data yang Mengandung Koma

Masalah dapat muncul ketika isi data sendiri mengandung koma.

Contoh:
Nama,Alamat
Andi,"Jl. Merdeka, No. 10"


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


Hasil:
['Nama', 'Alamat']
['Andi', 'Jl. Merdeka, No. 10']


Karena alamat berada di dalam tanda kutip, koma pada alamat tidak dianggap sebagai pemisah kolom.

Menangani Data Angka

Data yang dibaca dari CSV umumnya berupa teks.

Misalnya:
Andi,  80
Budi,  75
Citra, 90


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


nilai `80`, `75`, dan `90` dibaca sebagai teks. Jika ingin melakukan perhitungan, data perlu diubah menjadi bilangan.
nilai = int(baris[1])

Contoh lengkap:
import csv
with open("nilai.csv", "r") as file:
data = csv.reader(file)
next(data)
for baris in data:
nama = baris[0]
nilai = int(baris[1])
print(nama, nilai)


Menghitung Rata-Rata dari CSV

Data nilai yang tersimpan dalam CSV dapat digunakan untuk menghitung rata-rata.

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


Program:
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)


Hasil:
Rata-rata: 82.5

Mencari Data Tertentu

CSV juga dapat digunakan untuk mencari data berdasarkan kondisi tertentu. Contoh mencari siswa yang memperoleh 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)


Hasil:
Andi 80
Citra 90
Dina 85


Mengubah Data CSV

Data yang sudah dibaca dapat diubah sebelum disimpan kembali. Contoh menaikkan nilai setiap siswa sebanyak 5 poin:
import csv
data_baru = []
with open("nilai.csv", "r") as file:
data = csv.DictReader(file)
for baris in data:
nilai = int(baris["Nilai"])
baris["Nilai"] = nilai + 5
data_baru.append(baris)
with open("nilai_baru.csv", "w", newline="") as file:
kolom = ["Nama", "Nilai"]
penulis = csv.DictWriter(file, fieldnames=kolom)
penulis.writeheader()
penulis.writerows(data_baru)


Program tersebut membaca data lama, mengubah nilai, kemudian menyimpan hasilnya ke dalam berkas baru.

Menangani Encoding

Berkas CSV dapat berisi huruf atau simbol tertentu. Untuk mengurangi masalah karakter, terutama ketika berkas menggunakan huruf non-standar, encoding dapat ditentukan ketika membuka berkas.

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


Untuk menulis:
import csv
with open("data.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerow(["Nama", "Keterangan"])
penulis.writerow(["Andi", "Sangat baik"])


Penentuan encoding membantu menjaga karakter tetap terbaca dengan benar.

Contoh Program Pengelolaan Data Siswa

Berikut contoh sederhana program yang membaca data siswa dari CSV.
import csv
with open("siswa.csv", "r", encoding="utf-8") as file:
data = csv.DictReader(file)
for siswa in data:
print("Nama :", siswa["Nama"])
print("Umur :", siswa["Umur"])
print("Kelas:", siswa["Kelas"])
print()


Program tersebut membaca setiap baris dan menampilkan informasi siswa.

Contoh Program Membuat Data Siswa

Data siswa juga dapat dibuat langsung melalui Python.
import csv
data = [
["Nama",  "Umur", "Kelas"],
["Andi",  16,     "10A"],
["Budi",  17,     "11B"],
["Citra", 16,     "10B"]
]
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerows(data)
print("Data berhasil disimpan")


Setelah program dijalankan, berkas `siswa.csv` akan dibuat.

Alur Pengolahan CSV

Secara umum, pengolahan CSV menggunakan Python dapat dilakukan melalui beberapa tahap:
  1. Impor modul `csv`.
  2. Buka berkas CSV.
  3. Baca atau tulis data.
  4. Lakukan pengolahan jika diperlukan.
  5. Simpan hasil.
  6. Tutup berkas secara otomatis menggunakan `with`.

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


Kesalahan yang Sering Terjadi

Berikut dijelaskan beberapa jenis kesalahan yang sering terjadi ketika menggunakan Berkas CSV dalam Python.

Nama Berkas Salah

Jika nama berkas tidak sesuai, Python dapat menghasilkan kesalahan karena berkas tidak ditemukan. Pastikan nama dan lokasi berkas sudah benar.

Mode Berkas Tidak Sesuai

Penggunaan mode `"w"` dapat mengganti isi berkas lama. Jika hanya ingin menambahkan data, gunakan `"a"`.

Lupa Mengubah Data Angka

Data CSV dibaca sebagai teks. Jika ingin melakukan perhitungan, ubah terlebih dahulu menggunakan `int()` atau `float()`.

Contoh:
nilai = int(baris["Nilai"])

Pemisah Tidak Sesuai

Jika CSV menggunakan titik koma tetapi program menggunakan koma sebagai pemisah, data dapat terbaca secara tidak tepat.

Gunakan:
csv.reader(file, delimiter=";")

Lupa newline

Ketika menulis CSV, penggunaan:
newline=""

dapat membantu mencegah baris kosong tambahan pada beberapa sistem.

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

Contoh `reader`:
print(baris[0])

Contoh `DictReader`:
print(baris["Nama"])

Perbedaan writer dan DictWriter


Fitur

csv.writer()

csv.DictWriter()

  • Bentuk data
  • Daftar
  • Kamus
  • Menulis satu baris
  • writerow()
  • writerow()
  • Menulis banyak baris
  • writerows()
  • writerows()
  • Menulis nama kolom
  • Ditulis sebagai daftar
  • writeheader()
  • Akses berdasarkan nama kolom
  • Tidak
  • Ya

Latihan

Berikut beberapa latihan untuk memperkuat pemahaman mengenai CSV.

Latihan 1

Buat berkas `siswa.csv` yang berisi nama, umur, dan kelas.

Latihan 2

Buat program untuk membaca seluruh isi `siswa.csv`.

Latihan 3

Tampilkan hanya nama seluruh siswa.

Latihan 4

Gunakan `DictReader` untuk membaca data siswa.

Latihan 5

Buat program untuk menambahkan satu siswa baru ke dalam CSV.

Latihan 6

Buat berkas `nilai.csv` yang berisi nama dan nilai.

Latihan 7

Hitung rata-rata nilai dari berkas tersebut.

Latihan 8

Tampilkan siswa yang memperoleh nilai minimal 80.

Latihan 9

Buat program yang menaikkan seluruh nilai sebanyak 5 poin kemudian menyimpannya ke berkas baru.

Latihan 10

Buat program yang membaca CSV dengan pemisah titik koma.

Kesimpulan

CSV merupakan format sederhana yang sangat berguna untuk menyimpan data berbentuk tabel. Python menyediakan modul `csv` yang memungkinkan program membaca, menulis, menambahkan, mencari, dan mengolah data CSV.

Fungsi dan kelas yang penting untuk dipahami antara lain `csv.reader()`, `csv.DictReader()`, `csv.writer()`, dan `csv.DictWriter()`.

`csv.reader()` cocok untuk membaca data berdasarkan posisi kolom, sedangkan `csv.DictReader()` memudahkan pengambilan data berdasarkan nama kolom. Untuk menulis data, `csv.writer()` dapat digunakan bersama `writerow()` atau `writerows()`, sedangkan `DictWriter` cocok digunakan ketika data berbentuk kamus.

Penguasaan CSV menjadi dasar penting untuk membuat program yang mampu mengolah data dari tabel. Setelah memahami CSV, pemrogram dapat melanjutkan ke pengolahan data yang lebih kompleks, termasuk membaca data dari banyak berkas, melakukan perhitungan, melakukan penyaringan data, serta menggabungkan hasil pengolahan ke dalam aplikasi Python.

Artikel ini akan dibaca oleh: Devy Setyaningrum, Diana Dwi Novianingrum, Difa Yuristika Bilqist, Dika Bayu Wirawan, dan Dimas Putri Meilani.

5 komentar untuk "Berkas CSV dalam Python"

  1. Terima kasih contoh-contoh judul skripsinya, lumayan membantu saya untuk mencari inspirasi judul buat skripsi.

    BalasHapus
  2. Apakah contoh judul-judul skripsi ini masih relevan dengan kondisi dunia ekonomi saat ini?

    BalasHapus
    Balasan
    1. Tidak tahu, semuanya bergantung pada suduh pandang peneliti itu sendiri.

      Hapus
    2. Jika yang dipermasalahkan adalah hukum syariahnya, saya rasa masih relevan karena hukum tersebutkan memang bersumber dari al-quran dan al-hadist.

      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 -