SAS2PYTHON - Zeilen/Spalten mit fehlenden Werten löschen


Posted on 25 April 2023 at 13:30 by Stefan Weingaertner

In der Episode 55 unseres heutigen Blog-Beitrags zeigen wir, wie man in SAS/BASE und in Pandas Datensätze mit fehlenden Werten löschen 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 "Sepal_Length", "Sepal_Width", "Petal_Length", "Petal_Width" und "Class". In den Spalten "Sepal_Length", "Sepal_Width", "Petal_Length" und "Class" sind fehlende Werte vorhanden.


                      
Sepal_Length  Sepal_Width  Petal_Length  Petal_Width           Class
         4.7          3.2           1.3          0.2     Iris-setosa
           .          3.1             .          0.2     Iris-setosa
         5.0          3.6           1.4          0.2                
         6.7            .             .          2.3  Iris-virginica
         6.6          3.1           5.1          2.2  Iris-virginica
                    


Output: Wir löschen alle Datensätze, wenn in einer beliebigen Spalte ein fehlender Wert vorhanden ist.

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




SAS-Code: Die Löschung von Datensätzen mit fehlenden Werten könnte man für ein SAS Dataset "df" wie folgt umsetzen (alternativ könnte man auch mit einem SAS/MACRO Programm über die einzelnen Spalten iterieren, in diesem Blog liegt der Fokus aber eher auf einfachen Code-Statements).


                      
data df;
   set df;
     if Sepal_Length ^= .  OR Sepal_Width ^= . OR Petal_Length ^= . OR Petal_Width ^= . OR Class = '' THEN delete;
run ;

                    


SAS-Output: Das Ergebnis sieht in SAS wie folgt aus, aus dem SAS Dataset werden alle Zeilen gelöscht, in denen mindestens ein fehlender Wert vorhanden ist.


                                                                   
Obs Sepal_Length  Sepal_Width  Petal_Length  Petal_Width           Class
  1          4.7          3.2           1.3          0.2     Iris-setosa
  2          6.6          3.1           5.1          2.2  Iris-virginica
                    




Python-Code: In Python würde man Löschung von Datensätzen mit fehlenden Werten wie folgt umsetzen (alternativ könnte man auch ein SAS Macro schreiben, welches über die einzelnen Spalten iteriert).


                      
import pandas as pd

df = df.dropna()

# Identischer Code:

df = df.dropna(axis=0)
                    


Python-Output: Das Ergebnis sieht in Pandas wie folgt aus, es werden alle Datensätze mit mindestens einem fehlenden Wert entfernt.


                                            
    Sepal_Length  Sepal_Width  Petal_Length  Petal_Width           Class 
 0           4.7          3.2           1.3          0.2     Iris-setosa
 1           6.6          3.1           5.1          2.2  Iris-virginica
                    




Löschen von Spalten bei fehlenden Werten: Pandas bietet auch die Möglichkeit, auf Spalten-Ebene nach fehlenden Werten zu prüfen und entsprechend die betroffenen Spalten zu löschen.


                      
import pandas as pd

df = df.dropna(axis=1)
                    


Python-Output: Das Ergebnis sieht in Pandas wie folgt aus, es werden alle Spalten mit mindestens einem fehlenden Wert entfernt.


                      
    Petal_Width
 0          0.2
 1          0.2
 2          0.2                
 3          2.3
 4          2.2
                    




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.