Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Handling Different File Formats in Python: Loading and Saving\n",
"\n",
"<br/>\n",
"<br/>\n",
"\n",
"Dieses Notebook finden Sie hier: https://scm.cms.hu-berlin.de/ibi/python/-/blob/master/programmierspass/Loading_Files.ipynb\n",
"\n",
"<br/>\n",
"\n",
"\n",
"\n",
"Dieses Notebook ist als freies Werk unter der Lizenz [Creative Commons Attribution-NonCommercial 3.0 Unported](http://creativecommons.org/licenses/by-nc/3.0/) verfügbar. Sie dürfen die Inhalte kopieren, verteilen und verändern, solange Sie die Urheber nennen und sie nicht für kommerzielle Zwecke nutzen."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Was ist es und worum geht es?\n",
"\n",
"Zur **Analyse von Daten** ist es wichtig, dass **die Daten zunächst in Python geladen** werden, um sie anschließend verarbeiten zu können. Dies kann entweder aus einer lokalen Datei am PC oder direkt von einer Webseite erfolgen. Die erste Herausforderung besteht darin, dass es **viele verschiedene Dateiformate** gibt, die jeweils ihre eigene Struktur und Darstellung haben und dabei ihre Besonderheiten aufweisen.\n",
"\n",
"In diesem Notebook schauen wir uns an, wie man verschiedene Dateiformate in Python lädt und wieder abspeichert.\n",
"\n",
"Folgende Dateiformate werden abgedeckt:\n",
"- csv (Comma-separated values)\n",
"- tsv (Tab-separated values)\n",
"- json (JavaScript Object Notation)\n",
"- html (HyperText Markup Language)\n",
"- xls/xlsx (Excel spreadsheets)\n",
"- xml (Extensible Markup Language)\n",
"- tar/gz (compressed files)\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### CSV (Comma-separated values) und tsv (Tab-separated values)\n",
"\n",
"\n",
"`csv`- und `tsv`-Dateien sind ähnlich, da sie Textdateien sind, die (in der Regel) strukturierte Daten enthalten, normalerweise in Form von Tabellen. Die Daten sind zeilenweise organisiert, wobei jede Zeile einen separaten Datensatz darstellt, der mehrere Datenfelder enthält, die in Spalten in der Tabelle stehen. \n",
"Die Trennung der Datenfelder erfolgt durch ein besonderes `Trennzeichen`, bei `csv`-Dateien ist dies ein Komma (`,`), bei `tsv`-Dateien ein Tab (`\\t`). Theoretisch kann man auch ein anderes Trennzeichen verwenden.\n",
"\n",
"Hinweis: In `csv`-Dateien, die Zahlen im deutschen Format enthalten (d.h. die Dezimalstellen werden durch ein Komma getrennt: `100,00` statt `100.00`), ist das Trennzeichen oft ein Semikolon (`;`) und nicht ein Komma.\n",
"\n",
"Beispiel:\n",
"\n",
"| Stadt | Postleitzahl | Fläche (km²) | bev_insg | bev_m | bev_w |\n",
"|--------------------------------|--------------|-------------:|---------:|--------:|--------:|\n",
"| Berlin - Stadt | 10178 | 891.12 | 3677472 | 1807826 | 1869646 |\n",
"| Hamburg - Freie und Hansestadt | 20038 | 755.09 | 1853935 | 907682 | 946253 |\n",
"| München - Landeshauptstadt | 80313 | 310.7 | 1487708 | 725594 | 762114 |\n",
"| Köln - Stadt | 50667 | 405.01 | 1073096 | 521939 | 551157 |\n",
"| Frankfurt am Main - Stadt | 60311 | 248.31 | 759224 | 374525 | 384699 |"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import pandas\n",
"\n",
"# top50_german_cities.csv\n",
"# top50_german_cities.tsv\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import csv\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import tsv\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### XLS/XLSX (EXCEL Dateien)\n",
"\n",
"Excel kennt wohl jeder. Keine Einführung notwendig.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"# top50_german_cities.xlsx\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### JSON (JavaScript Object Notation )\n",
"\n",
"`json`-Dateien sind ein weit verbreitetes Format für den Austausch von Daten im Internet. Sie sind eine Form von Textdateien, die Daten in einem lesbaren Format speichern. `json` steht für JavaScript Object Notation und das Format basiert auf JavaScript-Objekten.\n",
"\n",
"Eine `json`-Datei besteht aus Key-Value-Paaren, die miteinander durch Kommas getrennt sind. Die `keys` sind meist Zeichenketten, die in doppelten Anführungszeichen stehen, und die `values` können verschiedene Datentypen sein, wie Zahlen, Strings, Objekte oder Arrays/Listen.\n",
"\n",
"Das JSON-Format ermöglicht es, Daten einfach zu lesen und zu schreiben und es ist ein Standard für den Datenaustausch in vielen Web-API's.\n",
"\n",
"Beispiel (hash/dictionary/object):\n",
"\n",
"\n",
"```\n",
"{\n",
" \"Berlin - Stadt\": {\n",
" \"Postleitzahl\": 10178,\n",
" \"Fläche (km²)\": 891.12,\n",
" \"bev_insg\": 3677472,\n",
" \"bev_m\": 1807826,\n",
" \"bev_w\": 1869646\n",
" },\n",
" ...\n",
"}\n",
" \n",
"```\n",
"\n",
"Beispiel (array/list):\n",
"\n",
"```\n",
"[\n",
" {\n",
" \"Stadt\": \"Berlin - Stadt\",\n",
" \"Postleitzahl\": 10178,\n",
" \"Fläche (km²)\": 891.12,\n",
" \"bev_insg\": 3677472,\n",
" \"bev_m\": 1807826,\n",
" \"bev_w\": 1869646\n",
" },\n",
" ...\n",
"]\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import pandas\n",
"\n",
"# top50_german_cities_array.json \n",
"# top50_german_cities_hash.json"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import json\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### HTML (Hypertext Markup Language)\n",
"\n",
"HTML (Hypertext Markup Language) ist eine Programmiersprache zur Strukturierung von Webseiten.\n",
"Wir schauen uns im Folgenden an, wie man sehr einfach Tabellen aus Webseiten in Python laden kann ohne die Tabelle oder die Webseite herunterzuladen und anschließend schauen wir nochmal auf das allgemeine Laden von html Dateien in Python.\n",
"\n",
"1. HTML-Tabellen in Webseiten:\n",
"https://de.wikipedia.org/wiki/Liste_der_Gro%C3%9Fst%C3%A4dte_in_Deutschland"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import pandas\n",
"\n",
"# https://de.wikipedia.org/wiki/Liste_der_Gro%C3%9Fst%C3%A4dte_in_Deutschland"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"2. allgemeine HTML Seiten abrufen und in Python lesen"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import requests"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from bs4 import BeautifulSoup"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"XML (Extensible Markup Language) ist eine Programmiersprache zur Beschreibung und Übertragung von Daten. Eine XML-Datei kann Daten in einer hierarchischen Struktur speichern, in der jedes Element ein anderes Element enthalten kann.\n",
"\n",
"Mit Pandas kann man eine XML-Datei lesen, indem man die Methode read_xml() verwendet. Diese Methode kann eine XML-Datei einlesen und in ein Pandas-DataFrame umwandeln. Man muss allerdings angeben, welches Element als Wurzelelement verwendet werden soll, da die XML-Datei sonst nicht richtig eingelesen werden kann."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### tar/gz (Archivformate)\n",
"\n",
"Tar/gz Dateien sind Archivformate (genauso wie zum Beispiel .zip), die mehrere Dateien in einer einzigen Datei komprimieren und speichern. Diese Archivformate werden oft verwendet, um Daten effizient zu übertragen oder zu sichern, da sie den Speicherplatz sparen und die Übertragungszeit verkürzen.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import tarfile\n",
"import pandas \n",
"\n",
"# top50_german_cities.tar.gz\n",
"\n",
"with tarfile.open(\"top50_german_cities.tar.gz\", \"r:gz\") as tar:\n",
" members = tar.getmembers()\n",
" for member in members:\n",
" print(pandas.read_xml(member.name).head(1))"
]
}
],
"metadata": {
"language_info": {
"name": "python",
"pygments_lexer": "ipython3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}