Intake-GUI : Erkunden von Daten in einer grafischen Oberfläche#
Intake-GUI wurde neu implementiert, sodass sie nicht nur in Jupyter-Notebooks, sondern auch in anderen Webanwendungen bereitgestellt werden kann. Er zeigt den Inhalt aller installierten Kataloge an und ermöglicht die Auswahl lokaler und entfernter Kataloge sowie das Durchsuchen und Auswählen von Einträgen aus diesen.
Intake unterstützt die Arbeitsteilung zwischen den Bereichen Data-Engineering, die Daten kuratieren, verwalten und verbreiten, und den Datenwissenschaften, die Daten analysieren und visualisieren ohne wissen zu müssen, wie sie gespeichert sind.
Das Intake-GUI basiert auf Panel wobei das Bedienfeld eine zusammensetzbare Dashboard-Lösung für die Anzeige von Plots, Bildern, Tabellen, Texten sowie Widgets bietet. Panel funktioniert sowohl in einem Jupyter-Notebook als auch in einer eigenständigen Tornado-Anwendung.
Aus Sicht des Data-Engineering bedeutet dies, dass die Aufnahme-GUI an einem Endpunkt bereitgestellt und als Datenexplorationswerkzeug für Datenbenutzer verwenden werden kann. Dies bedeutet auch, dass es einfach ist, die GUI anzupassen und neu zu organisieren, um euer eigenes Logo einzufügen, Teile davon in euren eigenen Anwendungen wiederzuverwenden oder neue Funktionen hinzuzufügen.
Zukünftig soll Intake-GUI auch die Eingabe von Benutzerparametern erlauben sowie das Bearbeiten und Speichern von Katalogen.
[1]:
import intake
intake.gui
[1]:
Das GUI enthält drei Hauptbereiche:
eine Liste von Katalogen. Der standardmäßig angezeigte builtin-Katalog enthält im System installierte Datensätze, genau wie
intake.cat
.eine Liste der Quellen im aktuell ausgewählten Katalog.
eine Beschreibung der aktuell ausgewählten Quelle.
Ad 1: Kataloge#
Aktuell wird in der Liste der Kataloge kein Katalog angezeigt. Unter den drei Hauptbereichen befinden sich jedoch drei Schaltflächen, mit denen Kataloge hinzugefügt, entfernt oder durchsucht werden können.
Die Schaltflächen sind auch über die API verfügbar, z.B. für Add Catalog mit:
[2]:
intake.gui.add("./us_crime/us_crime.yaml")
Remote-Kataloge sind z.B. verfügbar unter
Ad 2. Quellen#
Durch die Auswahl einer Quelle aus der Liste wird der Beschreibungstext auf der linken Seite der Benutzeroberfläche aktualisiert.
Auch dieser ist über die API verfügbar:
[3]:
intake.gui.sources
[3]:
[name: us_crime
container: dataframe
plugin: ['csv']
description: US Crime data [UCRDataTool](https://www.ucrdatatool.gov/Search/Crime/State/StatebyState.cfm)
direct_access: forbid
user_parameters: []
metadata:
plots:
line_example:
kind: line
y: ['Robbery', 'Burglary']
x: Year
violin_example:
kind: violin
y: ['Burglary rate', 'Larceny-theft rate', 'Robbery rate', 'Violent Crime rate']
group_label: Type of crime
value_label: Rate per 100k
invert: True
args:
urlpath: {{ CATALOG_DIR }}/data/crime.csv]
Dieser besteht aus einer Liste regulärer Intake-Datenquelleinträge. Um uns die ersten Einträge anzuschauen, können wir folgendes eingeben:
[4]:
source = intake.gui.sources[0]
source.to_dask().head()
[4]:
[200~Year | Population | Violent crime total | Murder and nonnegligent Manslaughter | Legacy rape /1 | Revised rape /2 | Robbery | Aggravated assault | Property crime total | Burglary | ... | Violent Crime rate | Murder and nonnegligent manslaughter rate | Legacy rape rate /1 | Revised rape rate /2 | Robbery rate | Aggravated assault rate | Property crime rate | Burglary rate | Larceny-theft rate | Motor vehicle theft rate | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1960 | 179323175 | 288460 | 9110 | 17190 | NaN | 107840 | 154320 | 3095700 | 912100 | ... | 160.9 | 5.1 | 9.6 | NaN | 60.1 | 86.1 | 1726.3 | 508.6 | 1034.7 | 183.0 |
1 | 1961 | 182992000 | 289390 | 8740 | 17220 | NaN | 106670 | 156760 | 3198600 | 949600 | ... | 158.1 | 4.8 | 9.4 | NaN | 58.3 | 85.7 | 1747.9 | 518.9 | 1045.4 | 183.6 |
2 | 1962 | 185771000 | 301510 | 8530 | 17550 | NaN | 110860 | 164570 | 3450700 | 994300 | ... | 162.3 | 4.6 | 9.4 | NaN | 59.7 | 88.6 | 1857.5 | 535.2 | 1124.8 | 197.4 |
3 | 1963 | 188483000 | 316970 | 8640 | 17650 | NaN | 116470 | 174210 | 3792500 | 1086400 | ... | 168.2 | 4.6 | 9.4 | NaN | 61.8 | 92.4 | 2012.1 | 576.4 | 1219.1 | 216.6 |
4 | 1964 | 191141000 | 364220 | 9360 | 21420 | NaN | 130390 | 203050 | 4200400 | 1213200 | ... | 190.6 | 4.9 | 11.2 | NaN | 68.2 | 106.2 | 2197.5 | 634.7 | 1315.5 | 247.4 |
5 rows × 22 columns
[5]:
source.gui
[5]:
[6]:
intake.gui.source.description
[6]:
[7]:
cat = intake.open_catalog("./us_crime/us_crime.yaml")
cat.gui
[7]:
[8]:
us_crime = cat.gui.sources[0]
[9]:
intake.output_notebook()
us_crime.plot.bivariate(
"Burglary rate",
"Property crime rate",
legend=False,
width=500,
height=400
) * us_crime.plot.scatter(
"Burglary rate",
"Property crime rate",
color="black",
size=15,
legend=False,
) + us_crime.plot.table(
[
"Burglary rate",
"Property crime rate"
],
width=350,
height=350
)
[9]:
Ad 3. Quellansicht#
Sobald Kataloge geladen sind und die gewünschten Quellen ausgewählt wurden, sind diese unter dem Attribut intake.gui.sources
verfügbar. Jeder Quelleneintrag verfügt über Methoden und kann wie jeder Katalogeintrag als Datenquelle geöffnet werden. Für Source: UCMerced_LandUse_by_landuse sieht der Eintrag beispielsweise so aus:
name: UCMerced_LandUse_by_landuse
container: None
plugin: []
description: All images matching given landuse from UCMerced_LandUse/Image.
direct_access: forbid
user_parameters: [{'name': 'landuse', 'description': 'which landuse to collect', 'type': 'str', 'default': 'airplane'}]
metadata:
args:
urlpath: s3://earth-data/UCMerced_LandUse/Images/{{ landuse }}/{{ landuse }}{id:2d}.tif
storage_options:
anon: True
concat_dim: id
coerce_shape: [256, 256]
Unter der Liste der Quellen befindet sich eine Reihe von Schaltflächen zum Erschließen der ausgewählten Datenquelle: Dabei öffnet Plot ein Unterfenster zum Anzeigen der vordefinierten (d.h. der in yaml angegebenen) Plots für die ausgewählte Quelle.
Siehe auch