Pandas dataframe'i tarihe göre sıralama (örneklerle)
Çoğu zaman bir pandanın DataFrame’ini tarihleri içeren bir sütuna göre sıralamak isteyebilirsiniz. Neyse ki sort_values() işlevini kullanarak bunu yapmak kolaydır.
Bu eğitimde bu işlevin pratik kullanımına ilişkin birkaç örnek gösterilmektedir.
Örnek 1: Tarih sütununa göre sıralama
Aşağıdaki pandalara sahip olduğumuzu varsayalım DataFrame:
import pandas as pd #createDataFrame df = pd.DataFrame({'sales': [4, 11, 13, 9], 'customers': [2, 6, 9, 7], 'date': ['2020-01-25', '2020-01-18', '2020-01-22', '2020-01-21']}) #view DataFrame print (df) sales customers date 0 4 2 2020-01-25 1 11 6 2020-01-18 2 13 9 2020-01-22 3 9 7 2020-01-21
Öncelikle ‘date’ sütununu bir datetime nesnesine dönüştürmek için to_datetime() fonksiyonunu kullanmamız gerekir:
df[' date '] = pd. to_datetime (df[' date '])
Daha sonra, sort_values() işlevini kullanarak DataFrame’i ‘tarih’ sütununa göre sıralayabiliriz:
df. sort_values (by=' date ') sales customers date 1 11 6 2020-01-18 3 9 7 2020-01-21 2 13 9 2020-01-22 0 4 2 2020-01-25
Varsayılan olarak bu işlev tarihleri artan düzende sıralar. Ancak azalan düzende sıralamak için artan=Yanlış seçeneğini belirleyebilirsiniz:
df. sort_values (by=' date ', ascending= False ) sales customers date 0 4 2 2020-01-25 2 13 9 2020-01-22 3 9 7 2020-01-21 1 11 6 2020-01-18
Örnek 2: birden fazla tarih sütununa göre sıralama
Aşağıdaki pandalara sahip olduğumuzu varsayalım DataFrame:
import pandas as pd #createDataFrame df = pd.DataFrame({'person': ['A', 'B', 'C', 'D'], 'order_date': ['2020-01-15', '2020-01-15', '2020-01-20', '2020-01-20'], 'receive_date': ['2020-01-25', '2020-01-18', '2020-01-22', '2020-01-21']}) #view DataFrame print (df) person order_date receive_date 0 A 2020-01-15 2020-01-25 1 B 2020-01-15 2020-01-18 2 C 2020-01-20 2020-01-22 3 D 2020-01-20 2020-01-21
Fonksiyona basitçe birden fazla sütun adı sağlayarak DataFrame’i birden çok sütunda sıralamak için sort_values işlevini kullanabiliriz:
#convert both date columns to datetime objects df[['order_date','receive_date']] = df[['order_date','receive_date']]. apply (pd. to_datetime ) #sort DateFrame by order_date, then by receive_date df. sort_values (by=['order_date', 'receive_date']) person order_date receive_date 1 B 2020-01-15 2020-01-18 0 A 2020-01-15 2020-01-25 3 D 2020-01-20 2020-01-21 2 C 2020-01-20 2020-01-22
DataFrame artık order_date’e göre artan sırada, daha sonra da makbuz_tarihine göre artan sırada sıralanıyor.
Ek kaynaklar
Pandas DataFrame satırlarını tarihe göre filtreleme
Pandalar’da DateTime’ı tarihe nasıl dönüştürebilirim?
Pandalar’da sütunları DateTime’a dönüştürme
Pandalar’da hem dizine hem de sütuna göre sıralama nasıl yapılır