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
1import csv2import io34teks = """nama,kota,nilai5Andi,"Bandung, Jawa Barat",806Bela,Surabaya,92"""78for baris in csv.reader(io.StringIO(teks)):9 print(baris)['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.
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)){'nama': 'Andi', 'kelas': 'XI-1', 'mtk': '80', 'ipa': '75'}
Siswa XI-1: ['Andi', 'Citra']
Rata-rata mtk: 76.75Semua 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
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)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.
Pembahasan
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)))11for s in data:12 s["mtk"], s["ipa"] = int(s["mtk"]), int(s["ipa"])1314terbaik = max(data, key=lambda s: s["ipa"])15print("IPA tertinggi:", terbaik["nama"], terbaik["ipa"])1617keduanya = [s["nama"] for s in data if s["mtk"] >= 75 and s["ipa"] >= 75]18print("Keduanya minimal 75:", keduanya)IPA tertinggi: Bela 88 Keduanya minimal 75: ['Andi', 'Bela']
Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.