0Pricing
Pandas & NumPy Academy · Ders

İndeksi Ayarlama ve Sıfırlama

Bir sütunu set_index() ile satır indeksi yapın, reset_index() ile eski hâline getirin ve MultiIndex genel görünümünü kullanın.

İndeksi Ayarlama ve Sıfırlama, CoddyKit'te ücretsiz bir Pandas & NumPy Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Pandas & NumPy Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.

DataFrame Dizini Nedir?

Her Pandas DataFrame'inin, her satıra eklenmiş etiketlerden oluşan bir satır dizini vardır. Varsayılan dizin bir RangeIndex'tir (0, 1, 2, …); ancak bunu tarih, ürün ID'si, kullanıcı ID'si veya benzersiz herhangi bir anahtar gibi doğal bir tanımlayıcı görevi gören bir sütunla değiştirebilirsiniz. Anlamlı bir dizin okunabilirliği artırır, etiket tabanlı dilimlemeyi mümkün kılar ve zaman serilerini yeniden örneklemek için gereklidir.

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() — Bir Sütunu Dizine Dönüştürme

DataFrame.set_index('col'), belirtilen sütunu satır dizinine dönüştürür ve bu sütunu normal sütunlar arasından çıkarır. Sütunun değerleri satır etiketleri olur. Bir sütun doğal anahtar görevi gördüğünde DataFrame'i daha açıklayıcı hâle getirmenin standart yolu budur. Yeni bir DataFrame döndürülür; inplace=True kullanılmadığı sürece özgün DataFrame değişmez.

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')

Özel Dizinle Satır Seçme

Anlamlı bir sütun dizin olduğunda, satırları temiz ve okunabilir bir söz dizimiyle etikete göre almak için .loc[label] kullanabilirsiniz; bunun için Boole maskeleri gerekmez. DatetimeIndex ile df.loc['2024-01'] gibi kısmi tarih dizelerini kullanarak Ocak 2024'teki tüm satırları bile seçebilirsiniz.

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

Birden Çok Sütunla set_index() — MultiIndex

set_index() işlevine sütun adlarından oluşan bir liste geçirmek, bir MultiIndex (hiyerarşik dizin) oluşturur. Ortaya çıkan DataFrame'e .loc[] içinde demetler kullanılarak erişilebilir. MultiIndex; gruplandırılmış zaman serileri (bölge + tarih), panel verileri (konu + zaman) ve iki düzeyli satır gruplaması gerektiren her türlü analiz için vazgeçilmezdir.

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

set_index() İçindeki drop= Parametresi

Varsayılan olarak set_index('col'), sütun dizin olduğunda onu DataFrame'in normal sütunlarından çıkarır. Sütunu yerinde tutarken aynı zamanda dizin olarak kullanmak için drop=False geçirin. Bu, etiket tabanlı erişim istediğiniz ancak sütunun normal sütun alanında hesaplamalar için de kullanılabilir olması gereken durumlarda yararlı olabilir.

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() — Dizini Sütuna Geri Taşıma

reset_index(), set_index() işlevinin tersidir: mevcut satır dizinini normal bir sütuna taşır ve dizini varsayılan RangeIndex ile değiştirir. Bu işlem genellikle bir groupby().agg() sonrasında veya sonraki işlemlerde sütun olarak kullanmanız gereken anlamlı bir dizin oluşturan işlemlerin ardından gerekir.

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)

reset_index() işlevine drop=True geçirmek, mevcut dizini sütuna taşımak yerine tamamen atar. Mevcut dizin anlamlı bilgiler içermediğinde (örneğin satırları filtreledikten sonra dizinde 0, 3, 7 gibi boşluklar oluştuğunda) ve yalnızca 0'dan başlayan temiz, ardışık bir dizin istediğinizde bunu kullanın.

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]

groupby Sonrasında reset_index()

groupby().agg() çağrısından sonra GroupBy anahtarları dizin olur. reset_index() çağrısı bunları normal sütunlara dönüştürerek üzerinde çalışılması, birleştirilmesi veya dışa aktarılması daha kolay düz bir tablo sonucu verir. Bu, reset_index() işlevinin uygulamadaki en yaygın kullanımlarından biridir.

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)

Dizin Adı için rename_axis()

Satır dizininin adı olmadığında veya açıklık için adını değiştirmek istediğinizde, satır dizini için df.rename_axis('new_name'), sütun ekseni için ise df.rename_axis('col_name', axis=1) kullanın. Dizine anlamlı bir ad vermek, özellikle dizin adının sütun başlığına dönüştüğü CSV dışa aktarımlarında çıktının kendi kendini açıklamasını kolaylaştırır.

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

Boşlukları Doldurmak için Yeniden Dizinleme

DataFrame.reindex(new_index), DataFrame'i yeni bir dizinle eşleşecek şekilde yeniden biçimlendirir; yeni dizinde bulunup özgün verilerde bulunmayan konumları NaN ile doldurur. Bu işlem, DataFrames nesnelerini ortak ve eksiksiz bir dizinle hizalamak için kullanılır; örneğin bazı aylarda veri olmasa bile bir yıldaki her ayın görünmesini sağlamak için.

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 ve Düzey Seçimi

MultiIndex içeren bir DataFrame için reset_index(), varsayılan olarak tüm düzeyleri sütunlara geri taşır. Yalnızca belirli düzeyleri sıfırlamak için level= geçirin. Bu, bir düzeyi dizin olarak tutup (örneğin tarihi dizin olarak koruyup) yalnızca diğer düzeyi sütuna taşımak istediğinizde kullanışlıdır.

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

Kısa Kontrol

Dizini ayarlama ve sıfırlama konusundaki anlayışınızı sınayın.

Ders Özeti

Bu derste şunları öğrendiniz: set_index('col') etiket tabanlı erişim için bir sütunu satır dizinine dönüştürür, liste geçirmek bir MultiIndex oluşturur ve reset_index() dizini bir sütuna geri taşır (bunun yerine atmak için drop=True kullanın). Eksik konumları NaN ile doldurarak eksiksiz bir hedef dizinle hizalanmak için reindex() kullanın. Bu teknikler, ilerideki GroupBy ve Birleştirme derslerinin temelini oluşturur.

Sıkça Sorulan Sorular

“İndeksi Ayarlama ve Sıfırlama” dersi ücretsiz mi?

Evet — “İndeksi Ayarlama ve Sıfırlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Pandas & NumPy Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.

“İndeksi Ayarlama ve Sıfırlama” dersinde ne öğreneceğim?

Bir sütunu set_index() ile satır indeksi yapın, reset_index() ile eski hâline getirin ve MultiIndex genel görünümünü kullanın. Pandas & NumPy Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Pandas & NumPy Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Pandas & NumPy Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“İndeksi Ayarlama ve Sıfırlama” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Pandas & NumPy Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Pandas & NumPy Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Sütun Değerlerine Göre Sıralama
  2. İndekse Göre Sıralama
  3. Değerleri Sıralama
  4. İndeksi Ayarlama ve Sıfırlama
← Pandas & NumPy Academy Sayfasına Dön