CSV-Dateien mit Python einlesen

CSV-Dateien mit Python einlesen

In diesem Beitrag zeige ich, wie CSV-Dateien mit Python eingelesen werden können. Als Datensatz dient hierfür die Anzahl der Verkehrsunfälle in Kiel, bereitgestellt vom Open Data Portal der Stadt Kiel.

Im Gegensatz zu älteren, ebenfalls in diesem Blog vorgestellten Vorgehensweisen, nutze ich für dieses Beispiel das Modul csv (anstelle von pandas).

Zunächst wird eine neue Python-Datei angelegt. Da es mir hier um die Darstellung der Verkehrsunfälle unter Alkoholeinfluss geht, habe ich die Datei “kiel_unfaelle_alkohol.py” genannt. Außerdem habe ich die CSV-Datei mit der Anzahl der Verkehrsunfälle heruntergeladen und in “kiel_unfaelle.csv” umbenannt. Dabei habe ich darauf geachtet, dass beim Speichern als Zeichenkodierung UTF–8 ausgewählt war.

Die Datei “kiel_unfaelle_alkohol.py” beginnt nun wie folgt:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import csv
import matplotlib.pyplot as plt

filename = 'kiel_unfaelle.csv'

Neben dem Modul csv wird auch das Modul matplotlib importiert, das später für die Visualisierung der Daten genutzt werden soll.

Jetzt geht es an das Lesen der Daten. Folgende Zeilen sind dafür ausreichend:

with open(filename) as csv_file:
    reader = csv.reader(csv_file, delimiter=';')
    header_row = next(reader)

Wie Ihr sehen könnt, erwartet die Methode reader() zwei Argumente: Zum einen die einzulesende Datei, zum anderen das Zeichen, das die Daten trennt (hier ein Semikolon).

Die erste Zeile der CSV-Datei enthält die Überschriften zu den jeweiligen Spalten. Uns interessieren hier nur die Spalten zu den Jahresangaben und zu den Verkehrsunfällen unter Alkoholeinfluss, wobei wir die Indizes zu diesen Spalten benötigen. Wir können nun die Spalten zählen oder uns die Überschriften mit den Indizes mithilfe folgenden Codes anzeigen lassen:

for index, column_header in enumerate(header_row):
    print(index, column_header)

Dadurch erhalten wir u.a. folgende Ausgabe:
4 Jahr
10 Alkoholeinfluss

Die Indizes “4” und “10” können nun dazu genutzt werden, zwei Listen (“years” und “values”) mit Daten zu füllen:

years, values = [], []

for row in reader:
    years.append(row[4])
    value = int(row[10])
    values.append(value)

Schließlich kann dann matplotlib für die Visualisierung genutzt werden:

fig = plt.figure(dpi=128, figsize=(10, 6))
plt.plot(years, values, c='red')

plt.title("Verkehrsunfälle in Kiel - Alkoholeinfluss", fontsize=16)
plt.xlabel('Jahr', fontsize=16)

fig.autofmt_xdate()
plt.ylabel("Anzahl", fontsize=16)
plt.tick_params(axis='both', which='major')

plt.show()

Hinsichtlich dieses letzten Code-Abschnitts sei auf meine anderen Artikel zur Visualisierung mit matplotlib verwiesen. Oder Ihr werft einen Blick in die offizielle Dokumentation.

Weiterführende Links

Durch Benutzung dieser Website erklären Sie sich mit der Verwendung von Cookies einverstanden. Mehr Informationen

Diese Website speichert Cookies. Die Verwendung von Cookies dient dazu, Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf diese Website zu analysieren. Außerdem werden Informationen zur Nutzung dieser Webseite an Partner für soziale Medien, Werbung und Analysen weitergegeben. Mit der Verwendung dieser Internetpräsenz stimmen Sie zu, dass diese Seiten Cookies für Analysen, personalisierte Inhalte und Werbung verwenden dürfen. Weitere Informationen hierzu finden Sie in meiner Datenschutzerklärung.

Schließen