📘 Pertemuan 2 - Dasar Python untuk Data Sains

🎯 Tujuan Pembelajaran

  1. Memahami tipe data dasar dan struktur data dalam Python
  2. Menggunakan operasi aritmatika, logika, dan kontrol alur (if, for, while)
  3. Membuat fungsi sederhana dalam Python
  4. Menerapkan konsep dasar untuk analisis data sederhana

🧩 1. Pengantar Python

Python adalah bahasa pemrograman yang mudah dibaca dan fleksibel, sangat populer di dunia Data Sains.

Python mendukung paradigma pemrograman:

  • Imperatif - instruksi berurutan
  • Fungsional - berbasis fungsi
  • Berorientasi Objek (OOP) - berbasis class dan object

📦 2. Tipe Data Dasar dalam Python

Jenis Contoh Keterangan
Integer 10, -5, 1000 Bilangan bulat
Float 10.5, 3.14, -2.7 Bilangan desimal
String "Halo", 'Python' Teks atau karakter
Boolean True, False Nilai logika
# Contoh tipe data dasar
a = 10              # Integer
b = 3.14            # Float
c = "Data Sains"    # String
d = True            # Boolean

# Mengecek tipe data
print(type(a))      # <class 'int'>
print(type(b))      # <class 'float'>
print(type(c))      # <class 'str'>
print(type(d))      # <class 'bool'>

# Konversi tipe data
angka_str = "100"
angka_int = int(angka_str)
print(type(angka_int))  # <class 'int'>

📚 3. Struktur Data Python

a. List - Koleksi Data Terurut

# Membuat list
nilai = [80, 75, 90, 85, 70]
nama = ["Ali", "Budi", "Cici"]
campuran = [1, "dua", 3.0, True]

# Akses elemen
print(nilai[0])          # 80 (indeks pertama)
print(nilai[-1])         # 70 (indeks terakhir)
print(nilai[1:4])        # [75, 90, 85] (slicing)

# Operasi list
print(len(nilai))        # 5 (jumlah elemen)
print(sum(nilai))        # 400 (total nilai)
print(sum(nilai)/len(nilai))  # 80.0 (rata-rata)

# Menambah elemen
nilai.append(95)
print(nilai)             # [80, 75, 90, 85, 70, 95]

# Menghapus elemen
nilai.remove(70)
print(nilai)             # [80, 75, 90, 85, 95]

b. Tuple - List yang Tidak Bisa Diubah

# Membuat tuple
koordinat = (3, 5)
data_mahasiswa = ("Budi", 20, "Informatika")

# Akses elemen
print(koordinat[0])      # 3
print(koordinat[1])      # 5

# Tuple tidak bisa diubah (immutable)
# koordinat[0] = 10      # Error!

c. Dictionary - Pasangan Kunci-Nilai

# Membuat dictionary
mahasiswa = {
    "nama": "Budi",
    "umur": 20,
    "nilai": 88,
    "jurusan": "Informatika"
}

# Akses nilai
print(mahasiswa["nama"])        # Budi
print(mahasiswa.get("umur"))    # 20

# Menampilkan semua kunci dan nilai
print(mahasiswa.keys())         # dict_keys(['nama', 'umur', 'nilai', 'jurusan'])
print(mahasiswa.values())       # dict_values(['Budi', 20, 88, 'Informatika'])

# Menambah/mengubah data
mahasiswa["semester"] = 5
mahasiswa["nilai"] = 90
print(mahasiswa)

d. Set - Kumpulan Elemen Unik

# Membuat set
angka = {1, 2, 3, 3, 4, 4, 5}
print(angka)             # {1, 2, 3, 4, 5} (duplikat dihapus otomatis)

# Operasi set
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
print(set1.union(set2))       # {1, 2, 3, 4, 5, 6}
print(set1.intersection(set2)) # {3, 4}

⚙️ 4. Operator dan Logika Dasar

Operator Aritmatika

a, b = 10, 3

print(a + b)     # 13 (penjumlahan)
print(a - b)     # 7 (pengurangan)
print(a * b)     # 30 (perkalian)
print(a / b)     # 3.333... (pembagian)
print(a // b)    # 3 (pembagian bulat)
print(a % b)     # 1 (modulus/sisa bagi)
print(a ** b)    # 1000 (pangkat)

Operator Perbandingan

x, y = 5, 10

print(x == y)    # False (sama dengan)
print(x != y)    # True (tidak sama dengan)
print(x < y)     # True (kurang dari)
print(x > y)     # False (lebih dari)
print(x <= y)    # True (kurang dari atau sama dengan)
print(x >= y)    # False (lebih dari atau sama dengan)

Operator Logika

x, y = True, False

print(x and y)   # False (kedua harus True)
print(x or y)    # True (salah satu True)
print(not x)     # False (kebalikan)

Percabangan (if-else)

# Contoh 1: Kategori nilai
nilai = 78

if nilai >= 85:
    kategori = "A (Sangat Baik)"
elif nilai >= 75:
    kategori = "B (Baik)"
elif nilai >= 65:
    kategori = "C (Cukup)"
else:
    kategori = "D (Kurang)"

print(f"Nilai {nilai} termasuk kategori: {kategori}")

# Contoh 2: Validasi kehadiran
kehadiran = 85

if kehadiran >= 75:
    print("Mahasiswa berhak mengikuti ujian")
    if kehadiran == 100:
        print("Bonus: +5 poin nilai akhir")
else:
    print("Mahasiswa tidak berhak mengikuti ujian")

🔁 5. Perulangan (Looping)

For Loop

# Contoh 1: Iterasi angka
for i in range(1, 6):
    print(f"Iterasi ke-{i}")

# Contoh 2: Iterasi list
nama_mahasiswa = ["Ali", "Budi", "Cici", "Dodi"]
for nama in nama_mahasiswa:
    print(f"Halo, {nama}!")

# Contoh 3: Iterasi dengan enumerate
for index, nama in enumerate(nama_mahasiswa, start=1):
    print(f"{index}. {nama}")

# Contoh 4: Iterasi dictionary
mahasiswa = {"nama": "Eka", "nilai": 85, "semester": 5}
for kunci, nilai in mahasiswa.items():
    print(f"{kunci}: {nilai}")

While Loop

# Contoh 1: Hitung mundur
x = 5
while x > 0:
    print(f"Nilai: {x}")
    x -= 1
print("Selesai!")

# Contoh 2: Input validasi
password_benar = "data123"
percobaan = 3

while percobaan > 0:
    password_input = input("Masukkan password: ")
    if password_input == password_benar:
        print("Login berhasil!")
        break
    else:
        percobaan -= 1
        print(f"Password salah. Sisa percobaan: {percobaan}")

🧮 6. Fungsi dalam Python

Fungsi digunakan untuk memecah program menjadi bagian kecil yang reusable.

# Fungsi sederhana
def sapa(nama):
    print(f"Halo, {nama}!")

sapa("Budi")

# Fungsi dengan return value
def rata_rata(data):
    """Menghitung rata-rata dari list angka"""
    return sum(data) / len(data)

nilai = [70, 80, 90, 100]
print(f"Rata-rata: {rata_rata(nilai)}")

# Fungsi dengan multiple parameters
def hitung_nilai_akhir(uts, uas, tugas):
    """Menghitung nilai akhir mahasiswa
    Formula: 30% UTS + 40% UAS + 30% Tugas
    """
    nilai_akhir = (uts * 0.3) + (uas * 0.4) + (tugas * 0.3)
    return nilai_akhir

uts_score = 80
uas_score = 85
tugas_score = 90
final = hitung_nilai_akhir(uts_score, uas_score, tugas_score)
print(f"Nilai akhir: {final:.2f}")

# Fungsi dengan default parameter
def cetak_biodata(nama, umur, jurusan="Belum ditentukan"):
    print(f"Nama: {nama}")
    print(f"Umur: {umur}")
    print(f"Jurusan: {jurusan}")

cetak_biodata("Ali", 20, "Informatika")
cetak_biodata("Budi", 19)  # jurusan menggunakan nilai default

📊 7. Studi Kasus Mini - Analisis Nilai Mahasiswa

📝 Kasus: Sistem Penilaian Mahasiswa

Buat program untuk menganalisis nilai mahasiswa dengan fitur:

  • Input data nama dan nilai
  • Hitung rata-rata kelas
  • Tentukan kategori setiap mahasiswa
  • Tampilkan statistik kelas
# Dataset sederhana
nama = ["Ani", "Budi", "Cici", "Dodi", "Eka"]
nilai = [85, 70, 90, 65, 75]

# Fungsi untuk menghitung rata-rata
def rata_rata(data):
    return sum(data) / len(data)

# Fungsi untuk menentukan kategori
def kategori_nilai(nilai):
    if nilai >= 85:
        return "A (Sangat Baik)"
    elif nilai >= 75:
        return "B (Baik)"
    elif nilai >= 65:
        return "C (Cukup)"
    else:
        return "D (Kurang)"

# Fungsi untuk menghitung statistik
def statistik_kelas(nilai):
    stats = {
        "rata_rata": rata_rata(nilai),
        "tertinggi": max(nilai),
        "terendah": min(nilai),
        "lulus": sum(1 for n in nilai if n >= 70),
        "tidak_lulus": sum(1 for n in nilai if n < 70)
    }
    return stats

# Main program
print("=" * 50)
print("SISTEM PENILAIAN MAHASISWA")
print("=" * 50)

# Tampilkan data per mahasiswa
print("
Data Mahasiswa:")
for i, (n, v) in enumerate(zip(nama, nilai), start=1):
    kategori = kategori_nilai(v)
    status = "LULUS" if v >= 70 else "TIDAK LULUS"
    print(f"{i}. {n:10s} | Nilai: {v:3d} | {kategori:20s} | {status}")

# Tampilkan statistik
print("
" + "=" * 50)
print("STATISTIK KELAS")
print("=" * 50)
stats = statistik_kelas(nilai)
print(f"Rata-rata kelas    : {stats['rata_rata']:.2f}")
print(f"Nilai tertinggi    : {stats['tertinggi']}")
print(f"Nilai terendah     : {stats['terendah']}")
print(f"Jumlah lulus       : {stats['lulus']} mahasiswa")
print(f"Jumlah tidak lulus : {stats['tidak_lulus']} mahasiswa")
print("=" * 50)

# Analisis tambahan
if stats['rata_rata'] >= 75:
    print("
✓ Performa kelas: BAIK")
else:
    print("
✗ Performa kelas: PERLU PENINGKATAN")

💡 Output yang Diharapkan:

==================================================
SISTEM PENILAIAN MAHASISWA
==================================================

Data Mahasiswa:
1. Ani        | Nilai:  85 | A (Sangat Baik)      | LULUS
2. Budi       | Nilai:  70 | B (Baik)             | LULUS
3. Cici       | Nilai:  90 | A (Sangat Baik)      | LULUS
4. Dodi       | Nilai:  65 | C (Cukup)            | TIDAK LULUS
5. Eka        | Nilai:  75 | B (Baik)             | LULUS

==================================================
STATISTIK KELAS
==================================================
Rata-rata kelas    : 77.00
Nilai tertinggi    : 90
Nilai terendah     : 65
Jumlah lulus       : 4 mahasiswa
Jumlah tidak lulus : 1 mahasiswa
==================================================

✓ Performa kelas: BAIK

🧠 8. Tugas Latihan Mandiri

Latihan 1: Kalkulator Nilai

  1. Buat list berisi 10 nilai mahasiswa
  2. Hitung rata-rata, nilai tertinggi, dan nilai terendah
  3. Buat fungsi untuk menentukan kategori nilai (A/B/C/D)
  4. Tampilkan hasilnya menggunakan perulangan

Latihan 2: Analisis Data Penjualan

  1. Buat dictionary untuk menyimpan data penjualan produk (nama produk: jumlah terjual)
  2. Hitung total penjualan semua produk
  3. Tampilkan produk terlaris
  4. Buat fungsi untuk menghitung persentase penjualan setiap produk

Latihan 3: Validasi Data

  1. Buat program yang meminta input nilai mahasiswa (0-100)
  2. Validasi input menggunakan while loop
  3. Jika input tidak valid, minta input ulang
  4. Tampilkan kategori nilai setelah input valid

✍️ Kesimpulan

Pada pertemuan ini, mahasiswa telah mempelajari:

  • ✅ Tipe data dan struktur data dasar Python (list, tuple, dict, set)
  • ✅ Operator aritmatika, perbandingan, dan logika
  • ✅ Percabangan (if-elif-else) dan perulangan (for, while)
  • ✅ Cara membuat dan menggunakan fungsi
  • ✅ Penerapan konsep dasar untuk analisis data sederhana

Pertemuan selanjutnya: Kita akan mempelajari Pandas untuk manipulasi data tabular yang lebih kompleks.