Pandas: Lesen externer Daten

PandasBeginner
Jetzt üben

Einführung

Bei der Datenanalyse ist der erste Schritt oft das Laden Ihrer Daten in ein strukturiertes Format. Pandas, eine leistungsstarke Python-Bibliothek, zeichnet sich in dieser Aufgabe aus. Die gebräuchlichste Funktion zum Lesen von Daten aus flachen Dateien wie CSVs ist pandas.read_csv(). Diese Funktion ist unglaublich flexibel und bietet eine breite Palette von Parametern, um verschiedene Dateiformate und potenzielle Probleme zu bewältigen.

In diesem Lab lernen Sie, wie Sie pd.read_csv() verwenden, um Daten aus einer CSV-Datei in einen Pandas DataFrame zu importieren. Wir werden behandeln, wie Kommentare behandelt, Header spezifiziert, fehlende Werte verwaltet und erste Inspektionen der geladenen Daten durchgeführt werden.

CSV-Datei mit read_csv lesen

In diesem Schritt lernen Sie die grundlegende Verwendung der Funktion pd.read_csv(), um Daten aus einer CSV-Datei in einen Pandas DataFrame zu laden.

Unser Projektverzeichnis, ~/project, enthält eine Datei namens data.csv. Untersuchen wir ihren Inhalt. Sie enthält einige Kommentarzeilen am Anfang, die mit einem #-Symbol beginnen. Die Funktion read_csv kann angewiesen werden, diese Zeilen mithilfe des Parameters comment zu ignorieren.

Öffnen Sie zunächst die Datei main.py im Dateiexplorer auf der linken Seite. Wir werden unseren Python-Code in dieser Datei schreiben.

Fügen Sie den folgenden Code zu main.py hinzu, um Pandas zu importieren und die Datei data.csv zu lesen. Wir weisen den resultierenden DataFrame einer Variablen namens df zu und geben ihn dann aus.

import pandas as pd

## Lese die CSV-Datei und behandle Zeilen, die mit '#' beginnen, als Kommentare
df = pd.read_csv('data.csv', comment='#')

## Gib den DataFrame aus
print(df)

Um das Skript auszuführen, öffnen Sie ein Terminal in der WebIDE (Sie können das Menü Terminal > New Terminal verwenden) und führen Sie den folgenden Befehl aus:

python3 main.py

Sie sollten die folgende Ausgabe sehen, die den Inhalt der CSV-Datei zeigt, geladen in einen strukturierten DataFrame.

   id     name          age         city
0   1    Alice           25     New York
1   2      Bob           30  Los Angeles
2   3  Charlie  Not Available       London
3   4    David           35          NaN
4   5      Eve           22        Paris

Header-Zeile in read_csv angeben

In diesem Schritt werden wir den Parameter header der Funktion read_csv untersuchen.

Standardmäßig geht read_csv davon aus, dass die erste nicht auskommentierte und nicht übersprungene Zeile in Ihrer Datei die Header-Zeile mit den Spaltennamen ist. In unserer data.csv-Datei wird nach dem Überspringen der Kommentarzeilen die Zeile id,name,age,city korrekt als Header erkannt.

Der Parameter header ermöglicht es Ihnen, explizit anzugeben, welche Zeile als Header verwendet werden soll. Er nimmt eine Ganzzahl entgegen, die den Zeilenindex (beginnend bei 0) darstellt. Da die erste Datenzeile (nach den Kommentaren) unser Header ist, hat sie den Index 0.

Lassen Sie uns die Datei main.py ändern, um header=0 explizit festzulegen. Obwohl dies in unserem Fall das Standardverhalten ist, kann die explizite Angabe Fehler bei ungewöhnlich formatierten Dateien verhindern.

Aktualisieren Sie Ihre main.py mit dem folgenden Code:

import pandas as pd

## Explizit angeben, dass die erste Zeile (Index 0) nach den Kommentaren der Header ist
df = pd.read_csv('data.csv', comment='#', header=0)

print(df)

Führen Sie das Skript erneut im Terminal aus:

python3 main.py

Die Ausgabe wird mit dem vorherigen Schritt identisch sein, da wir nur das Standardverhalten bestätigt haben. Diese Vorgehensweise ist nützlich für die Klarheit und Robustheit des Codes.

   id     name          age         city
0   1    Alice           25     New York
1   2      Bob           30  Los Angeles
2   3  Charlie  Not Available       London
3   4    David           35          N/A
4   5      Eve           22        Paris

Fehlende Werte mit dem na_values-Parameter behandeln

In diesem Schritt lernen Sie, wie Sie benutzerdefinierte Darstellungen fehlender Daten behandeln.

Wenn Sie sich den DataFrame aus dem vorherigen Schritt ansehen, sehen Sie die Werte "Not Available" in der Spalte age und NaN in der Spalte city. Pandas erkennt automatisch einige gängige Indikatoren für fehlende Werte wie leere Zeichenketten, NA oder N/A, aber keine benutzerdefinierten wie "Not Available". Wir können den Parameter na_values verwenden, um eine Liste von Zeichenketten bereitzustellen, die als NaN (Not a Number) interpretiert werden sollen, was der Standardmarker von Pandas für fehlende Daten ist.

Ändern Sie Ihre main.py, um den Parameter na_values einzuschließen.

import pandas as pd

## Definiere eine Liste von Zeichenketten, die als fehlende Werte behandelt werden sollen
missing_values = ["Not Available", "N/A"]

## Lese die CSV und gib die benutzerdefinierten fehlenden Werte an
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

print(df)

Führen Sie nun das Skript aus:

python3 main.py

Beachten Sie die neue Ausgabe. Die Zeichenkette "Not Available" wurde durch NaN ersetzt.

   id     name   age         city
0   1    Alice  25.0     New York
1   2      Bob  30.0  Los Angeles
2   3  Charlie   NaN       London
3   4    David  35.0          NaN
4   5      Eve  22.0        Paris

Beachten Sie, dass sich der Datentyp der Spalte age ebenfalls zu float64 geändert hat, um den NaN-Wert aufzunehmen.

Erste Zeilen mit der head-Methode anzeigen

In diesem Schritt lernen wir, wie wir die ersten Zeilen eines DataFrames inspizieren können.

Bei der Arbeit mit großen Datensätzen ist das Drucken des gesamten DataFrames ineffizient und kann Ihren Bildschirm überladen. Die Methode .head() ist eine praktische Möglichkeit, eine schnelle Vorschau Ihrer Daten zu erhalten. Standardmäßig gibt sie die ersten 5 Zeilen zurück.

Sie können auch eine Ganzzahl an .head() übergeben, um die Anzahl der Zeilen anzugeben, die Sie sehen möchten. Lassen Sie uns nur die ersten 3 Zeilen unseres DataFrames anzeigen.

Aktualisieren Sie Ihre main.py-Datei wie folgt. Anstatt den gesamten DataFrame zu drucken, drucken wir nun nur dessen Kopfzeilen.

import pandas as pd

missing_values = ["Not Available", "N/A"]
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

## Zeige die ersten 3 Zeilen des DataFrames an
print(df.head(3))

Führen Sie das Skript in Ihrem Terminal aus:

python3 main.py

Die Ausgabe wird nun viel kürzer sein und nur die Kopfzeile und die ersten drei Datensätze anzeigen.

   id     name   age         city
0   1    Alice  25.0     New York
1   2      Bob  30.0  Los Angeles
2   3  Charlie   NaN       London

DataFrame-Form mit dem shape-Attribut überprüfen

In diesem Schritt lernen Sie, wie Sie die Dimensionen Ihres DataFrames überprüfen.

Die Kenntnis der Anzahl der Zeilen und Spalten ist eine grundlegende Überprüfung in der Datenanalyse. Pandas DataFrames verfügen über ein .shape-Attribut, das ein Tupel mit der Anzahl der Zeilen und Spalten zurückgibt.

Beachten Sie, dass .shape ein Attribut und keine Methode ist, daher verwenden Sie beim Zugriff keine Klammern ().

Lassen Sie uns main.py ändern, um die Form unseres DataFrames zu drucken.

import pandas as pd

missing_values = ["Not Available", "N/A"]
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

## Rufe die Dimensionen (Zeilen, Spalten) des DataFrames ab
df_shape = df.shape

print(df_shape)

Führen Sie das Skript ein letztes Mal aus:

python3 main.py

Die Ausgabe ist ein Tupel, das angibt, dass unser DataFrame 5 Zeilen und 4 Spalten hat.

(5, 4)

Zusammenfassung

Herzlichen Glückwunsch zum Abschluss dieses Labs! Sie haben die wesentlichen Fähigkeiten für das Lesen und Inspizieren von Daten mit Pandas erlernt.

In diesem Lab haben Sie Folgendes gemeistert:

  • Einlesen einer CSV-Datei in einen DataFrame mit pd.read_csv().
  • Überspringen von Kommentarzeilen mit dem Parameter comment.
  • Explizites Definieren der Kopfzeile mit dem Parameter header.
  • Umgang mit benutzerdefinierten fehlenden Werten mit dem Parameter na_values.
  • Vorschau eines DataFrames mit der Methode .head().
  • Überprüfung der Dimensionen eines DataFrames mit dem Attribut .shape.

Dies sind grundlegende Operationen, die den Ausgangspunkt für fast jede Datenanalyseaufgabe bilden. Mit diesen Fähigkeiten sind Sie nun besser gerüstet, um eine Vielzahl von Datenimport-Herausforderungen zu bewältigen.