0Pricing
Pandas & NumPy Academy · Pelajaran

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: int64

set_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 = 150

Parameter 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     30

reset_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 restored

reset_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         300

Mengindeks 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.0

MultiIndex 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      220

Pemeriksaan 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

  1. Mengurutkan Berdasarkan Nilai Kolom
  2. Mengurutkan Berdasarkan Indeks
  3. Memberi Peringkat pada Nilai
  4. Menetapkan dan Mengatur Ulang Indeks
← Kembali ke Pandas & NumPy Academy