pandas'ta tablo satırlarını sıralamak için DataFrame üzerinde
Beklenen çıktı şöyledir:
Burada
Gerçek bir DataFrame üzerinde sıralama yapmak için önce sıralanacak sütunun adını, ardından sıralama yönünü belirleyin.
Not:
Birincil sütunda eşit değerler varsa ikinci bir sütunla sıralamayı kesinleştirebilirsiniz. Örneğin önce
Aşağıdaki ayrım, hangi yöntemi kullanmanız gerektiğini hızlıca belirler:
Buradaki yöntemler aynı işi yapmaz. Örneğin satırların indeks numaralarını düzenlemek istiyorsanız
Sıralanan sütunda
Son kontrol:
sort_values() kullanılır. Belirli bir sütuna göre artan veya azalan sıralama yapabilir, birden fazla sütun için öncelik belirleyebilir ve eksik değerlerin konumunu seçebilirsiniz. Aşağıdaki örnekte tablo, puan sütununa göre büyükten küçüğe sıralanır.
Python:
import pandas as pd
df = pd.DataFrame({
"ad": ["Ali", "Buse", "Cem"],
"puan": [72, 91, 84]
})
sirali_df = df.sort_values(by="puan", ascending=False)
print(sirali_df)
Beklenen çıktı şöyledir:
Kod:
ad puan
1 Buse 91
2 Cem 84
0 Ali 72
Burada
ascending=False azalan sıralamayı, yani büyük değerden küçük değere sıralamayı belirtir. Varsayılan değer True olduğu için ascending yazılmazsa sıralama küçükten büyüğe yapılır.Bir sütuna göre sıralama
Gerçek bir DataFrame üzerinde sıralama yapmak için önce sıralanacak sütunun adını, ardından sıralama yönünü belirleyin.
- DataFrame'i hazırlayın. Sıralamak istediğiniz sütunun gerçekten tabloda bulunduğundan emin olun; örneğin sütun adı
puanolmalıdır. - Sıralama sütununu belirtin.
df.sort_values(by="puan")ifadesi puanları küçükten büyüğe sıralar. - Sıralama yönünü seçin. Büyük değerlerin üstte görünmesi için
ascending=Falseekleyin. - Sonucu saklayın veya kullanın.
sirali_df = ...biçiminde yeni bir değişkene atarsanız özgündfdeğişmeden kalır.
inplace=True kullanıldığında ise sıralama doğrudan mevcut DataFrame'e uygulanır:
Python:
df.sort_values(by="puan", ascending=False, inplace=True)
Not:
inplace=True kullanıldığında yöntem yeni bir DataFrame döndürmez. Bu nedenle aynı ifadeyi sirali_df = df.sort_values(..., inplace=True) şeklinde kullanmayın; sirali_df değeri None olur.Birden fazla sütuna göre sıralama
Birincil sütunda eşit değerler varsa ikinci bir sütunla sıralamayı kesinleştirebilirsiniz. Örneğin önce
sinif değerlerini küçükten büyüğe, aynı sınıftaki öğrencileri ise puan değerlerine göre büyükten küçüğe sıralamak için sütunları ve yönleri listeler hâlinde verin.
Python:
ornek_df = pd.DataFrame({
"ad": ["Ali", "Buse", "Cem"],
"sinif": [1, 1, 2],
"puan": [72, 91, 84]
})
sirali_df = ornek_df.sort_values(
by=["sinif", "puan"],
ascending=[True, False]
)
by listesindeki ilk sütun birincil ölçüttür. ascending listesindeki yönler aynı sırayla uygulanır. Bu nedenle iki sütun için iki yön belirtmek, hangi sütunun hangi yönde sıralanacağını açıkça gösterir.Aşağıdaki ayrım, hangi yöntemi kullanmanız gerektiğini hızlıca belirler:
| İhtiyaç | Kullanılacak yöntem | Sonuç |
|---|---|---|
| Bir sütundaki değerlere göre sıralama | sort_values(by="sütun") | Satırlar sütun değerlerine göre sıralanır. |
| Birden fazla sütuna göre sıralama | sort_values(by=[...]) | Sütunlar öncelik sırasıyla değerlendirilir. |
| Satır indeksine göre sıralama | sort_index() | Satırlar indeks değerlerine göre sıralanır. |
sort_index() kullanın; bir sütundaki maaş, tarih veya puan değerlerine göre sıralama yapmak istiyorsanız sort_values() kullanın.Eksik değerler ve indeks numaraları
Sıralanan sütunda
NaN değerleri varsa bunların sona veya başa alınmasını na_position ile belirleyebilirsiniz:
Python:
sirali_df = df.sort_values(
by="puan",
ascending=False,
na_position="last"
)
na_position="last" eksik değerleri sona, na_position="first" ise başa yerleştirir. Sıralama sonrasında eski indeks numaraları korunur. Sonucun 0'dan başlayan yeni bir indeks kullanmasını istiyorsanız reset_index(drop=True) ekleyin:
Python:
sirali_df = (
df.sort_values(by="puan", ascending=False)
.reset_index(drop=True)
)
Son kontrol:
sirali_df.head() ile ilk satırları görüntüleyin ve sıralama sütununun beklenen yönde olduğunu kontrol edin. Satırlar yanlış görünüyorsa öncelikle by içinde yazılan sütun adını, ascending değerini ve sütundaki sayıların gerçekten sayısal veri olarak tutulup tutulmadığını inceleyin.
Son düzenleme: