Ein- und Ausgabe

Die Funktionen zur Ein- und Ausgabe von Daten in pandas sind umfangreich aber systematisch organisiert. Um beispielsweise eine .csv Datei einzulesen und in einer Variable zu speichern verwendet man die Funktion read_csv:

import pandas as pd
df = pd.read_csv("../data/Library_Usage.csv")
df.head()

Um einen eingelesenen Datensatz beispielsweise im .json Textformat zu speichern verwendet man die Funktion to_json:

df.to_json("../data/Library_Usage.json")
  • Manche Funktion aus dem pandas Paket sind statische Funktionen: Sie sind an kein konkretes Objekt gebunden, sondern werden über den Bibliotheksnamen pd aufgerufen. Beispiele: pd.read_csv, pd.to_numeric, pd.crosstab.
  • Andere Funktionen sind an ein bestimmtes Objekt, welches mit einer Variable referenziert wird, gebunden. In der Regel ist dies ein DataFrame oder eine Series. Beispiele: df.to_csv, df.corr, df.head, x.mean.
  • Mache Dich mit dem Unterschied vertraut: Was bedeuten pd und df und x in den Beispielen?

Exkurs: Einlesen von Daten

Die Festplatte des Computers dient zur persistenten Speicherung von Dateien. Auch wenn der Strom weg ist, bleiben diese darauf erhalten. Die hohe Speicherfähigkeit hat ihren Preis: Die Zugriffszeiten, d.h. die Zeit die die Festplatte benötigt um z.B. Zeilen einer Textdatei zu lesen und die Werte an den Prozessor zu übergeben, sind hoch.

Deswegen gibt es neben dem Festplattenspeicher auch noch den Arbeitsspeicher (RAM). Dessen Zugriffszeiten sind wesentlich schneller, die Daten sind jedoch nicht persistent. Wenn Du z.B. eine Tabelle mit Excel öffnest, dann werden die Daten von der Festplatte in den Arbeitsspeicher geladen. Das gleiche, nur ohne graphische Oberfläche, passiert, wenn Du Daten mit dem pandas Paket einliest.

Da normalerweise der Datensatz komplett in den Arbeitsspeicher geladen werden muss, können prinzipiell nicht beliebig große Datenmengen bearbeitet werden.

2.3 Exkurs: Datenrundreise (30 Min)

  • Informiere Dich hier über die verschiedenen Funktionen zur Ein- und Ausgabe.
  • Lies den Datensatz "../data/Library_Usage_Small.csv" ein (Download hier). Er enthält nur die ersten 10 Zeilen des originalen Datensatzes (aus Performancegründen).
  • Speichere den DataFrame als .json ab.
  • Lies die .json ein und speichere den DataFrame als .html Tabelle ab (Die .html Datei lässt sich auch mit einem Browser öffnen).
  • Lies dann die .html Datei ein (Achtung: read_html gibt eine Liste von DataFrames zurück!) und speichere den DataFrame als .xlsx Datei ab (Die .xlsx Datei lässt sich auch mit Excel öffnen).
  • Lies nun die .xlsx Datei ein und speichere den DataFrame wieder als .csv ab. Achte darauf, den ursprünglichen originalen Datensatz nicht zu überschreiben.
  • Vergleiche Sie die originale .csv Version mit der Version, nach der Datenrundreise. Ist alles gleich geblieben?

2.4 Exkurs: Arbeitsspeicher (30 Min)

  • Finde heraus, wie viel freier Arbeitsspeicher Dein Computer hat (Das Betriebssystem und Hintergrundprogramme verbrauchen auch RAM).
  • Wie viele int64 Werte, also Zahlen, die 8 Byte (=64 Bit) Speicher benötigen, kannst Du damit theoretisch in den Arbeitsspeicher laden? Tip: Nutze Google zum Umrechnen.
  • Wie viele Beobachtungen kann eine Tabelle mit 100 numerischen Variablen damit maximal theoretisch haben, damit Du diese noch bearbeiten kannst?
  • Nutze die Funktion df.memory_usage() um Dir den tatsächlich benötigten Speicher eines DataFrames oder einer Series anzeigen zu lassen. Mit dem Funktionsargument deep=True wird der Wert genau ermittelt und nicht nur geschätzt.