Pandas - sum operatörü

sum() Metodu

Python'dan toplam değeri bulmak için kullanmaya aşina olduğumuz sum() fonksiyonu, Pandas içerisinde metot olarak bulunuyor. Yani Python'da sum() fonksiyonuna parametre olarak bir değişken veriyorduk. (Ör. sum(liste)). Pandasta ise veri çerçevesi adının sonuna metot olarak ekliyoruz. (Ör. VeriCercevesi.sum())

Örneklerle inceleyelim.

baslik = ["Birler", "Onlar", "Yüzler"]
df = pd.read_excel("Veri_Setleri/basliksiz.ods", 
                            header = None, names = baslik )
print(df)
Birler Onlar Yüzler
0 9 82 246
1 7 78 180
2 8 83 565
3 6 82 486
4 4 37 615
5 2 18 341
6 5 12 539
7 8 59 709
8 1 89 675
9 6 12 965
10 4 24 447
11 6 35 555
12 5 34 117
13 5 21 471
14 7 31 171
15 5 40 491
16 9 55 666
17 8 48 557

Elimizde, 17 satır ve 3 sütundan oluşan tablomuz var. Bakalım sum() metodunu kullanınca nasıl bir sonuç elde edeceğiz.

print(df.sum())
Birler 105
Onlar 840
Yüzler 8796
dtype: int64

Görüyoruz ki, sum() metodu sayesinde her sütunun toplam değerleri ekrana yazdırılıyor. Peki Tablodaki tüm değerlerin toplamını bulmak istersek ne yapmalıyız? sum() metodu bize 3 sütun başlığı ve 3 değer verdiğine göre, ikinci bir sum() metodu (yani sum() metodunu peşpeşe iki defa yazmak) bu değerlerin toplamını verir mi dersiniz? Deneyelim.

print(df.sum().sum())
9741

Tahmin ettiğimiz gibi, iki kez sum() metodu kullanmak, tüm veri çerçevesinin toplamını elde etmemizi sağladı.

Peki her sütunun toplamını Veri çerçevesinin son satırına eklemek istersek nasıl bir yol uygulamak gerekir? derseniz, aşağıdaki kodu inceleyin.

toplam = df.sum()

df_toplam = toplam.to_frame().transpose()
df_toplam.index = ["Toplam"]

df = pd.concat([df, df_toplam])
print(df)

Çıktı:

        Birler  Onlar  Yüzler
0            9     82     246
1            7     78     180
2            8     83     565
3            6     82     486
4            4     37     615
5            2     18     341
6            5     12     539
7            8     59     709
8            1     89     675
9            6     12     965
10           4     24     447
11           6     35     555
12           5     34     117
13           5     21     471
14           7     31     171
15           5     40     491
16           9     55     666
17           8     48     557
Toplam     105    840    8796
Birler Onlar Yüzler
0 9 82 246
1 7 78 180
2 8 83 565
3 6 82 486
4 4 37 615
5 2 18 341
6 5 12 539
7 8 59 709
8 1 89 675
9 6 12 965
10 4 24 447
11 6 35 555
12 5 34 117
13 5 21 471
14 7 31 171
15 5 40 491
16 9 55 666
17 8 48 557
Toplam 105 840 8796

Kodu parçalara ayırarak açıklayalım;

toplam = df.sum()
print(toplam)

Çıktı:

Birler     105
Onlar      840
Yüzler    8796
dtype: int64

Çıktı bir Series objesidir.

df_toplam = toplam.to_frame().transpose()
print(df_toplam)

Çıktı:

           0
Birler   105
Onlar    840
Yüzler  8796

Veri çerçeveleri şuan birleştirilmeye uygun değil. Önce df_toplam isimli veri çerçevemizin transpozunu almalıyız ki, birleştirme işlemi öncesi veri çerçevelerinin sütun isimleri aynı olsun.

df_toplam = df_toplam.transpose()
print(df_toplam)

Çıktı:

   Birler  Onlar  Yüzler
0     105    840    8796

df_toplam isimli veri çerçevemizin indek değerini de Toplam diye değiştirelim;

df_toplam.index = ["Toplam"]
print(df_toplam)

Çıktı:

        Birler  Onlar  Yüzler
Toplam     105    840    8796

Şuan veri çerçevelerini birleştirme için herşey hazır görünüyor.

df = pd.concat([df, df_toplam])
print(df)

Çıktı:

        Birler  Onlar  Yüzler
0            9     82     246
1            7     78     180
2            8     83     565
3            6     82     486
4            4     37     615
5            2     18     341
6            5     12     539
7            8     59     709
8            1     89     675
9            6     12     965
10           4     24     447
11           6     35     555
12           5     34     117
13           5     21     471
14           7     31     171
15           5     40     491
16           9     55     666
17           8     48     557
Toplam     105    840    8796