From 9c6652a65d0a299a9934e7090b59512a90dc7ebc Mon Sep 17 00:00:00 2001 From: unknown <cmalzer1@gwdg.de> Date: Tue, 3 Sep 2019 15:13:58 +0200 Subject: [PATCH] update --- ...en 1 - if-Anweisungen und Vergleiche.ipynb | 2 +- .../Grundlagen 3 - Pandas DataFrames.ipynb | 104 ++++++++++++------ 2 files changed, 70 insertions(+), 36 deletions(-) diff --git a/Tutorials/Grundlagen 1 - if-Anweisungen und Vergleiche.ipynb b/Tutorials/Grundlagen 1 - if-Anweisungen und Vergleiche.ipynb index 35bc0a2..be0b380 100644 --- a/Tutorials/Grundlagen 1 - if-Anweisungen und Vergleiche.ipynb +++ b/Tutorials/Grundlagen 1 - if-Anweisungen und Vergleiche.ipynb @@ -38,7 +38,7 @@ "metadata": {}, "source": [ "Der Teil \"if zahl > 1\" war eine Bedingung. Hätte die Variable zahl den Wert 1 gehabt, wäre die print-Ausgabe nicht erfolgt. \n", - "Man kann aber auch festlegen, was passieren soll, wenn die Bedingung nicht erfüllt wir. Beachte auch hier die korrekte Einrückung sowie die Syntax der Anweisung (mit Doppelpunkt!)." + "Man kann aber auch festlegen, was passieren soll, wenn die Bedingung nicht erfüllt wird. Beachte auch hier die korrekte Einrückung sowie die Syntax der Anweisung (mit Doppelpunkt!)." ] }, { diff --git a/Tutorials/Grundlagen 3 - Pandas DataFrames.ipynb b/Tutorials/Grundlagen 3 - Pandas DataFrames.ipynb index 2a0ccaf..9e1e1a7 100644 --- a/Tutorials/Grundlagen 3 - Pandas DataFrames.ipynb +++ b/Tutorials/Grundlagen 3 - Pandas DataFrames.ipynb @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -46,7 +46,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -80,7 +80,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -108,7 +108,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -136,7 +136,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -166,7 +166,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -219,7 +219,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -246,14 +246,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Wir könnten das Ergebnis der Selektion auch direkt wieder in ursprünglichen Variable \"aerzte\" speichern. Dann hätten wir diese Variable aber überschrieben und könnten im weiteren Verlauf somit nur noch mit diesen beiden Ärzten weiterarbeiten, es sei denn wir würden die komplette Datei nochmal neu einlesen.\n", + "Wir könnten das Ergebnis der Selektion auch direkt wieder in der ursprünglichen Variable \"aerzte\" speichern. Dann hätten wir diese Variable aber überschrieben und könnten im weiteren Verlauf somit nur noch mit diesen beiden Ärzten weiterarbeiten, es sei denn wir würden die komplette Datei nochmal neu einlesen.\n", "\n", "Hier noch eine andere Abfrage:" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -280,7 +280,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -311,7 +311,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 41, "metadata": {}, "outputs": [ { @@ -340,7 +340,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -369,7 +369,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 43, "metadata": {}, "outputs": [], "source": [ @@ -385,7 +385,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -424,7 +424,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -457,12 +457,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Warum hat die Umbennung nicht funktioniert? Ganz einfach, die Funktion \"rename()\" nimmt eine Änderung vor und liefert als Ergebnis den geänderten DataFrame zurück, aber diesen haben wir nirgends abgespeichert. Die Änderung hat somit keine Auswirkung. Folgendes funktioniert aber:" + "Warum hat die Umbennung nicht funktioniert? Ganz einfach, die Funktion \"rename()\" nimmt eine Änderung vor und liefert als Ergebnis den geänderten DataFrame zurück, aber diesen haben wir in keiner Variable gespeichert. Die Änderung hat somit keine Auswirkung. Folgendes funktioniert aber:" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -486,7 +486,7 @@ } ], "source": [ - "df = df.rename(columns={\"Fachgebiet1\": \"Fachgebiet\"})\n", + "df = df.rename(columns={\"Fachgebiet1\": \"Fachgebiet\"}) #das alte DataFrame wird mit dem Wert des veränderten überschrieben\n", "print(df.head())" ] }, @@ -494,12 +494,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ebenso werden alle vorgenommenen Änderungen an der Original-Datei verloren gehen, sobald wir unser Programm beenden! Um die Tabelle dauerhaft zu speichern, muss man sie am Ende also nochmal explizit abspeichern (z.B. mit to_csv), wie oben gezeigt." + "Ebenso werden alle vorgenommenen Änderungen an der Original-Datei verloren gehen, sobald wir unser Programm beenden! Um die Tabelle dauerhaft zu speichern, sollte man sie am Ende also nochmal explizit als Datei abspeichern (z.B. mit to_csv), wie oben gezeigt." ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 47, "metadata": {}, "outputs": [], "source": [ @@ -517,7 +517,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 48, "metadata": {}, "outputs": [ { @@ -589,7 +589,7 @@ ], "source": [ "df = pd.DataFrame(pd.read_csv(\"../Daten/Selektion.csv\", sep=','))\n", - "for index, data in df.iterrows(): # Syntax, um ein DataFrame zu iterieren\n", + "for index, data in df.iterrows(): # Syntax, um durch ein DataFrame zu iterieren\n", " print(index) #Index der aktuellen Zeile\n", " print(data) #Daten in dieser Zeile\n", " print(type(data)) " @@ -604,7 +604,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 49, "metadata": {}, "outputs": [ { @@ -628,19 +628,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Wenn wir nun also noch eine Spalte mit eigenen Werten zu unserer Tabelle hinzufügen wollen, können wir dieses Dictionary nehmen und in gewohnter Art um einen Eintrag ergänzen. In diesem Fall legen wir eine neue Spalte \"berechnung\" an, die die Postleitzahl durch die ID teilt. Diese berechnet ergibt keinerlei Sinn, soll aber auch nur das Prinzip verdeutlichen." + "Wenn wir nun also noch eine Spalte mit eigenen Werten zu unserer Tabelle hinzufügen wollen, können wir dieses Dictionary nehmen und in gewohnter Art um einen Eintrag ergänzen. In unserem Fall legen wir eine neue Spalte \"komische_berechnung\" an, die die Postleitzahl durch die ID teilt. Diese Berechnung ergibt keinerlei Sinn, soll aber auch nur das Prinzip verdeutlichen." ] }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[{'Unnamed: 0': 0, 'ID': 2, 'Fachgebiet': 'Hals-Nasen-Ohrenheilkunde', 'Adresse': 'Waitzstr. 7', 'PLZ': 22607, 'Privatarzt': nan, 'Stadt': 'Hamburg', 'Land': 'Germany', 'Bundesland': 'Hamburg', 'berechnung': 11303.5}, {'Unnamed: 0': 1, 'ID': 52, 'Fachgebiet': 'Hals-Nasen-Ohrenheilkunde', 'Adresse': 'Neuer Wall 43', 'PLZ': 20354, 'Privatarzt': nan, 'Stadt': 'Hamburg', 'Land': 'Germany', 'Bundesland': 'Hamburg', 'berechnung': 391.4230769230769}, {'Unnamed: 0': 2, 'ID': 102, 'Fachgebiet': 'Hals-Nasen-Ohrenheilkunde', 'Adresse': 'Möllner Landstr. 26 a', 'PLZ': 22111, 'Privatarzt': nan, 'Stadt': 'Hamburg', 'Land': 'Germany', 'Bundesland': 'Hamburg', 'berechnung': 216.77450980392157}, {'Unnamed: 0': 3, 'ID': 125, 'Fachgebiet': 'Hals-Nasen-Ohrenheilkunde', 'Adresse': 'Wandsbeker Marktstr. 73', 'PLZ': 22041, 'Privatarzt': nan, 'Stadt': 'Hamburg', 'Land': 'Germany', 'Bundesland': 'Hamburg', 'berechnung': 176.328}, {'Unnamed: 0': 4, 'ID': 148, 'Fachgebiet': 'Hals-Nasen-Ohrenheilkunde', 'Adresse': 'Sand 35', 'PLZ': 21073, 'Privatarzt': nan, 'Stadt': 'Hamburg', 'Land': 'Germany', 'Bundesland': 'Hamburg', 'berechnung': 142.38513513513513}]\n", + "[{'Unnamed: 0': 0, 'ID': 2, 'Fachgebiet': 'Hals-Nasen-Ohrenheilkunde', 'Adresse': 'Waitzstr. 7', 'PLZ': 22607, 'Privatarzt': nan, 'Stadt': 'Hamburg', 'Land': 'Germany', 'Bundesland': 'Hamburg', 'komische_berechnung': 11303.5}, {'Unnamed: 0': 1, 'ID': 52, 'Fachgebiet': 'Hals-Nasen-Ohrenheilkunde', 'Adresse': 'Neuer Wall 43', 'PLZ': 20354, 'Privatarzt': nan, 'Stadt': 'Hamburg', 'Land': 'Germany', 'Bundesland': 'Hamburg', 'komische_berechnung': 391.4230769230769}, {'Unnamed: 0': 2, 'ID': 102, 'Fachgebiet': 'Hals-Nasen-Ohrenheilkunde', 'Adresse': 'Möllner Landstr. 26 a', 'PLZ': 22111, 'Privatarzt': nan, 'Stadt': 'Hamburg', 'Land': 'Germany', 'Bundesland': 'Hamburg', 'komische_berechnung': 216.77450980392157}, {'Unnamed: 0': 3, 'ID': 125, 'Fachgebiet': 'Hals-Nasen-Ohrenheilkunde', 'Adresse': 'Wandsbeker Marktstr. 73', 'PLZ': 22041, 'Privatarzt': nan, 'Stadt': 'Hamburg', 'Land': 'Germany', 'Bundesland': 'Hamburg', 'komische_berechnung': 176.328}, {'Unnamed: 0': 4, 'ID': 148, 'Fachgebiet': 'Hals-Nasen-Ohrenheilkunde', 'Adresse': 'Sand 35', 'PLZ': 21073, 'Privatarzt': nan, 'Stadt': 'Hamburg', 'Land': 'Germany', 'Bundesland': 'Hamburg', 'komische_berechnung': 142.38513513513513}]\n", + ".................................................................\n", " Unnamed: 0 ID Fachgebiet Adresse PLZ \\\n", "0 0 2 Hals-Nasen-Ohrenheilkunde Waitzstr. 7 22607 \n", "1 1 52 Hals-Nasen-Ohrenheilkunde Neuer Wall 43 20354 \n", @@ -648,23 +649,24 @@ "3 3 125 Hals-Nasen-Ohrenheilkunde Wandsbeker Marktstr. 73 22041 \n", "4 4 148 Hals-Nasen-Ohrenheilkunde Sand 35 21073 \n", "\n", - " Privatarzt Stadt Land Bundesland berechnung \n", - "0 NaN Hamburg Germany Hamburg 11303.500000 \n", - "1 NaN Hamburg Germany Hamburg 391.423077 \n", - "2 NaN Hamburg Germany Hamburg 216.774510 \n", - "3 NaN Hamburg Germany Hamburg 176.328000 \n", - "4 NaN Hamburg Germany Hamburg 142.385135 \n" + " Privatarzt Stadt Land Bundesland komische_berechnung \n", + "0 NaN Hamburg Germany Hamburg 11303.500000 \n", + "1 NaN Hamburg Germany Hamburg 391.423077 \n", + "2 NaN Hamburg Germany Hamburg 216.774510 \n", + "3 NaN Hamburg Germany Hamburg 176.328000 \n", + "4 NaN Hamburg Germany Hamburg 142.385135 \n" ] } ], "source": [ "neu = list() #Synonym zu neu = [], d.h. Erstellen einer neuen leeren Liste\n", "for index, data in df.iterrows(): \n", - " values = data.to_dict()\n", - " values[\"berechnung\"] = values[\"PLZ\"]/values[\"ID\"]\n", + " values = data.to_dict() #erhalte die Werte in dieser Zeile als Dictionary\n", + " values[\"komische_berechnung\"] = values[\"PLZ\"]/values[\"ID\"] #füge dem Dictionary einen neuen Eintrag hinzu\n", " neu.append(values)\n", "print(neu) #Liste mit Dictionaries!\n", "df = pd.DataFrame(neu) #aus einer Liste mit Dictionaries können wir wieder ein DataFrame basteln!\n", + "print(\".................................................................\")\n", "print(df)" ] }, @@ -672,7 +674,39 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Wichtig: Hätten wir nur \"values\" verändert, aber nicht in einer neuen Liste gespeichert, so hätte das das DataFrame nicht verändert! Mit anderen Worten, ein DataFrame kann während des Durchiterierens nicht so einfach verändert werden - besser liest man nur die nötigen Werte raus legt damit ein neues an." + "Wichtig: Hätten wir nur \"values\" verändert, aber nicht in einer neuen Liste gespeichert, so hätte das das DataFrame nicht verändert! Mit anderen Worten, ein DataFrame kann während des Durchiterierens nicht so einfach verändert werden - besser liest man nur die nötigen Werte aus und legt damit dynamisch ein neues an.\n", + "\n", + "Wollen wir nun unsere \"komische_berechnung\"-Spalte wieder löschen, gehen wir so vor:" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Unnamed: 0 ID Fachgebiet Adresse PLZ \\\n", + "0 0 2 Hals-Nasen-Ohrenheilkunde Waitzstr. 7 22607 \n", + "1 1 52 Hals-Nasen-Ohrenheilkunde Neuer Wall 43 20354 \n", + "2 2 102 Hals-Nasen-Ohrenheilkunde Möllner Landstr. 26 a 22111 \n", + "3 3 125 Hals-Nasen-Ohrenheilkunde Wandsbeker Marktstr. 73 22041 \n", + "4 4 148 Hals-Nasen-Ohrenheilkunde Sand 35 21073 \n", + "\n", + " Privatarzt Stadt Land Bundesland \n", + "0 NaN Hamburg Germany Hamburg \n", + "1 NaN Hamburg Germany Hamburg \n", + "2 NaN Hamburg Germany Hamburg \n", + "3 NaN Hamburg Germany Hamburg \n", + "4 NaN Hamburg Germany Hamburg \n" + ] + } + ], + "source": [ + "df = df.drop(\"komische_berechnung\", 1) #Hierbei weist 1 auf eine Spalte hin und 0 auf eine Zeile. \n", + "print(df)" ] } ], -- GitLab