SAS2PYTHON - Lagemaße (Mittelwert, Modalwert, Median, Quantile)


Posted on 23 August 2022 at 15:00 by Stefan Weingaertner

In der Episode 20 unseres heutigen Blog-Beitrags zeigen wir, wie man in SAS/BASE und in Pandas Lagemaße berechnen kann.



Ein Pandas DataFrame ist einem SAS Data Set sehr ähnlich - es handelt sich um eine zweidimensionale tabellarische Datenstruktur mit gelabelten Spalten, die von unterschiedlichem Datentyp sein können. Wie in diesem Beitrag gezeigt wird, kann nahezu jede Operation, die mit dem SAS Data Step auf einen Datensatz angewendet werden kann, auch in Pandas ausgeführt werden.

Input: Unsere Input-Tabelle besitzt 5 Datensätze und besteht aus den Spalten "column_1", "column_2", "column_3" und "column_4".


                      
   column_1  column_2  column_3  column_4
0         5         3        -3       2.0
1        10         3        -9       2.0
2        20         4        -6       0.0
3        20         8         0       5.6
4        25        12        -3      -8.7
                    


Output: Wir erzeugen folgenden Output:

  • Mittelwerte für alle Spalten.
  • Median für alle Spalten.
  • Modelwerte für alle Spalten.
  • Quantile für alle Spalten.


    Da manche Operationen in SAS und Python unterschiedlich ausgeführt werden, generieren die beiden Programmiersprachen auch leicht unterschiedliche Ausgabe-Formate. Wir haben daher die Outputs mit dem dazugehörigen Code für SAS und Python separat aufgeführt.




    SAS-Code: Das Berechnen der Lagemaße Mittelwert, Median und Modelwert würde man für ein SAS Dataset "df" mit der Prozedur PROC MEANS wie folgt umsetzen.


                          
    proc means data = df mean median mode;
    run;
                        


    SAS-Output: Das Ergebnis sieht in SAS wie folgt aus.


                          
    Variable  Mean  Median  Mode
    column_1 16.00   20.0     20
    column_2  6.00    4.0      3
    column_3 -4.20   -3.0     -3
    column_4  0.18    2.0      2
                        

    SAS-Code: Das Berechnen der Quantile würde man mit Hilfe der SAS Prozedur "PROC STDIZE" umsetzen.


                          
    proc stdize data = df pctlmtd = ORD_STAT outstat = df_quantiles
         pctlpts = 0, 25, 50, 75, 100;
         var column_1 column_2 column_3 column_4;
    run;
    
    data df_quantiles;
     set df_quantiles;
     where _type_ =: 'P';
    run; 
                        


    SAS-Output: Das Ergebnis sieht in SAS wie folgt aus.


                          
    _TYPE_  column_1  column_2  column_3  column_4
    P0           5.0       3.0      -9.0      -8.7
    P25         10.0       3.0      -6.0       0.0
    P50         20.0       4.0      -3.0       2.0
    P75         20.0       8.0      -3.0       2.0
    P100        25.0      12.0       0.0       5.6
                        




    Python-Code: In Python kann man das Berechnen von Mittelwert, Modalwert, Median & Quantilen für die vier Spalten des DataFrame "df" mit der folgenden Syntax umsetzen.


                          
    import pandas as pd
    
    # Mittelwerte 
    
    df.mean()
    
    column_1    16.00
    column_2     6.00
    column_3    -4.20
    column_4     0.18
    dtype: float64
    
    # Median
    
    df.median()
    
    column_1    20.0
    column_2     4.0
    column_3    -3.0
    column_4     2.0
    dtype: float64
    
    # Modalwerte
    
    df.mode()
    
       column_1  column_2  column_3  column_4
    0        20         3        -3       2.0
      
    # Quantile (0%, 25%, 50%, 75%, 100%)
    
    df.quantile(q=[0.0,0.25,0.5,0.75,1])
    
          column_1  column_2  column_3  column_4
    0.00       5.0       3.0      -9.0      -8.7
    0.25      10.0       3.0      -6.0       0.0
    0.50      20.0       4.0      -3.0       2.0
    0.75      20.0       8.0      -3.0       2.0
    1.00      25.0      12.0       0.0       5.6
                        




    Wenn Sie die nächste Episode nicht abwarten möchten, können Sie auch gerne unser umfangreiches Training Python für SAS Professionals buchen.

    Informationen zu den nächsten Kursterminen und zu unserem gesamten Trainingsangebot finden Sie hier.