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
pandasPaket sind statische Funktionen: Sie sind an kein konkretes Objekt gebunden, sondern werden über den Bibliotheksnamenpdaufgerufen. 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
DataFrameoder eineSeries. Beispiele:df.to_csv,df.corr,df.head,x.mean. - Mache Dich mit dem Unterschied vertraut: Was bedeuten
pdunddfundxin 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 10 Zeilen des originalen Datensatzes (aus Performancegründen). - Speichere den
DataFrameals.jsonab. - Lies die
.jsonein und speichere denDataFrameals.htmlTabelle ab (Die.htmlDatei lässt sich auch mit einem Browser öffnen). - Lies dann die
.htmlDatei ein (Achtung:read_htmlgibt eine Liste vonDataFrames zurück!) und speichere denDataFrameals.xlsxDatei ab (Die.xlsxDatei lässt sich auch mit Excel öffnen). - Lies nun die
.xlsxDatei ein und speichere denDataFramewieder als.csvab. Achte darauf, den ursprünglichen originalen Datensatz nicht zu überschreiben. - Vergleiche Sie die originale
.csvVersion 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
int64Werte, 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 einesDataFramesoder einerSeriesanzeigen zu lassen. Mit dem Funktionsargumentdeep=Truewird der Wert genau ermittelt und nicht nur geschätzt.