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.
1. Das EnArgus-System:
Pandas und matplotlib
im praktischen Einsatz
Thomas Koch
OrbiTeam Software GmbH & Co. KG
PyBonn 27.02.2013, Bonn
2. 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
3. EnArgus: Teilsysteme
Für die Öffentlichkeit Für die interne Nutzung
EnArgus.public EnArgus.master
• Einfache Bedienung • Expertensuche
• Ansprechende Webseiten • Vollzugriff auf Vorhaben
• Eingeschränkter Zugriff • Hinzufügen von Inhalten
• Einfache Suchfunktionen • Statistische Auswertungen
• Faceted Search • Graphische Visualisierungen
• Zugriff auf EnArgus.wiki • Suchen speichern &
veröffentlichen
27.02.2013 EnArgus@PyBonn 3
5. 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
6. Recherche-Cockpit
Recherche- Suchen
Filtern &
Auswertung Visualisierung
Workflow: Sortieren
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
7. 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
8. GUI: Formular für Auswertung
Auswahl der Felder, Gruppierung und
Darstellung
27.02.2013 EnArgus@PyBonn 8
10. 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
11. 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
13. 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
14. 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
15. 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
16. ? 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