Pandalar: yüzdelerle çapraz tablo nasıl oluşturulur?
Sayılar yerine yüzde değerlerini görüntüleyen bir çapraz tablo oluşturmak için pandas crosstab() işlevindeki normalleştirme bağımsız değişkenini kullanabilirsiniz:
p.d. crosstab (df. col1 , df. col2 , normalize=' index ')
Normalleştirme argümanı üç farklı argümanı kabul eder:
- all : Tüm değerlere göre yüzdeyi gösterir.
- index : Yüzdeyi satır değerlerinin toplamı olarak göster.
- Sütunlar : Yüzdeyi sütun değerlerinin toplamı olarak görüntüler.
Aşağıdaki örnekler, bu yöntemlerin her birinin pratikte aşağıdaki pandalar DataFrame ile nasıl kullanılacağını gösterir:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C '], ' position ':['G', 'G', 'F', 'G', 'F', 'F', 'F', 'G', 'G', 'F', 'F'], ' points ': [22, 25, 24, 39, 34, 20, 18, 17, 20, 19, 22]}) #view DataFrame print (df) team position points 0 AG 22 1 AG 25 2 AF 24 3 BG 39 4 BF 34 5 BF 20 6 BF 18 7 GC 17 8 GC 20 9 CF 19 10 CF 22
Takım ve pozisyon başına oyuncu sayısı için varsayılan çapraz tablo şu şekilde görünecektir:
#create crosstab that displays count by team and position
p.d. crosstab (df. team , df. position )
position F G
team
AT 12
B 3 1
C 2 2
Örnek 1: Tüm değerlere göre yüzdeler içeren bir çapraz tablo oluşturma
Tüm değerlerin toplam sayısına göre her değerin yüzdesini görüntüleyen bir çapraz tablo oluşturmak için crosstab() işlevini normalize=all bağımsız değişkeniyle birlikte kullanabiliriz:
#create crosstab that displays counts as percentage relative to total count p.d. crosstab (df. team , df. position , normalize=' all ') position F G team A 0.090909 0.181818 B 0.272727 0.090909 C 0.181818 0.181818
Sonucun nasıl yorumlanacağı aşağıda açıklanmıştır:
- F pozisyonundaki A takımı oyuncuları toplam oyuncuların %9,09’unu temsil ediyor.
- G pozisyonundaki A takımı oyuncuları toplam oyuncuların %18,18’ini temsil ediyor.
Ve benzeri.
Örnek 2: Satır toplamlarına göre yüzdeler içeren bir çapraz tablo oluşturma
Satır toplamına göre her değerin yüzdesini görüntüleyen bir çapraz tablo oluşturmak için crosstab() işlevini normalize=index bağımsız değişkeniyle birlikte kullanabiliriz:
#create crosstab that displays counts as percentage relative to row totals p.d. crosstab (df. team , df. position , normalize=' index ') position F G team A 0.333333 0.666667 B 0.750000 0.250000 C 0.500000 0.500000
Sonucun nasıl yorumlanacağı aşağıda açıklanmıştır:
- F pozisyonundaki oyuncular A takımının toplam oyuncularının %33,33’ünü temsil eder.
- F pozisyonundaki oyuncular B takımının toplam oyuncularının %75’ini temsil eder.
- F pozisyonundaki oyuncular C takımının toplam oyuncularının %50’sini temsil eder.
Ve benzeri.
Örnek 3: Sütun toplamlarına göre yüzdeleri içeren bir çapraz tablo oluşturma
Her bir değerin sütun toplamına göre yüzdelerini görüntüleyen bir çapraz tablo oluşturmak için crosstab() işlevini normalize=columns bağımsız değişkeniyle birlikte kullanabiliriz:
#create crosstab that displays counts as percentage relative to column totals p.d. crosstab (df. team , df. position , normalize=' columns ') position F G team A 0.166667 0.4 B 0.500000 0.2 C 0.333333 0.4
Sonucun nasıl yorumlanacağı aşağıda açıklanmıştır:
- A takımı oyuncuları, F pozisyonundaki toplam oyuncuların %16,67’sini temsil ediyor.
- B Takımı oyuncuları, F pozisyonundaki toplam oyuncuların %50’sini temsil eder.
- C Takımı oyuncuları, F pozisyonundaki toplam oyuncuların %33,33’ünü temsil ediyor.
Ve benzeri.
Not : Pandas crosstab() işlevinin tam belgelerini burada bulabilirsiniz.
Ek kaynaklar
Aşağıdaki eğitimlerde pandalarda diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:
Pandalar: GroupBy ve değer sayıları nasıl kullanılır?
Pandalar: GroupBy’yi çöp kutusu sayımı ile kullanma
Pandalar: Koşullu bir sütundaki değerler nasıl sayılır?