Sessi 2: Lingkungan Kerja Data Sains dan Dasar Python

A. NumPy: Aljabar Linear dan Operasi Matriks

NumPy (Numerical Python) adalah tulang punggung komputasi numerik di Python. Struktur datanya, ndarray (N-dimensional array), memungkinkan operasi vektor dan matriks yang sangat cepat, jauh lebih efisien daripada *list* Python standar. Hal ini penting untuk perhitungan di Fisika dan Matematika.

Contoh 1: Operasi Matriks dan Perkalian Titik (*Dot Product*)

Misalkan kita memiliki dua matriks, A dan B, dan ingin mencari hasil perkalian A·B. Operasi ini adalah dasar dari banyak transformasi dalam ilmu data.

import numpy as np

# Membuat Matriks A (2x3) dan Matriks B (3x2)
matriks_A = np.array([[1, 2, 3], [4, 5, 6]])
matriks_B = np.array([[7, 8], [9, 10], [11, 12]])

# Perkalian Matriks (Dot Product)
hasil_dot = np.dot(matriks_A, matriks_B)

print("Matriks A (2x3):\n", matriks_A)
print("Matriks B (3x2):\n", matriks_B)
print("\nHasil Perkalian Matriks A.B (2x2):\n", hasil_dot)

B. Pandas: DataFrame dan Struktur Data

Pandas memperkenalkan struktur data DataFrame, yang merupakan tabel 2-dimensi dengan label kolom dan baris. Ini adalah format standar kita untuk mewakili dataset. Setiap kolom dapat dianggap sebagai sebuah vektor data (Series).

Contoh 2: Studi Kasus - Memuat Dataset UCI Iris

Kita akan memuat dataset Iris (klasik dalam klasifikasi bunga) yang diasumsikan sudah ada di Colab Assets (`iris.csv`).

import pandas as pd

# Asumsikan file 'iris.csv' sudah diunggah
file_path = 'iris.csv' 

# Memuat data ke DataFrame
try:
    df_iris = pd.read_csv(file_path)
    
    print("5 Baris Data Teratas (df.head()):")
    print(df_iris.head())
    
    print("\nInformasi Struktur Data (df.info()):")
    # Memeriksa tipe data, non-null counts, dan penggunaan memori
    df_iris.info()
    
    print("\nDimensi Data (Baris, Kolom) - df.shape:", df_iris.shape)

except FileNotFoundError:
    print("ERROR: File 'iris.csv' tidak ditemukan. Pastikan sudah diunggah.")

C. Studi Kasus Variasi: Seleksi Data Berbasis Indeks dan Kondisi

Kemampuan untuk memilih dan memanipulasi data adalah inti dari *Data Wrangling*. Kita menggunakan operator .loc (berbasis label) dan .iloc (berbasis indeks integer).

Contoh 3: Pemfilteran Data (Data dari Kaggle - Kualitas Anggur Merah)

Misalnya, kita ingin menganalisis semua sampel anggur yang memiliki tingkat alkohol Alcohol > 10.0 dan keasaman Fixed Acidity < 8.0.

import pandas as pd

# Data Fiktif (merepresentasikan data dari Kaggle Wine Quality)
data_wine = {
    'Fixed Acidity': [7.4, 7.8, 8.5, 9.9, 7.0],
    'Volatile Acidity': [0.70, 0.88, 0.28, 0.25, 0.35],
    'Alcohol': [9.4, 9.8, 9.8, 11.5, 9.4],
    'Quality': [5, 5, 6, 7, 5]
}
df_wine = pd.DataFrame(data_wine)

# 1. Seleksi Baris Berdasarkan Indeks (Baris 1 hingga 3, Kolom 0 dan 1)
df_iloc = df_wine.iloc[1:4, 0:2]
print("Seleksi Berbasis Index (iloc):\n", df_iloc)

# 2. Seleksi Baris Berdasarkan Kondisi (Pemfilteran Boolean)
# Kondisi: (Alcohol > 10.0) AND (Fixed Acidity < 8.0)
kondisi = (df_wine['Alcohol'] > 10.0) & (df_wine['Fixed Acidity'] < 8.0)
df_filtered = df_wine[kondisi]

print("\nData yang difilter (Kondisi Alcohol > 10.0 dan Fixed Acidity < 8.0):\n", df_filtered)