Lewati ke konten utama

Library Pandas

Pandas adalah library Python yang digunakan untuk mengolah data berbentuk tabel. Jika NumPy kuat untuk perhitungan angka, maka pandas lebih nyaman digunakan ketika data memiliki nama kolom, baris, dan perlu disimpan kembali ke format seperti CSV atau Excel.

Dalam soal praktikum, pandas sangat berguna untuk membaca data x1 sampai x5, menambahkan kolom xbar, R, BKA, BKB, dan menentukan status data.

Instalasi dan Import

Sebelum digunakan, pandas perlu di-install terlebih dahulu.

pip install pandas openpyxl

Setelah itu, pandas bisa digunakan dengan cara import berikut:

import pandas as pd

Penjelasan: pd adalah alias yang umum digunakan untuk pandas. openpyxl dibutuhkan ketika kita ingin membaca atau menulis file Excel .xlsx.

Membuat DataFrame

DataFrame adalah struktur data utama di pandas. Bentuknya seperti tabel, yaitu memiliki baris dan kolom.

import pandas as pd

data = pd.DataFrame({
"nama": ["Budi", "Ani", "Citra"],
"nilai": [80, 90, 75],
})

print(data)

Penjelasan: DataFrame dibuat dari dictionary. Key seperti "nama" dan "nilai" akan menjadi nama kolom.

DataFrame juga bisa dibuat dari list bersarang.

import pandas as pd

data = pd.DataFrame(
[
["Budi", 80],
["Ani", 90],
["Citra", 75],
],
columns=["nama", "nilai"],
)

print(data)

Penjelasan: Parameter columns digunakan untuk memberi nama kolom pada DataFrame.

Membaca Data CSV dan Excel

Pandas bisa membaca file CSV menggunakan pd.read_csv().

import pandas as pd

data = pd.read_csv("nilai.csv")

print(data)

Untuk membaca file Excel, gunakan pd.read_excel().

import pandas as pd

data = pd.read_excel("nilai.xlsx")

print(data)

Penjelasan: Setelah file dibaca, hasilnya menjadi DataFrame. DataFrame ini bisa langsung diolah seperti tabel.

Jika Excel memiliki beberapa sheet, kita bisa memilih sheet tertentu.

data = pd.read_excel("nilai.xlsx", sheet_name="Sheet1")

print(data)

Melihat Isi Data

Saat bekerja dengan data, kita tidak selalu perlu menampilkan semua baris. Pandas menyediakan beberapa method untuk melihat ringkasan data.

import pandas as pd

data = pd.read_excel("nilai.xlsx")

print(data.head())
print(data.tail())
print(data.info())

Beberapa method yang sering digunakan:

  • .head() untuk melihat 5 baris pertama.
  • .tail() untuk melihat 5 baris terakhir.
  • .info() untuk melihat informasi kolom dan tipe data.
  • .shape untuk melihat jumlah baris dan kolom.
print(data.shape)

Penjelasan: .shape menghasilkan bentuk (jumlah_baris, jumlah_kolom).

Mengambil Kolom

Kolom pada DataFrame bisa diambil menggunakan nama kolom.

import pandas as pd

data = pd.DataFrame({
"nama": ["Budi", "Ani", "Citra"],
"nilai": [80, 90, 75],
})

print(data["nama"])
print(data["nilai"])

Penjelasan: data["nilai"] mengambil kolom nilai.

Jika ingin mengambil beberapa kolom sekaligus, gunakan list nama kolom.

print(data[["nama", "nilai"]])

Menambahkan Kolom Baru

Pandas memudahkan kita untuk menambahkan kolom baru berdasarkan kolom yang sudah ada.

import pandas as pd

data = pd.DataFrame({
"nama": ["Budi", "Ani", "Citra"],
"nilai": [80, 90, 75],
})

data["status"] = ["Lulus", "Lulus", "Lulus"]

print(data)

Penjelasan: Kolom baru dibuat dengan menulis data["status"], lalu memberi nilai untuk setiap baris.

Kolom baru juga bisa dibuat dari hasil perhitungan.

data["nilai_bonus"] = data["nilai"] + 5

print(data)

Kondisi dengan Pandas

Untuk membuat kolom berdasarkan kondisi, kita bisa menggunakan .apply() dan lambda.

import pandas as pd

data = pd.DataFrame({
"nama": ["Budi", "Ani", "Citra"],
"nilai": [80, 90, 60],
})

data["status"] = data["nilai"].apply(lambda nilai: "Lulus" if nilai >= 75 else "Belum lulus")

print(data)

Penjelasan: .apply() menjalankan fungsi ke setiap nilai pada kolom. Lambda digunakan untuk menentukan status berdasarkan nilai.

Cara lain adalah menggunakan kondisi langsung.

data_lulus = data[data["nilai"] >= 75]

print(data_lulus)

Penjelasan: Kode di atas mengambil baris yang nilai pada kolom nilai lebih besar atau sama dengan 75.

Contoh Rekap Nilai Mahasiswa

Selain data pengukuran, pandas juga bisa digunakan untuk rekap nilai mahasiswa. Misalnya, kita ingin menghitung nilai akhir dari tugas, UTS, dan UAS.

import pandas as pd

data = pd.DataFrame({
"nama": ["Budi", "Ani", "Citra", "Dina"],
"tugas": [80, 90, 75, 70],
"uts": [78, 88, 80, 72],
"uas": [85, 92, 70, 75],
})

data["nilai_akhir"] = (data["tugas"] * 0.3) + (data["uts"] * 0.3) + (data["uas"] * 0.4)
data["status"] = data["nilai_akhir"].apply(lambda nilai: "Lulus" if nilai >= 75 else "Belum lulus")

print(data)

Penjelasan: Nilai akhir dihitung dari bobot tugas, UTS, dan UAS. Setelah itu, kolom status dibuat berdasarkan nilai akhir.

Kita juga bisa mengambil mahasiswa yang lulus saja.

mahasiswa_lulus = data[data["status"] == "Lulus"]

print(mahasiswa_lulus)

Contoh Rekap Kehadiran

Pandas juga cocok untuk data kehadiran. Misalnya, kita ingin mengecek apakah persentase kehadiran mahasiswa sudah memenuhi batas minimal.

import pandas as pd

data = pd.DataFrame({
"nama": ["Budi", "Ani", "Citra", "Dina"],
"hadir": [12, 14, 10, 13],
"total_pertemuan": [14, 14, 14, 14],
})

data["persentase"] = (data["hadir"] / data["total_pertemuan"]) * 100
data["status"] = data["persentase"].apply(lambda nilai: "Memenuhi" if nilai >= 75 else "Tidak memenuhi")

print(data)

Penjelasan: Contoh ini berbeda dari data x1 sampai x5, tetapi alurnya sama: ambil data tabel, hitung kolom baru, lalu tentukan status.

Menghitung Xbar dan R

Jika data memiliki kolom x1 sampai x5, kita bisa menghitung rata-rata baris dan range baris dengan pandas.

import pandas as pd

data = pd.DataFrame({
"x1": [10, 9, 15],
"x2": [12, 10, 14],
"x3": [11, 12, 16],
"x4": [13, 11, 15],
"x5": [14, 13, 17],
})

kolom_x = ["x1", "x2", "x3", "x4", "x5"]

data["xbar"] = data[kolom_x].mean(axis=1)
data["R"] = data[kolom_x].max(axis=1) - data[kolom_x].min(axis=1)

print(data)

Penjelasan: axis=1 berarti perhitungan dilakukan per baris. xbar adalah rata-rata dari x1 sampai x5, sedangkan R adalah selisih nilai terbesar dan terkecil pada baris tersebut.

Menghitung BKA, BKB, dan Status

Setelah mendapatkan xbar dan R, kita bisa menghitung BKA dan BKB.

import pandas as pd

data = pd.DataFrame({
"x1": [10, 9, 15, 11],
"x2": [12, 10, 14, 12],
"x3": [11, 12, 16, 10],
"x4": [13, 11, 15, 13],
"x5": [14, 13, 17, 12],
})

kolom_x = ["x1", "x2", "x3", "x4", "x5"]

data["xbar"] = data[kolom_x].mean(axis=1)
data["R"] = data[kolom_x].max(axis=1) - data[kolom_x].min(axis=1)

rata_rata_xbar = data["xbar"].mean()
rata_rata_r = data["R"].mean()

data["BKA"] = rata_rata_xbar + (0.577 * rata_rata_r)
data["BKB"] = rata_rata_xbar - (0.577 * rata_rata_r)

data["status"] = data.apply(
lambda baris: "Terkendali" if baris["BKB"] <= baris["xbar"] <= baris["BKA"] else "Tidak terkendali",
axis=1,
)

print(data)

Penjelasan: Kolom BKA dan BKB berisi nilai batas yang sama untuk setiap baris. Kolom status dibuat berdasarkan posisi xbar terhadap batas tersebut.

Moving Average dengan Pandas

Moving average bisa dihitung menggunakan .rolling().

import pandas as pd

data = pd.DataFrame({
"nilai": [10, 12, 11, 13, 14, 15],
})

data["MA_3"] = data["nilai"].rolling(window=3).mean()

print(data)

Penjelasan: rolling(window=3) mengambil 3 data berurutan, lalu .mean() menghitung rata-ratanya.

Pada beberapa baris awal, hasil moving average bisa kosong karena jumlah data belum cukup untuk membentuk window.

Menyimpan DataFrame

DataFrame bisa disimpan ke CSV atau Excel.

data.to_csv("hasil.csv", index=False)
data.to_excel("hasil.xlsx", index=False)

Penjelasan: index=False digunakan agar pandas tidak menyimpan index sebagai kolom tambahan.

Jika ingin menyimpan hanya beberapa kolom, pilih kolomnya terlebih dahulu.

kolom_output = ["xbar", "R", "BKA", "BKB", "status"]

data[kolom_output].to_excel("hasil_ringkas.xlsx", index=False)

Contoh Kasus Sederhana

Contoh berikut membaca data dari Excel, menghitung kolom tambahan, lalu menyimpan hasilnya ke Excel baru.

import pandas as pd

data = pd.read_excel("data_pengukuran.xlsx")

kolom_x = ["x1", "x2", "x3", "x4", "x5"]

data["xbar"] = data[kolom_x].mean(axis=1)
data["R"] = data[kolom_x].max(axis=1) - data[kolom_x].min(axis=1)

rata_rata_xbar = data["xbar"].mean()
rata_rata_r = data["R"].mean()

data["BKA"] = rata_rata_xbar + (0.577 * rata_rata_r)
data["BKB"] = rata_rata_xbar - (0.577 * rata_rata_r)

data["status"] = data.apply(
lambda baris: "Terkendali" if baris["BKB"] <= baris["xbar"] <= baris["BKA"] else "Tidak terkendali",
axis=1,
)

data.to_excel("hasil_pengukuran.xlsx", index=False)

Penjelasan: Alur ini dekat dengan soal praktikum: baca data, tambah kolom hasil perhitungan, tentukan status, lalu simpan output.

Latihan Singkat

Coba buat program sederhana dengan ketentuan berikut:

  • Buat DataFrame dengan kolom x1, x2, x3, x4, dan x5.
  • Hitung kolom xbar.
  • Hitung kolom R.
  • Hitung kolom BKA dan BKB.
  • Buat kolom status berisi "Terkendali" atau "Tidak terkendali".
  • Simpan hasil ke file CSV.
  • Simpan hasil ke file Excel.