Penggantian Nama dan Pengurutan

Mengganti nama kolom dan index, mengurutkan ulang, serta menata ulang struktur tabel.

Daftar isi

Nama kolom yang terlalu teknis dan urutan baris yang acak sering menghalangi pembacaan tabel meskipun isinya sudah benar. Topik ini membahas penggantian nama dengan rename, pengaturan index dengan set_index dan reset_index, pengurutan dengan sort_values dan sort_index, serta penataan ulang label dengan reindex. Bagian penutup menerapkan seluruhnya pada dataset log sensor tiga ruangan sehingga tabelnya siap dibaca.

Mengganti nama kolom dengan rename#

Metode rename(columns=...) mengganti nama kolom sesuai kamus pemetaan yang diberikan dan mengembalikan DataFrame baru. DataFrame asalnya tidak berubah, sebagaimana terbukti pada contoh berikut, sehingga hasilnya selalu ditampung ke variabel. Contoh berikut mengganti nama dua kolom pengukuran pada tabel kecil.

python Contoh: rename mengembalikan tabel baru
import pandas as pd

df = pd.DataFrame(
    {"suhu_c": [24.1, 25.0, 23.8], "lembap_pct": [60.2, 58.7, 61.0]},
    index=["Lab A", "Lab B", "Arsip"],
)
baru = df.rename(columns={"suhu_c": "suhu", "lembap_pct": "lembap"})
print(baru.columns.tolist())
print(df.columns.tolist())
text Keluaran
['suhu', 'lembap']
['suhu_c', 'lembap_pct']

Keluaran pertama memperlihatkan kolom hasil pemetaan, yaitu suhu dan lembap, sedangkan keluaran kedua membuktikan kolom df masih bernama suhu_c dan lembap_pct. Kolom yang tidak disebut dalam kamus tetap memakai namanya semula, sehingga pemetaan boleh menyasar sebagian kolom saja. Metode yang sama menerima argumen index berisi pemetaan untuk label baris, dan bentuk pemanggilannya persis sama. Nama kolom yang pendek membuat seleksi seperti df["suhu"] lebih ringan ditulis daripada df["suhu_c"], dan konsistensi nama juga memudahkan penggabungan dengan tabel lain pada topik merge: Join Gaya SQL.

Perlu dicatat bahwa pemetaan terhadap nama kolom yang tidak ada diabaikan tanpa error. Rename dengan kamus yang salah ketik, misalnya kunci suhuu untuk kolom suhu_c, menghasilkan tabel dengan nama yang tidak berubah dan tanpa pesan apa pun. Karena itu, periksa daftar kolom hasil pemetaan lewat df.columns.tolist() setelah setiap rename pada data yang kolomnya banyak, agar kesalahan ketik segera terlihat sebelum tahap berikutnya masih menemukan nama lama.

Mengatur index dengan set_index dan reset_index#

Metode set_index memindahkan satu kolom menjadi label baris, dan metode reset_index mengembalikan index menjadi kolom biasa. Keduanya mengembalikan objek baru dan tidak mengubah tabel asalnya. Perpindahan kolom waktu menjadi index sering dilakukan pada data berurut waktu agar pemotongan rentang menjadi mudah.

python Contoh: set_index dan reset_index
import pandas as pd

df = pd.DataFrame({"waktu": ["07:00", "07:15", "07:30"], "suhu_c": [24.1, 23.8, 25.0]})
df = df.set_index("waktu")
print(df)
df = df.reset_index()
print(df)
text Keluaran
       suhu_c
waktu
07:00    24.1
07:15    23.8
07:30    25.0
   waktu  suhu_c
0  07:00    24.1
1  07:15    23.8
2  07:30    25.0

Pada keluaran pertama, kolom waktu hilang dari tubuh tabel dan namanya berpindah menjadi judul index di sisi kiri, sehingga baris dikenali lewat pukulannya. Pada keluaran kedua, reset_index() mengembalikan waktu sebagai kolom biasa dan index kembali menjadi RangeIndex 0 sampai 2. Tanda bawah pada baris waktu di keluaran pertama adalah garis pemisah yang dicetak pandas antara nama index dan tubuh tabel. Pengolahan index bertipe waktu secara khusus dibahas pada topik Konversi datetime dan DatetimeIndex.

Mengurutkan nilai dan index#

Metode sort_values(by=...) mengurutkan baris berdasarkan nilai satu kolom atau lebih, sedangkan sort_index mengurutkan baris berdasarkan label indexnya. Argumen ascending=False membalik urutan menjadi menurun, dan keduanya juga mengembalikan tabel baru. Metode reindex melengkapi pasangannya dengan menyusun ulang baris mengikuti daftar label yang diberikan.

python Contoh: sort_values, sort_index, dan reindex
import pandas as pd

df = pd.DataFrame(
    {"suhu_c": [24.1, 25.0, 23.8], "lembap_pct": [60.2, 58.7, 61.0]},
    index=["Lab A", "Lab B", "Arsip"],
)
print(df.sort_values(by="suhu_c", ascending=False))
print(df.sort_index())
print(df.reindex(["Arsip", "Lab A", "Ruang Kelas"]))
text Keluaran
       suhu_c  lembap_pct
Lab B    25.0        58.7
Lab A    24.1        60.2
Arsip    23.8        61.0
       suhu_c  lembap_pct
Arsip    23.8        61.0
Lab A    24.1        60.2
Lab B    25.0        58.7
             suhu_c  lembap_pct
Arsip          23.8        61.0
Lab A          24.1        60.2
Ruang Kelas     NaN         NaN

Pengurutan menurun menempatkan suhu 25.0 milik Lab B pada baris pertama, dan seluruh kolomnya ikut berpindah sebagai satu baris, sehingga tabel tetap utuh. sort_index() mengurutkan label secara alfabetis, yaitu Arsip, Lab A, dan Lab B, terlepas dari nilai suhunya. reindex menyusun baris mengikuti daftar label yang diberikan dan mengisi baris dengan label yang tidak dikenal, yaitu Ruang Kelas, dengan NaN. Baris bertipe NaN pada hasil pengurutan ditempatkan di bagian akhir secara default, dan perilaku itu diatur lewat argumen na_position pada sort_values.

Argumen by juga menerima list untuk pengurutan berjenjang, dan ascending menerima list yang panjangnya sama untuk mengatur arah tiap jenjang. Contoh berikut mengurutkan kelembapan menaik terlebih dahulu, lalu mengurutkan suhu menurun untuk baris yang kelembapannya sama.

python Contoh: pengurutan berdasarkan dua kolom
import pandas as pd

df = pd.DataFrame(
    {"suhu_c": [24.1, 25.0, 23.8, 22.9], "lembap_pct": [60.2, 58.7, 61.0, 58.7]},
    index=["Lab A", "Lab B", "Arsip", "Gudang"],
)
print(df.sort_values(by=["lembap_pct", "suhu_c"], ascending=[True, False]))
text Keluaran
        suhu_c  lembap_pct
Lab B     25.0        58.7
Gudang    22.9        58.7
Lab A     24.1        60.2
Arsip     23.8        61.0

Baris Lab B dan Gudang sama-sama memuat kelembapan 58.7, dan jenjang kedua memutus seri itu dengan suhu menurun sehingga 25.0 mendahului 22.9. Dua baris sisanya mengikuti urutan kelembapan 60.2 dan 61.0 yang tidak seri. Pola berjenjang seperti ini lazim dipakai pada data log, misalnya mengurutkan per ruangan lalu per waktu, dengan arah masing-masing jenjang diatur pada list ascending.

Penerapan pada dataset kontrak#

Langkah penataan pada dataset kontrak menggabungkan rename dan sort_values untuk menghasilkan tabel lima teratas berdasarkan suhu. Skrip berikut membangun kembali dataset log sensor dengan generator dan seed yang sama, mengganti nama dua kolom pengukuran, lalu mengurutkannya secara menurun.

python penataan.py
import numpy as np
import pandas as pd

# Generator dataset kontrak: log sensor suhu dan kelembapan tiga ruangan
rng = np.random.default_rng(42)
n = 96
df = pd.DataFrame({
    "waktu": pd.date_range("2026-01-05 07:00", periods=n, freq="15min"),
    "ruang": rng.choice(["Lab A", "Lab B", "Ruang Arsip"], n, p=[0.4, 0.35, 0.25]),
    "suhu_c": np.round(rng.normal(24, 1.5, n), 1),
    "lembap_pct": np.round(rng.normal(60, 5, n), 1),
    "status_sensor": rng.choice(["normal", "kalibrasi", "rusak"], n, p=[0.85, 0.10, 0.05]),
})
df.loc[rng.random(n) < 0.05, "suhu_c"] = np.nan

# ganti nama dua kolom hasil pengukuran
df = df.rename(columns={"suhu_c": "suhu", "lembap_pct": "lembap"})
print(df.columns.tolist())

# urutkan berdasarkan suhu menurun, tampilkan lima teratas
tertinggi = df.sort_values(by="suhu", ascending=False)
print(tertinggi.head())
bash
# jalankan penataan nama dan urutan pada dataset kontrak
python3 penataan.py
text Keluaran
['waktu', 'ruang', 'suhu', 'lembap', 'status_sensor']
                 waktu        ruang  suhu  lembap status_sensor
45 2026-01-05 18:15:00  Ruang Arsip  28.4    56.7        normal
68 2026-01-06 00:00:00        Lab A  27.2    59.3        normal
44 2026-01-05 18:00:00  Ruang Arsip  27.0    56.4        normal
61 2026-01-05 22:15:00        Lab B  26.7    61.7        normal
95 2026-01-06 06:45:00        Lab B  26.5    57.6        normal

Keluaran pertama menyatakan kolom kini berlabel suhu dan lembap, dan label pendek itu langsung dipakai pada argumen by="suhu" di baris berikutnya. Tabel lima teratas menempatkan suhu 28.4 pada Ruang Arsip pukul 18:15 di urutan pertama, disusul 27.2 milik Lab A dan tiga baris berikutnya di atas 26 derajat. Nomor index 45, 68, dan 44 memperlihatkan posisi asli barisnya sebelum diurutkan, sehingga baris masih dapat dilacak kembali ke tabel sumber. Dengan tabel yang sudah terurut menurun ini, lima pengukuran tertinggi siap dibaca atau dilaporkan tanpa langkah tambahan.

Ringkasan#

  • rename(columns=...) mengganti nama kolom lewat kamus pemetaan dan mengembalikan tabel baru tanpa mengubah asalnya.
  • set_index memindahkan kolom menjadi label baris, sedangkan reset_index mengembalikannya menjadi kolom dengan RangeIndex.
  • sort_values(by=..., ascending=...) mengurutkan berdasarkan nilai dengan NaN di akhir secara default, sort_index berdasarkan label, dan reindex menyusun ulang baris mengikuti daftar label yang diberikan.
  • Penataan nama yang pendek membuat argumen pengurutan dan seleksi kolom lebih ringkas pada dataset bersambung.

Referensi#