Menetapkan dan Mengatur Ulang Indeks
Jadikan sebuah kolom sebagai indeks baris dengan set_index(), kembalikan menjadi kolom dengan reset_index(), dan gunakan gambaran umum MultiIndex.
Menetapkan dan Mengatur Ulang Indeks adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Apa Itu Indeks DataFrame?
Setiap DataFrame Pandas memiliki indeks baris — sekumpulan label yang melekat pada setiap baris. Indeks bawaan adalah RangeIndex (0, 1, 2, …), tetapi Anda dapat menggantinya dengan kolom apa pun yang berfungsi sebagai pengenal alami: tanggal, ID produk, ID pengguna, atau kunci unik apa pun. Indeks yang bermakna meningkatkan keterbacaan, memungkinkan pemotongan berbasis label, dan diperlukan untuk pengambilan sampel ulang deret waktu.
import pandas as pd
df = pd.DataFrame({
'date': ['2024-01-01', '2024-01-02', '2024-01-03'],
'sales': [100, 200, 150]
})
print('Default index:', df.index.tolist()) # [0, 1, 2]
print(df)set_index() — Mempromosikan Kolom
DataFrame.set_index('col') mempromosikan kolom yang ditentukan menjadi indeks baris dan menghapusnya dari kolom biasa. Nilai-nilai kolom tersebut menjadi label baris. Ini adalah cara standar untuk membuat DataFrame lebih ekspresif ketika satu kolom berfungsi sebagai kunci alami. DataFrame baru dikembalikan; data asli tidak berubah kecuali inplace=True digunakan.
import pandas as pd
df = pd.DataFrame({
'date': ['2024-01-01', '2024-01-02', '2024-01-03'],
'sales': [100, 200, 150]
})
df = df.set_index('date')
print(df)
# sales
# date
# 2024-01-01 100
# 2024-01-02 200
# 2024-01-03 150
print(df.index) # Index(['2024-01-01', ...], dtype='object', name='date')Memilih Baris dengan Indeks Kustom
Setelah kolom yang bermakna dijadikan indeks, Anda dapat menggunakan .loc[label] untuk mengambil baris berdasarkan label dengan sintaks yang bersih dan mudah dibaca — tanpa memerlukan masker boolean. Untuk DatetimeIndex, Anda bahkan dapat menggunakan string tanggal sebagian seperti df.loc['2024-01'] untuk memilih semua baris pada Januari 2024.
import pandas as pd
df = pd.DataFrame({
'product': ['A', 'B', 'C'],
'price': [10, 20, 30],
'stock': [100, 50, 75]
})
df = df.set_index('product')
# Access row by label
print(df.loc['B'])
# price 20
# stock 50
# Name: B, dtype: int64set_index() dengan Beberapa Kolom — MultiIndex
Meneruskan daftar nama kolom ke set_index() akan membuat MultiIndex (indeks hierarkis). DataFrame yang dihasilkan dapat diakses menggunakan tupel dalam .loc[]. MultiIndex penting untuk deret waktu yang dikelompokkan (wilayah + tanggal), data panel (subjek + waktu), dan analisis apa pun yang memerlukan pengelompokan baris dua tingkat.
import pandas as pd
df = pd.DataFrame({
'region': ['East', 'East', 'West', 'West'],
'year': [2023, 2024, 2023, 2024],
'revenue': [100, 150, 200, 220]
})
df = df.set_index(['region', 'year'])
print(df)
# revenue
# region year
# East 2023 100
# 2024 150
# West 2023 200
# 2024 220
print(df.loc[('East', 2024)]) # revenue = 150Parameter drop= dalam set_index()
Secara bawaan, set_index('col') menghapus kolom dari kolom biasa DataFrame setelah kolom tersebut menjadi indeks. Teruskan drop=False untuk mempertahankan kolom sekaligus menggunakannya sebagai indeks. Ini terkadang berguna ketika Anda menginginkan akses berbasis label, tetapi juga memerlukan kolom tersebut untuk perhitungan di ruang kolom biasa.
import pandas as pd
df = pd.DataFrame({'id': [1, 2, 3], 'value': [10, 20, 30]})
# Keep 'id' as both index and column
df_with_both = df.set_index('id', drop=False)
print(df_with_both)
# id value
# id
# 1 1 10
# 2 2 20
# 3 3 30reset_index() — Memindahkan Indeks Kembali Menjadi Kolom
reset_index() adalah kebalikan dari set_index(): metode ini memindahkan indeks baris saat ini kembali menjadi kolom biasa dan mengganti indeks dengan RangeIndex bawaan. Cara ini umum diperlukan setelah groupby().agg() atau setelah operasi yang menghasilkan indeks bermakna yang perlu digunakan sebagai kolom dalam pemrosesan lanjutan.
import pandas as pd
df = pd.DataFrame({'sales': [100, 200]}, index=['East', 'West'])
df.index.name = 'region'
reset = df.reset_index()
print(reset)
# region sales
# 0 East 100
# 1 West 200
print(reset.index.tolist()) # [0, 1] — default RangeIndex restoredreset_index(drop=True)
Meneruskan drop=True ke reset_index() akan membuang indeks saat ini sepenuhnya, bukan memindahkannya ke kolom. Gunakan ini ketika indeks saat ini tidak menyimpan informasi yang bermakna (misalnya, setelah memfilter baris, indeks memiliki celah seperti 0, 3, 7) dan Anda hanya menginginkan indeks sekuensial bersih yang dimulai dari 0.
import pandas as pd
df = pd.DataFrame({'x': [10, 20, 30, 40, 50]})
filtered = df[df['x'] > 15]
print('Filtered index:', filtered.index.tolist()) # [1, 2, 3, 4]
# Drop the old index — don't move it to a column
clean = filtered.reset_index(drop=True)
print('Clean index:', clean.index.tolist()) # [0, 1, 2, 3]reset_index() Setelah groupby
Setelah memanggil groupby().agg(), kunci pengelompokan menjadi indeks. Memanggil reset_index() mengubahnya kembali menjadi kolom biasa, sehingga menghasilkan hasil tabular datar yang lebih mudah digunakan, digabungkan, atau diekspor. Ini adalah salah satu penggunaan reset_index() yang paling umum dalam praktik.
import pandas as pd
df = pd.DataFrame({
'dept': ['Eng', 'HR', 'Eng', 'Sales', 'HR'],
'salary': [90000, 50000, 80000, 70000, 55000]
})
# After groupby, dept becomes the index
agg = df.groupby('dept')['salary'].mean()
print(type(agg), agg.index.tolist())
# dept is the index
# Reset makes dept a regular column again
result = agg.reset_index()
result.columns = ['dept', 'avg_salary']
print(result)rename_axis() untuk Nama Indeks
Ketika indeks baris belum memiliki nama, atau ketika Anda ingin mengganti namanya agar lebih jelas, gunakan df.rename_axis('new_name') (untuk indeks baris) atau df.rename_axis('col_name', axis=1) (untuk sumbu kolom). Memberikan nama yang bermakna pada indeks membuat keluaran lebih mudah dipahami tanpa dokumentasi tambahan, terutama saat mengekspor ke CSV karena nama indeks menjadi tajuk kolom.
import pandas as pd
df = pd.DataFrame({'sales': [100, 200, 300]}, index=['A', 'B', 'C'])
print(df.index.name) # None
# Name the index
df = df.rename_axis('region')
print(df)
# sales
# region
# A 100
# B 200
# C 300Mengindeks Ulang untuk Mengisi Celah
DataFrame.reindex(new_index) membentuk ulang DataFrame agar sesuai dengan indeks baru, dengan mengisi posisi yang ada dalam indeks baru tetapi tidak ada dalam data asli menggunakan NaN. Ini digunakan untuk menyelaraskan DataFrames ke indeks lengkap yang sama — misalnya, memastikan setiap bulan dalam setahun muncul meskipun tidak ada data untuk beberapa bulan.
import pandas as pd
df = pd.DataFrame({
'month': ['Jan', 'Mar', 'Jun'],
'revenue': [100, 200, 300]
}).set_index('month')
all_months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
complete = df.reindex(all_months)
print(complete)
# revenue
# Jan 100.0
# Feb NaN <- filled with NaN
# Mar 200.0
# Apr NaN
# May NaN
# Jun 300.0MultiIndex reset_index dan Pemilihan Tingkat
Untuk DataFrame MultiIndex, reset_index() secara bawaan memindahkan semua tingkat kembali menjadi kolom. Teruskan level= untuk mengatur ulang hanya tingkat tertentu. Ini berguna ketika Anda ingin mempertahankan satu tingkat sebagai indeks (misalnya, mempertahankan tanggal sebagai indeks) dan memindahkan hanya tingkat lainnya menjadi kolom.
import pandas as pd
df = pd.DataFrame(
{'revenue': [100, 150, 200, 220]},
index=pd.MultiIndex.from_tuples(
[('East', 2023), ('East', 2024), ('West', 2023), ('West', 2024)],
names=['region', 'year']
)
)
# Reset only the 'year' level, keep 'region' as index
df2 = df.reset_index(level='year')
print(df2)
# year revenue
# region
# East 2023 100
# East 2024 150
# West 2023 200
# West 2024 220Pemeriksaan Singkat
Uji pemahaman Anda tentang menetapkan dan mengatur ulang indeks.
Ringkasan Pelajaran
Dalam pelajaran ini, Anda mempelajari bahwa set_index('col') mempromosikan kolom menjadi indeks baris untuk akses berbasis label, meneruskan daftar akan membuat MultiIndex, dan reset_index() memindahkan indeks kembali menjadi kolom (gunakan drop=True untuk membuangnya). Gunakan reindex() untuk menyelaraskan data dengan indeks target lengkap sambil mengisi posisi yang hilang menggunakan NaN. Teknik-teknik ini menjadi dasar untuk pelajaran GroupBy dan Penggabungan berikutnya.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menetapkan dan Mengatur Ulang Indeks” gratis?
Ya — teks lengkap “Menetapkan dan Mengatur Ulang Indeks” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menetapkan dan Mengatur Ulang Indeks”?
Jadikan sebuah kolom sebagai indeks baris dengan set_index(), kembalikan menjadi kolom dengan reset_index(), dan gunakan gambaran umum MultiIndex. Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?
Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Menetapkan dan Mengatur Ulang Indeks” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?
Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengurutkan Berdasarkan Nilai Kolom
- Mengurutkan Berdasarkan Indeks
- Memberi Peringkat pada Nilai
- Menetapkan dan Mengatur Ulang Indeks