Data Tabel · Pelajaran 2 dari 9

Membaca CSV dengan Python

9 menit baca · BelajarCode

Modul csv membaca CSV dengan benar, termasuk data yang mengandung koma di dalam tanda kutip. Supaya contohnya bisa langsung dijalankan tanpa file, teks CSV dibungkus dengan io.StringIO, yang membuat teks bisa dibaca seperti file.

csv.reader

Python
1import csv2import io34teks = """nama,kota,nilai5Andi,"Bandung, Jawa Barat",806Bela,Surabaya,92"""78for baris in csv.reader(io.StringIO(teks)):9    print(baris)
Keluaran
['nama', 'kota', 'nilai']
['Andi', 'Bandung, Jawa Barat', '80']
['Bela', 'Surabaya', '92']

Kota "Bandung, Jawa Barat" tetap menjadi satu kolom karena diapit tanda kutip.

csv.DictReader

DictReader memakai baris pertama sebagai nama kolom, lalu mengubah setiap baris berikutnya menjadi dictionary. Data jadi lebih mudah dibaca karena diakses dengan nama kolom.

Python
1import csv2import io34teks = """nama,kelas,mtk,ipa5Andi,XI-1,80,756Bela,XI-2,92,887Citra,XI-1,70,858Dimas,XI-2,65,70"""910data = list(csv.DictReader(io.StringIO(teks)))11print(data[0])1213for siswa in data:14    siswa["mtk"] = int(siswa["mtk"])15    siswa["ipa"] = int(siswa["ipa"])1617kelas_xi1 = [s["nama"] for s in data if s["kelas"] == "XI-1"]18print("Siswa XI-1:", kelas_xi1)19print("Rata-rata mtk:", sum(s["mtk"] for s in data) / len(data))
Keluaran
{'nama': 'Andi', 'kelas': 'XI-1', 'mtk': '80', 'ipa': '75'}
Siswa XI-1: ['Andi', 'Citra']
Rata-rata mtk: 76.75

Semua isi CSV adalah teks

Nilai dari CSV selalu terbaca sebagai teks, misalnya '80', bukan 80. Ubah dulu dengan int() atau float() sebelum dihitung. Kalau lupa, penjumlahan teks malah menggabungkannya menjadi '8092'.

Pemisah titik koma

Python
1import csv2import io34teks = """produk;harga5Kopi susu;80006Teh tarik;7000"""78for baris in csv.DictReader(io.StringIO(teks), delimiter=";"):9    print(baris["produk"], int(baris["harga"]) * 2)
Keluaran
Kopi susu 16000
Teh tarik 14000

Membaca dari file sungguhan

Untuk file di komputermu, ganti io.StringIO(teks) dengan open("nilai.csv", encoding="utf-8", newline="") di dalam pernyataan with. Sisa kodenya sama persis.

Cek pemahaman

Apa keuntungan csv.DictReader dibandingkan csv.reader?

Latihan

Siswa dengan nilai IPA terbaik

Dari data siswa di contoh DictReader, tampilkan nama dan nilai siswa dengan nilai IPA tertinggi, lalu daftar siswa yang nilai mtk dan ipa-nya sama-sama minimal 75.

Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.

Tandai pelajaran ini selesai

Masuk ke aplikasi untuk mencatat kemajuan, lalu lanjutkan ke pelajaran berikutnya dari perangkat mana pun.

Buka di aplikasi