Menyajikan dan Menyimpulkan · Pelajaran 9 dari 9

Proyek: menganalisis nilai ujian

11 menit baca · BelajarCode

Saatnya menggabungkan semuanya. Data berikut adalah nilai ujian dua kelas beserta jam belajar mandiri per minggu yang dilaporkan siswa. Datanya belum bersih.

Data dan pembersihan

Python
1import csv2import io3import statistics as st45TEKS = """nama,kelas,mtk,ipa,jam_belajar6Andi,XI-1,78,72,47Bela,XI-1,92,88,78Citra,xi-1,65,70,29Dimas,XI-2,55,61,110Eka,XI-2,88,90,611Fajar,XI-2,,75,312Gita,XI-1,81,79,513Hadi,XI-2,70,68,314Indah,XI-1,95,93,815Joko,XI-2,62,58,216Kirana,XI-1,74,80,417Lukman,XI-2,84,82,5"""1819siswa = []20for b in csv.DictReader(io.StringIO(TEKS)):21    if not b["mtk"] or not b["ipa"]:22        print("Dilewati karena nilai kosong:", b["nama"])23        continue24    mtk, ipa = int(b["mtk"]), int(b["ipa"])25    siswa.append({26        "nama": b["nama"],27        "kelas": b["kelas"].upper(),28        "mtk": mtk,29        "ipa": ipa,30        "rata": (mtk + ipa) / 2,31        "jam": int(b["jam_belajar"]),32    })33print("Data bersih:", len(siswa), "siswa")3435print("\nRingkasan per mapel")36for mapel in ["mtk", "ipa"]:37    n = [s[mapel] for s in siswa]38    print(f"{mapel}: rata-rata {st.mean(n):.1f}, median {st.median(n)}, "39          f"simpangan baku {st.stdev(n):.1f}, terendah {min(n)}, tertinggi {max(n)}")4041print("\nPer kelas")42for kelas in sorted({s["kelas"] for s in siswa}):43    r = [s["rata"] for s in siswa if s["kelas"] == kelas]44    print(f"{kelas}: {len(r)} siswa, rata-rata {st.mean(r):.1f}")4546print("\nTiga besar")47for posisi, s in enumerate(sorted(siswa, key=lambda s: s["rata"], reverse=True)[:3], start=1):48    print(f"{posisi}. {s['nama']} ({s['kelas']}) {s['rata']}")4950jam = [s["jam"] for s in siswa]51rata = [s["rata"] for s in siswa]52print("\nKorelasi jam belajar dan rata-rata nilai:", round(st.correlation(jam, rata), 2))
Keluaran
Dilewati karena nilai kosong: Fajar
Data bersih: 11 siswa

Ringkasan per mapel
mtk: rata-rata 76.7, median 78, simpangan baku 12.8, terendah 55, tertinggi 95
ipa: rata-rata 76.5, median 79, simpangan baku 11.6, terendah 58, tertinggi 93

Per kelas
XI-1: 6 siswa, rata-rata 80.6
XI-2: 5 siswa, rata-rata 71.8

Tiga besar
1. Indah (XI-1) 94.0
2. Bela (XI-1) 90.0
3. Eka (XI-2) 89.0

Korelasi jam belajar dan rata-rata nilai: 0.98

Laporan singkat

  • Data mentah berisi 12 siswa. Satu siswa (Fajar) dikeluarkan karena nilai matematikanya kosong, dan satu penulisan kelas ("xi-1") diseragamkan.
  • Rata-rata mtk dan ipa hampir sama (sekitar 76,5). Penyebaran nilai mtk sedikit lebih besar.
  • Rata-rata kelas XI-1 (80,6) lebih tinggi daripada XI-2 (71,8), tetapi jumlah siswanya kecil, jadi perbedaan ini belum tentu berlaku untuk angkatan lain.
  • Jam belajar mandiri berkorelasi sangat kuat dengan rata-rata nilai (r = 0,98) pada data ini. Ini hubungan, belum tentu sebab-akibat, dan jam belajar dilaporkan sendiri oleh siswa sehingga bisa kurang tepat.

Pisahkan temuan dan tafsiran

Dalam laporan, tulis temuan (angka yang dihitung) terpisah dari tafsiran (dugaanmu tentang penyebabnya). Pembaca berhak tahu mana yang fakta dan mana yang pendapat.

Cek pemahaman

Kenapa laporan menyebutkan bahwa jam belajar "dilaporkan sendiri oleh siswa"?

Latihan

Siswa yang perlu pendampingan

Dari data bersih di atas, tampilkan siswa yang rata-ratanya di bawah 70 atau salah satu nilainya di bawah 60, lengkap dengan alasannya. Siswa ini bisa diprioritaskan untuk kelas pendampingan.

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