HOWTO · Pandas

Lesen Sie SAS in Pandas

Dieser Artikel wird uns helfen zu verstehen, was Pandas Read SAS ist.

Auf dieser Seite

Um einen SAS-Datensatz in Python einzulesen, übergeben Sie den Pfad zur Datei .sas7bdat an pyreadstat.read_sas7bdat oder an pd.read_sas von Pandas. Beide Varianten liefern tabellarische Daten zurück, die Sie untersuchen können; pyreadstat liefert zusätzlich Metadaten und ermöglicht mit usecols die Auswahl von Spalten. Nach dem Laden exportieren Sie die Daten mit to_csv als CSV-Datei. Diese Schritte lesen Daten ein und exportieren sie; sie schreiben keine Datei im SAS-Format.

Was sind SAS-Dateien?

SAS (Statistical Analysis System) ist eine Software für statistische Analysen und Datenverwaltung. Eine Datei mit der Endung .sas7bdat enthält einen SAS-Datensatz. Eine Datei mit der Endung .sas7bcat ist ein Katalog, der Formate und zugehörige Metadaten speichert. Sie ist nicht der Datensatz, den Sie für die folgenden Beispiele zum Einlesen tabellarischer Daten verwenden.

Verwenden Sie die Datei .sas7bdat, wenn Sie Beobachtungen in Python laden möchten. Die Beispiele verwenden path/to/your-file.sas7bdat als Platzhalter. Ersetzen Sie ihn durch den Pfad zu Ihrem eigenen Datensatz, entweder relativ zum aktuellen Arbeitsverzeichnis oder als absoluten Pfad.

.SAS-Dateien in Python öffnen

Installieren Sie pyreadstat in derselben Python-Umgebung, in der Ihr Skript ausgeführt wird: python -m pip install pyreadstat. Das Paket stellt pyreadstat.read_sas7bdat bereit. Die Funktion gibt ein Paar zurück: einen DataFrame und ein Metadatenobjekt. Weisen Sie beide Rückgabewerte Variablen zu, damit Sie die Zeilen und bei Bedarf auch Metadaten wie Spaltenbeschriftungen untersuchen können.

Rufen Sie für einen Datensatz an Ihrem gewählten Speicherort df, meta = pyreadstat.read_sas7bdat("path/to/your-file.sas7bdat") auf und sehen Sie sich die Daten anschließend mit df.head() an. Dies ist eine Anwendungsvorlage, für die das installierte Paket und Ihre Datei erforderlich sind; sie lässt sich nicht eigenständig ausführen. head() zeigt standardmäßig die ersten fünf Zeilen. Mit df.head(n) können Sie eine andere Anzahl anfordern.

SAS-Dateien mit Pandas in Python einlesen

Wenn Pandas bereits Teil Ihres Arbeitsablaufs ist, können Sie mit der Funktion pd.read_sas einen SAS-Datensatz in einen DataFrame einlesen. Installieren Sie Pandas bei Bedarf in der aktiven Umgebung und geben Sie dann den Pfad zum Datensatz an. Diese Variante gibt direkt den DataFrame zurück.

Laden Sie den Datensatz mit df = pd.read_sas("path/to/your-file.sas7bdat") und prüfen Sie das Ergebnis anschließend mit df.head(). Wie beim vorherigen Beispiel benötigen Sie dafür eine eigene Datei mit der Endung .sas7bdat. Wenn die Daten eine andere als die standardmäßig verwendete Textkodierung nutzen, fragen Sie beim Ursprung oder Ersteller der Datei nach, bevor Sie das Argument encoding des Readers festlegen. Der richtige Wert hängt vom Datensatz ab.

Bestimmte Spalten aus einer SAS-Datei in Python einlesen

Wenn Sie nur ausgewählte Spalten benötigen, übergeben Sie deren Namen mit usecols an pyreadstat.read_sas7bdat. Diese Option gehört zur hier gezeigten pyreadstat-API. Gehen Sie nicht davon aus, dass pd.read_sas dasselbe Argument akzeptiert.

Legen Sie beispielsweise columns = ["YEAR"] fest und rufen Sie df, meta = pyreadstat.read_sas7bdat("path/to/your-file.sas7bdat", usecols=columns) auf. Untersuchen Sie den zurückgegebenen DataFrame anschließend mit df.head(). Ersetzen Sie YEAR durch einen Spaltennamen aus Ihrem Datensatz. Wenn Sie die verfügbaren Spaltennamen nicht kennen, laden Sie den Datensatz zunächst ohne usecols und prüfen Sie df.columns.

SAS-Dateien in Python als CSV speichern

Um den geladenen DataFrame zu exportieren, verwenden Sie to_csv. Setzen Sie index=False, wenn der DataFrame-Index keine Datenspalte ist, die in der Datei enthalten sein soll. Das folgende kleine Beispiel aus der Python-Standardbibliothek veranschaulicht den CSV-Text für zwei Zeilen. Es zeigt die CSV-Formatierung; für einen SAS-Datensatz rufen Sie to_csv für den zuvor geladenen DataFrame auf. Beschriftungen im unveränderten Beispiel bleiben auf Englisch.

Führen Sie dieses Beispiel aus:

import csv
import io

rows = [("year", "sales"), ("2023", "12")]
output = io.StringIO()
writer = csv.writer(output, lineterminator="\n")
writer.writerows(rows)
print(output.getvalue(), end="")
year,sales
2023,12

Für den tatsächlichen DataFrame schreiben Sie df.to_csv("output.csv", index=False). Wählen Sie ein Ziel, in das Sie schreiben können. Ein relativer Dateiname wird im aktuellen Arbeitsverzeichnis des Prozesses angelegt. Der Export enthält die Spalten und Zeilen des DataFrames, ohne dessen Index als zusätzliche Spalte hinzuzufügen.