Endlich habe ich ein perfektes Programm gefunden,
in dem das CSV-Problem demonstriert wird.
Ich werde versuchen ein analoges Programm mit anderen Daten
zu entwickeln. Einen Versuch ist es jedenfalls wert.##
(wer immer stetig sich bemüht, den können wir erlösen: frei nach Goethe FaustII)
OSWALD
Code: Alles auswählen
import requests
import matplotlib.pyplot as plt
import pandas as pd
import io
CSV_URL = 'https://www.kiel.de/opendata/kiel_gesetze_justiz_strassenverkehsunfaelle_verkehrstote_verletzte_fahrerflucht.csv'
#Anschließend kommt requests zum Einsatz, wobei die Daten der Variablen csv_data zugewiesen werden:
csv_data = requests.get(CSV_URL).content
#Jetzt kann ein Dataframe erzeugt werden,
#d.h. wir verwenden das Modul Pandas um die Daten zu parsen.
#Falls Euch der Begriff Dataframe noch nicht begegnet ist: Die Pandas-Bibliothek enthält einige nützliche Datenstrukturen, u.a. das Dataframe-Objekt.
#Dabei handelt es sich um eine Zwei-Dimensionale Tabelle mit Zeilen und Spalten (so wie man es beispielsweise aus einer Tabellenkalkulation wie Excel oder Numbers kennt).
df = pd.read_csv(io.StringIO(csv_data.decode('utf-8')), sep=';')
#Die ersten fünf Zeilen lassen sich übrigens wie folgt ausgeben:
print(df.head())
print(df)
#Daten visualisieren
#Dies war der interessante Teil.
##Anstatt eine lokale CSV-Datei zu verwenden, wurde das Modul requests genutzt,
#um die Daten aus dem Internet zu laden.
#Als Zeichencodierung habe ich „utf-8“ angegeben und zusätzlich
#ein Semikolon als Trennzeichen definiert.
#Der restliche Code entspricht meinem alten Beispiel:
fig, ax = plt.subplots()
x = df['Jahr']
y = df['Unfaelle']
print('Aufzaehlung der Unfaelle',x, y)
plt.title('Straßenverkehrsunfälle in Kiel', size='x-large')
plt.ylabel('Anzahl', size='x-large')
plt.xlabel('Jahr', size='x-large')
plt.plot(y, '*-', markersize=6, linewidth=1, color='b', label='Unfälle')
print(plt.plot(y, '*-', markersize=6))
plt.legend(loc=(0.4, 0.8))
ax.set_xticks(range(len(x)))
ax.set_xticklabels(x, rotation='vertical')
plt.show()