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:

  1. eine Liste von Katalogen. Der standardmäßig angezeigte builtin-Katalog enthält im System installierte Datensätze, genau wie intake.cat.

  2. eine Liste der Quellen im aktuell ausgewählten Katalog.

  3. 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