Pandas und matplotlib im praktischen Einsatz

Post on 13-Dec-2014

895 views 1 download

description

Präsentation auf dem PyBonn UserGroup Meeting am 27.02.2013 - Thema "Scientific Computing" - mit Vorträgen zu pandas und matplotlib. Der Vortrag zeigt den praktischen Einsatz von pandas und matplotlib am Beispiel des Forschungsprojektes EnArgus.

Transcript of Pandas und matplotlib im praktischen Einsatz

Das EnArgus-System: Pandas und matplotlib im praktischen Einsatz

Thomas Koch OrbiTeam Software GmbH & Co. KG

PyBonn 27.02.2013, Bonn

Kurzvorstellung: EnArgus-Projekt

• Ziel: Entwicklung und Erprobung eines zentralen Informationssystems für Energieforschungs-vorhaben aus dem Bereich der Förderung durch Bund und Länder

• Zielgruppen: – Die interessierte Öffentlichkeit

• Überblick über Forschungsprojekte Einfache Suchfunktionen

– Die Politik: Ministerien & Projektträger • Was wird/wurde gefördert (inhaltliche Fragen) • Forschungstrends, Experten, Verteilung Fördermittel etc. Komplexe Recherche- und Visualisierungsfunktionen

27.02.2013 EnArgus@PyBonn 2

EnArgus: Teilsysteme

Für die Öffentlichkeit Für die interne Nutzung

EnArgus.public

• Einfache Bedienung

• Ansprechende Webseiten

• Eingeschränkter Zugriff

• Einfache Suchfunktionen

• Faceted Search

• Zugriff auf EnArgus.wiki

EnArgus.master

• Expertensuche

• Vollzugriff auf Vorhaben

• Hinzufügen von Inhalten

• Statistische Auswertungen

• Graphische Visualisierungen

• Suchen speichern & veröffentlichen

27.02.2013 EnArgus@PyBonn 3

Recherche-Cockpit

Energie-forschungs

-Wiki

BSCW Core

EnArgus-DB Index Dokumente

Ontologie Core

Ontologie-DB

Kooperations- Unterstützg.

Ontologie- Editor

Auswertung & Visualisierung

Suchanfragen & -ergebnisse

Wiki-Texte

Wiki Core

EnArgus Systemarchitektur

27.02.2013 EnArgus@PyBonn 4

ENARGUS.MASTER Auswertungen

• Akkumulation der Suchergebnisse

– z.B. Fragestellung: Verteilung der Förderkosten über die Jahre

• Technik

– pandas,matplotlib

27.02.2013 EnArgus@PyBonn 5

Recherche-Cockpit

Ziele: – Nach der Suche soll Ergebnisanalyse möglich sein:

• Gruppierung, Summierung und andere Auswertungsfunktionen

• Auswahl der Daten soll durch den Benutzer erfolgen

– Visualisierung der Analyseergebnisse gewünscht • Visualisierung in Form von Kuchen- und Balkendiagrammen

• Auswahl der Darstellung soll durch den Benutzer erfolgen

27.02.2013 EnArgus@PyBonn 6

Recherche-Workflow:

Suchen Filtern & Sortieren

Auswertung Visualisierung

Gruppierung & Aggregation

• Gruppierung: unabhängige Variable x – Zeit (Projektlaufzeit nach Jahren, Monaten)

– Organisation (Zuwendungsempfänger)

– Vorhaben (Menge von Vorhaben)

– …

• Aggregation: abhängige Variable y = f(x) – Summe (Fördersummen der Vorhaben)

– Anzahl (Anzahl von Projekten/Organisationen)

– Minimum oder Maximum

– …

27.02.2013 EnArgus@PyBonn 7

GUI: Formular für Auswertung

Auswahl der Felder, Gruppierung und Darstellung

27.02.2013 EnArgus@PyBonn 8

Visualisierung(en)

27.02.2013 EnArgus@PyBonn 9

Einsatzbereiche von Pandas (im EA-Projekt)

• Pandas – DataFrames: N-dimensionale Arrays

(Speicherung der Suchergebnisse für Auswertung)

– DataFrame Indexing , z.B. einfacher Zugriff auf "Top 10": data = data[:10]

– Sortierung nach bestimmten Werten: data.sort(on)

– Statistische Methoden zur Akkumulation: data.mean(), data.sum(), data.count()

– Anwendung einer Funktion auf einen DataFrame: data.apply(lambda x: 100.*x/total)

– Gruppierung nach einer Spalte: data.groupby(column)

– CSV-Export: data.to_csv(filename, ...)

– … 27.02.2013 EnArgus@PyBonn 10

Einsatzbereiche von Matplotlib (im EA-Projekt)

• Matplotlib – Integration von pandas mit der matplotlib library zur

Anzeige von Daten in Graphen

– Series und DataFrame haben jeweils eine plot()-Methode

– erzeugt Graphen auf Basis der vorliegenden Daten

– Übergabe von Anzeige-Details: data.plot(ax=axis, color='blue')

data.plot(kind='bar', ax=axis)

– Ausgabe am Schirm oder in Datei: figure = plt.figure()

plt.savefig(outputfile)

27.02.2013 EnArgus@PyBonn 11

Demo

Demonstration EnArgus: Recherche-Cockpit

Bibliotheken im Einsatz

• Numpy, Pandas, Matplotlib – Statistische Auswertungen und Visualisierung

(Teil der Pydata Familie)

• GraphViz, pydot – Darstellung von Graphen der Suchanfrage (query)

• PyLucene – Volltextsuche, Facetten

• JPype – Anbindung an Java-Bibliotheken

(hier: Protegé)

27.02.2013 EnArgus@PyBonn 13

Tipps & Tricks

• Matplotlib allgemein – matplotlib erwartet unicode! – Web-GUI: matplotlib muss angewiesen werden,

kein display zu verwenden: matplotlib.use("Agg")

• Matplotlib Design – matplotlib lässt sich auch "anhübschen" bzw. stylen: – einfach: Fonts & Farben:

matplotlib.rcParams.update({'font.family':“Arial“, 'font.size': 12,))

– etwas aufwändiger: schickes Design • z.B. Schatten und Farbverläufe http://ganwellresource.blogspot.de/2012/12/customize-matplotlib-plots.html

• oder auch comic-Style (XKCD): http://jakevdp.github.com/blog/2012/10/07/xkcd-style-plots-in-matplotlib/

27.02.2013 EnArgus@PyBonn 14

Weitere Details zu EnArgus®

• Nationales Forschungsvorhaben – Partner: aus Energieforschung und Informatik

• Fraunhofer FIT, FKIE, UMSICHT und ISI • Forschungszentrum Jülich • Ruhr-Universität Bochum • OrbiTeam Software

– Gefördert durch BMWi • Bundesministerium für Wirtschaft

und Technologie • 5. Energieforschungsprogramm

der Bundesregierung • 2 Jahre Laufzeit

(Juli 2011 bis Juni 2013)

– Mehr Infos: Vortrag auf der PyCon 2012: https://2012.de.pycon.org/programm/schedule/sessions/21/

27.02.2013 EnArgus@PyBonn 15

Diskussion/Fragen

Kontakt für weitere Fragen

• koch@orbiteam.de

• @tomy_koch

Mehr Infos zum Projekt

• www.enargus.de

27.02.2013 EnArgus@PyBonn 16

?