Kurs
Bir DataFrame’de ilginç veri parçalarını bulmak, satırların sırasını değiştirirseniz çoğu zaman daha kolay olur. Satırları, bir sütun adını .sort_values()’a geçirerek sıralayabilirsiniz.
Satırların aynı değere sahip olduğu durumlarda (kategorik bir değişkene göre sıraladığınızda yaygındır), eşitlikleri başka bir sütuna göre sıralayarak bozmak isteyebilirsiniz. Bu şekilde bir sütun adları listesi geçirerek birden çok sütuna göre sıralama yapabilirsiniz.

sort_values() ile Satırları Sütun Değerlerine Göre Sıralama
Satırları sıralayarak DataFrame’in en tepesine en ilginç verilerin gelmesini sağlayabilirsiniz.
Tek bir sütuna göre sıralama
Örneğin, dogs DataFrame’inin weight_kg sütununa sort_values() uyguladığımızda, en hafif köpek en üstte, Chihuahua cinsi Stella; en ağır köpek ise en altta, Saint Bernard cinsi Bernie olur.
dogs.sort_values("weight_kg")
name breed color height_cm weight_kg date_of_birth
5 Stella Chihuahua Tan 18 2 2015-04-20
3 Cooper Schnauzer Gray 49 17 2011-12-11
0 Bella Labrador Brown 56 24 2013-07-01
1 Charlie Poodle Black 43 24 2016-09-16
2 Lucy Chow Chow Brown 46 24 2014-08-25
4 Max Labrador Black 59 29 2017-01-20
6 Bernie St. Bernard White 77 74 2018-02-27
ascending argümanını False yaparsanız veriler ters yönde, en ağırdan en hafife doğru sıralanır.
dogs.sort_values("weight_kg", ascending=False)
name breed color height_cm weight_kg date_of_birth
6 Bernie St. Bernard White 77 74 2018-02-27
4 Max Labrador Black 59 29 2017-01-20
0 Bella Labrador Brown 56 24 2013-07-01
1 Charlie Poodle Black 43 24 2016-09-16
2 Lucy Chow Chow Brown 46 24 2014-08-25
3 Cooper Schnauzer Gray 49 17 2011-12-11
5 Stella Chihuahua Tan 18 2 2015-04-20
Birden çok sütuna göre sıralama
sort_values’a bir sütun adları listesi geçirerek birden çok değişkene göre sıralama yapabiliriz. Burada önce ağırlığa, sonra boya göre sıralıyoruz. Artık Charlie, Lucy ve Bella aynı ağırlıkta olsalar da kısadan uzuna doğru sıralanmış durumda.
dogs.sort_values(["weight_kg", "height_cm"])
name breed color height_cm weight_kg date_of_birth
5 Stella Chihuahua Tan 18 2 2015-04-20
3 Cooper Schnauzer Gray 49 17 2011-12-11
1 Charlie Poodle Black 43 24 2016-09-16
2 Lucy Chow Chow Brown 46 24 2014-08-25
0 Bella Labrador Brown 56 24 2013-07-01
4 Max Labrador Black 59 29 2017-01-20
6 Bernie St. Bernard White 77 74 2018-02-27
Sıralama yönlerini değiştirmek için ascending argümanına bir liste geçirerek her değişken için sıralamanın hangi yönde yapılacağını belirtebilirsiniz. Artık Charlie, Lucy ve Bella uzundan kısaya doğru sıralandı.
dogs.sort_values(["weight_kg", "height_cm"], ascending=[True, False])
name breed color height_cm weight_kg date_of_birth
5 Stella Chihuahua Tan 18 2 2015-04-20
3 Cooper Schnauzer Gray 49 17 2011-12-11
0 Bella Labrador Brown 56 24 2013-07-01
2 Lucy Chow Chow Brown 46 24 2014-08-25
1 Charlie Poodle Black 43 24 2016-09-16
4 Max Labrador Black 59 29 2017-01-20
6 Bernie St. Bernard White 77 74 2018-02-27
sort_index() ile Satır İndeksine Göre Sıralama
Bazen, belirli sütunlar yerine satır etiketlerine (yani DataFrame’in indeksine) göre yeniden sıralama yapmak isteyebilirsiniz. Böyle bir durumda, sort_values() yerine sort_index() yöntemini kullanabilirsiniz. Unutmayın, varsayılan olarak sort_index() satırlarınızı indekslerine göre artan düzende sıralar:
# Satırları indekslerine göre sırala (artan)
dogs_sorted = dogs.sort_index()
print(dogs_sorted)
Satırları azalan düzende sıralamanız gerekiyorsa, sadece ascending=False geçin:
# Satırları indekslerine göre sırala (azalan)
dogs_sorted_desc = dogs.sort_index(ascending=False)
print(dogs_sorted_desc)
Benzer şekilde, çok seviyeli (hiyerarşik) bir indeksiniz varsa, sort_index() birden çok seviyeyi sıralayarak bunu da halledebilir. level veya ascending parametrelerine bir liste geçirmeniz yeterlidir (tıpkı az önce sort_values() için liste geçmemiz gerektiği gibi):
# Çok seviyeli bir indeksin birden çok seviyesine göre satırları sırala
dogs_sorted_multi = dogs.sort_index(level=[0, 1], ascending=[True, False])
print(dogs_sorted_multi)
Pandas Sort Values Etkileşimli Örnek
Aşağıdaki örnekte, homelessness DataFrame’ini evsiz birey sayısına göre, küçükten büyüğe sıralayacak ve bunu homelessness_ind olarak kaydedeceksiniz. Son olarak, sıralanmış DataFrame’in başını yazdıracaksınız.
# Sort homelessness by individuals
homelessness_ind = homelessness.sort_values("individuals")
# Print the top few rows
print(homelessness_ind.head())
Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonuç üretilir:
region state individuals family_members state_pop
50 Mountain Wyoming 434.0 205.0 577601
34 West North Central North Dakota 467.0 75.0 758080
7 South Atlantic Delaware 708.0 374.0 965479
39 New England Rhode Island 747.0 354.0 1058287
45 New England Vermont 780.0 511.0 624358
Verileri sıralama ve alt kümelere ayırma hakkında daha fazla bilgi edinmek için, pandas ile Veri Manipülasyonu kursumuzdaki bu videoya bakın.
Bu içerik, Maggie Matsui ve Richie Cotton’ın hazırladığı DataCamp’in pandas ile Veri Manipülasyonu kursundan alınmıştır.
İleri Düzey Öğrenme
Bu yazıda, diğerlerinin yanı sıra, sort_index() ile sort_values()’ın ne zaman kullanılacağını öğrendik: Satırları sütun değerlerine göre yeniden sıralamak istediğinizde sort_values() kullanın; satır etiketlerine (DataFrame’in indeksi) göre yeniden sıralamak istediğinizde sort_index() kullanın.
Öğrenmeye devam edebilmeniz için birçok başka faydalı pandas eğitimiz var; bunlar arasında pratik yapmaya devam edebilmeniz için Yeni Başlayanlar için Nihai pandas Rehberi de bulunuyor. Ayrıca yaygın sorunlar için başka nasıl yapılır içeriklerimiz de var; örneğin CSV Verilerini Pandas’a Nasıl Aktarırsınız ve Pandas’ta DataFrame’ler Nasıl Birleştirilir. Ayrıca, becerilerinizi geliştirmeye devam etmek için Python Programlama yetkinlik yolumuzu almayı unutmayın.
