pandas und matplotlib im praktischen einsatz
Post on 13-Dec-2014
895 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
?
top related