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?

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir