Uebung 01 Dateien. SS 2011H. Werner : DatenalyseÜbung 1 : 2 Rohdaten Einzeldaten Gemessene Daten liegen normalerweise als reelle Zahlen vor, d.h. computertechnisch.

Slides:



Advertisements
Ähnliche Präsentationen
OStR Dipl. Ing. Carsten Kraft
Advertisements

Ausführen.
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Forschungszentrum caesar
Sortieren I - Bubblesort -
Zusammenfassung der Vorwoche
Dr. Andreas Winter Sommersemester 2007 Einführung in die Software-Entwicklung © Institut für Informatik Programmier-Richtlinien vgl. auch
10. Grundlagen imperativer Programmiersprachen
Seminar Stochastik im WS 02/03
Markus Tank, Wie arbeitet man mit dem Rich Text Editor?
Parser generieren Yet Another Compiler – Compiler YACC.
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java: Dynamische Datentypen
Parser - Verfahren: Rekursiver Abstieg
Dateihandles Um in Perl eine bestimmte Datei zum Lesen, Schreiben oder Anhängen zu öffnen, benötigt man so genannte Dateihandles. Ein Dateihandle ist der.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Robotik mit LEGO Mindstorms
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
Zusammenfassung Vorwoche
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Uebung 03 Netzdateien.
Uebung 02 NN Properties b1b1 b2b2 b3b3 b4b4 b INPUTINPUT OUTPUTOUTPUT w 1o w 2o w 3o w 4o w 11 w 12 w 13 w 14 w 21 w 22 w 23 w 24.
zur Vorlesung Neuronale Netzwerke
Das erste Programm (Folie 16)
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
© 2004 Pohlig - Taulien Dokumentation mit JavaDoc.
Das wars!.
Kakuro Regeln und Strategien
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Java programmieren mit JavaKara
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt

FORTRAN 77.
Wiederholte Programmausführung
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Befehle in SQL Erläuterungen.
Programmierung 1. Einführung Seite 1
ADAT©2004 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Reguläre Ausdrücke.
Permanente Datenspeicherung
Dynamische Webseiten-Generierung
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
3. Lineare Befehle 3.1 Die Ausgabefunktion
PHP: Operatoren und Kontrollstrukturen
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Kommandozeile und Batch-Dateien Molekulare Phylogenetik – Praktikum
Vortrag: Frames & Javascript.
Arne Vater Wintersemester 2006/ Vorlesung
Das Traveling Salesman Problem (TSP)
1 Tagesüberblick 4 Lösung Hausaufgabe/Fragen Mustervergleiche.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
7. Formale Sprachen und Grammatiken
1 Tagesüberblick 5 Lösung Hausaufgabe/Fragen Assoziative Felder Funktionen zu Variablenbehandlung.
Programmierungssprache PERL
(Syntax, Strings/Zahlen, Variablen, Arrays)
Ein- und Ausgabe in Java Packet: java.io
Variablen und Datentypen
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Verzweigung oder bedingte Anweisung. Aufgabe: Ein Autofahrer tankt sein Auto voll und schreibt den Kilometerstand auf (drei- stelliger Tageszähler).Wenn.
Datentypen: integer, char, string, boolean
Datentypen: integer, char, string, boolean
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Arrays in C Ein Array ist eine Variable, die aus einer Anzahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
 Präsentation transkript:

Uebung 01 Dateien

SS 2011H. Werner : DatenalyseÜbung 1 : 2 Rohdaten Einzeldaten Gemessene Daten liegen normalerweise als reelle Zahlen vor, d.h. computertechnisch meist als float bzw. long. Datensatz Ein Datensatz ist daher eine Folge (Zeile) fester Länge n von Zahlen und die Prozessdaten bilden wieder eine Folge von Datensätzen Datei Eine Rohdaten-Datei besteht damit aus einer Anzahl von Zeilen, die jeweils n Zahlen enthalten, die durch einen Trenner (Lehrzeichen, Komma o.ä.) voneinander getrennt sind. Zusatzinformationen Manchmal wird noch eine Zeile aus Namen für die n Parameter der Datensätze und manchmal noch Informationen über Bedeutung und Entstehung der Daten vorangestellt.

SS 2011H. Werner : DatenalyseÜbung 1 : 3 Raw-Dateien Im Folgenden erwarten wir von den Rohdatenliferanten Dateien im Textformatfolgender Struktur: Datenzeilen: durch einen Trenner \s, ;, \t,..) getrennte numerische Werte (Textstücke die als Zahlen interpretiert werden können), jede solche Zeile stellt einen Datensatz dar und alle Datensätze sollten gleich viele Parameter (Werte) enthalten. Kommentare: Textzeilen, die nicht mit einem numerischen Wert beginnen und Zeilenenden nach einem Kommentarzeichen #. Um Missinterpretationen zu vermeiden, ist es sinnvoll, auch alle Kommentarzeilen mit # beginnen zu lassen –Kommentarzeilen können z.B. Informationen über den Prozess enthalten, aus dem die Daten stammen. –Meist enthalten Rohdaten-Dateien eine Zeile mit getrennten Namen, die als Bezeichner für die einzelnen Parameter in den Datensätzen dienen. –Oft werden auch numerische Informationen wie Wertebereiche, Anzahl von Daten/Datensatz und Datensätzen, Min, Max, Mittel,… in Kommentarzeilen angegeben.

SS 2011H. Werner : DatenalyseÜbung 1 : 4 Tag-Dateien Numerische Werte werden als Zeichenfolgen notiert, beim Einlesen müssen diese Zeichenfolgen wieder in numerische Werte umgewandelt (geparsed) werden. tag-Dateien Ein bewährtes Format sind die tag-Dateien (eine Vorstufe von XML), in denen die Daten in Elementen zusammengefasst werden. Elemente beginnen und enden mit jeweils einem Namensfeld (tag) der Form und, zwischen denen Daten und/oder weitere Elemente stehen. Die Namen sollen dem Leser hinweise zur Bedeutung der eingeschlossenen Daten und Elemente geben. XML Bei XML kommt noch eine Grammatik hinzu, welche Elemente möglich sind und wie sie ineinander stehen können/sollen. Diese Darstellungsart eignet sich besonders für Darstellungen in Html- Seiten und bei der Verwendung in Datenbanken. Für die Arbeit am Rechner sind die meist zu schwerfällig.

SS 2011H. Werner : DatenalyseÜbung 1 : 5 Datei-header Als sehr nützlich haben sich Kommentarzeilen erwiesen, in dem allgemeine Informationen gesammelt werden. header Im Dateikopf können verschiedene wichtige Informationen gespeichert werden, welcher Art und Herkunft die enthaltenen Daten sind, z.B. # project_name = … # recording_date = … # author = … # separator = … ( Das hier verwendete Trenner-Symbol ) # sample_number = k ( Anzahl der Daten-Zeilen ) # chanel_number = n ( Anzahl der Parameter i.e. Daten/Zeile ) # chanel_names = … ( Folge der Parameter-Namen ; n Items ) etc.

SS 2011H. Werner : DatenalyseÜbung 1 : 6 statistics Oft kann es wichtig sein, über die numerischen Daten in einer Datei numerische Übersichtsinformationen (über die Anzahl von Parametern und Datensätzen hinaus) zu haben. In diesem Bereich können verschiedene numerische Informationen zu den einzelnen Parametern gespeichert werden, z. B. # sum_of_values = …,… # sum_of_squares = …,… # maximum_values = …,… # minimum_values = …,… # mean_values = …,… # range_high = …,… # range_low = …,… etc. Eine solche Statistik-Sektion kann wiederholte Berechnungen immer wieder derselben Zahlwerte ersparen helfen.

SS 2011H. Werner : DatenalyseÜbung 1 : 7 data Der wichtigste Abschnitt ist der Daten - Abschnitt, in dem sich die Datenzeilen (Datensätze, records) befinden. Dieser Abschnitt besteht genau aus den Datenzeilen ohne alle Kommentarzeilen einer Rohdaten-Datei, d.h. er hat so viele Zeilen, wie es Datensätze gibt und jede Zeile enthält die Werte aus einem Datensatz (durch einen Trenner z.B. \t getrennt). Zwischen den Datenzeilen können weitere Kommentarzeilen als Erläuterung stehen.

SS 2011H. Werner : DatenalyseÜbung 1 : 8 Aufgabe 1: Entwickle get, set und append Hilfsprogramme, mit denen bestimmte Kommentar- oder Datenzeilen aus einer raw-datei geholt werden können get(string) file nimmt ein Textstück string (z.B. # author=) entgegen, sucht in der Datei file eine Zeile, die mit string anfängt und gibt den Rest der Zeile nach dem string aus. Wenn eine solche Zeile nicht existiert, wird der leere String ausgegeben set(string,zeile) file nimmt Textstück string (z.B. # author=) und zeile entgegen, sucht in der Datei file eine Zeile, die mit string anfängt, löscht diese Zeile, falls sie existiert, und schreibt stattdessen die Konkatenation string zeile in diese Datei. append(string,zeile) file tut dasselbe, wie set, nur daß die gefundene Zeile nicht gelöscht wird, sondern append hängt zeile an die gefundene Zeile an (z.B. einen weiteren Autor), wenn eine solche Zeile nicht gefunden wird, wird string zeile als neue Zeile in die Datei geschrieben. Beachte: append ist aus set unmittelbar definierbar: append(string,zeile) = set(string,get(string)zeile)

SS 2011H. Werner : DatenalyseÜbung 1 : 9 Aufgabe 2 Eine wichtige Hilfsfunktion ist makeStatistics(file ), die die Datenzeilen (weder Kommentar noch Leerzeile) des Files einmal durchgeht und dabei die folgenden Eintragungen berechnet und einträgt: # sample_number = ( Anzahl der Daten-Zeilen ) # chanel_number = ( Anzahl der Parameter i.e. Daten/Zeile ) # sum_of_values = …,… ( pro Spalte die Summe aller Werte ) # sum_of_squares = …,… ( pro Spalte die Summe der Quadrate aller Werte ) # maximum_values = …,… ( pro Spalte das Maximum aller Werte ) # minimum_values = …,… ( pro Spalte das Minimum aller Werte ) # mean_values = …,… ( pro Spalte der Mittelwert aller Werte sum_of_values / sample_number )

SS 2011H. Werner : DatenalyseÜbung 1 : 10 AWK Eine sehr geeignete Sprache dafür ist awk (eine Erweiterung von sed in der UNIX-Welt), die auf command-line-Ebene automatisierte Veränderungen auf Textdateien durchführen kann. enthält ein sehr gutes Tutorial. Liest Dateien zeilenweise ein, zerlegt die Zeilen in Worte (Textstücke ohne Trenner) und interpretiert alle Worte, die Zahlen darstellen können als Zahlen.

SS 2011H. Werner : DatenalyseÜbung 1 : 11 AWK Arbeitsweise Ein awk-Befehl (Regel) ist von der Bauart: awk MUSTER { AKTION } Dabei steht MUSTER für einen Ausdruck, der für eine Textzeile wahr oder falsch sein kann (boolescher oder regulärer Ausdruck) AKTION ist ein Programmstück, dessen elementare Operationen Textzeilen in gegebene Dateien schreiben. Der Befehl wird ausgeführt, indem – nacheinender die Zeilen (Records) aus einer Textdatei gelesen werden. –Wenn die gelesene Zeile das Muster erfüllt, wird die Aktion auf diese Zeile angewendet. –Die Abarbeitung endet, wenn die gesamte Textdatei gelesen worden und jede zugehörige Aktion durchgeführt worden ist. AWK schreibt immer in eine andere Datei als die, aus der sie liest, meistens stdout und stdin.

SS 2011H. Werner : DatenalyseÜbung 1 : 12 AWK eigene Variablen AWK hat eigene Variablen, die in Mustern und Aktionen verwendet werden VariableBeschreibungDefaultSymbol $0Ganzer aktueller Recordkeiner$0 $1..$nEinzelne Felderkeiner$1..$n NFZahl Felder im Recordkeinern FSEingabe FeldseparatorSpace, Tab+ OFSAusgabe FeldseparatorSpacekeines NRNummer des akt: Recordkeinerkeiner RSInput Record SeparatorNewline/ ORSOutput Record SeparatorNewlinekeiner FILENAMEName der aktuellen Datei

SS 2011H. Werner : DatenalyseÜbung 1 : 13 AWK - Einzeiler Anzahl Eingabezeilen ausgeben: –END { print NR } END ist wahr, wenn das Dateiende erreicht ist. Gesamtzahl aller Felder (Wörter) aller Eingabezeilen ausgeben: –{ nw += NF } END { print nw } Alle nicht-Kommentarzeilen ausgeben –{$1 != #} {print $0} Jede nichtleere Zeile ausgeben: –NF>0 Jede Zeile mit ihrer Zeilennummer davor ausgeben: –{print NR,$0}

SS 2011H. Werner : DatenalyseÜbung 1 : 14 Leerzeichen Leerzeichen, die in AWK Programmen fast überall stehen dürfen, sind unter Windows auf der AWK-Command-Line nicht möglich, weil CMD das Leerzeichen als Trenner für Parameter interpretiert. Die oben aufgeführten 1-Zeiler müssen also komprimiert oder ungeschrieben werden zu: awk END{print(NR)} 1.dat awk {nw+=NF}END{print(nw)} 1.dat awk {if($0~/^#/);else{print($0)}} 1.dat awk {if(NF!=0){print($0)}} 1.dat awk {print(NR,$0)} 1.dat awk {if(NF==0){print($0);}else{if($0~/^#/){print($0);}\ else{(zaehler+=1);print(zaehler,$0)}}} 1.dat

SS 2011H. Werner : DatenalyseÜbung 1 : 15 Einsatz In einem Cmd-Fenster von Windows gehen wir in das Unterverzeichnis unserer Datenfiles. awk muß im Pfad sein. Wir geben ein awk { print NR, $0 } pts.dat >ptsNr.dat Pts.dat ptsNr.dat

SS 2011H. Werner : DatenalyseÜbung 1 : 16 AWK Parameter In AWK gibt es einen Parameter Übergabe Mechanismus, der über die speziellen Variablen ARGV und ARGC gesteuert wird ARGV ist der Vektor aller Parameter des awk –Befehls. ARGC ist die Anzahl der Parameter, also die Länge von ARGV. ARGV[0] ist der Befehlsname awk ARGV[1] … ARGV[ARGC-1] sind die Parameter, die nach dem eigentlichen Befehl aufgeführt werden Der Befehl : awk {BEGIN {for ( i = 0; i < ARGC; i++ ) {print ARGV[i]}}} eins zwei drei gibt folgendes auf dem Bildschirm aus: awk eins zwei drei

SS 2011H. Werner : DatenalyseÜbung 1 : 17 AWK Parameter 2 Ein alternativer Mechanismus ist die –v (value-) Option von awk. Durch awk –v a=1 –v b=heinz … werden im Befehl vor der BEGIN Sektion die Variablen a und b eingeführt und mit den Werten 1 bzw. heinz initialisiert.

SS 2011H. Werner : DatenalyseÜbung 1 : 18 Strings prüfen Wie prüft man z.B., ob eine Zeile mit einem bestimmten String anfängt (z.B. # author) Hier bieten sich reguläre Ausdrücke als Werkzeug an z.B. $0 ~ /^# author/ ~ bedeutet kommt vor in ^ steht für den Textanfang // ist die Einschlussklammer für reguläre Ausdrücke ($1 == /#/) && ($2 == /author/) Beim voreingestellten Trennungszeichen wird # in $1 und author in $2 landen

SS 2011H. Werner : DatenalyseÜbung 1 : 19 AWK - Typen Der wichtigste Datentyp von awk ist der String (Zeichenkette, Text), eine besondere Rolle spielen dabei die Worte, die keine white spaces enthalten. awk wandelt nach Bedarf und Möglichkeit Worte in Zahlen (numerische Werte) um und auch umgekehrt. Die Ausdrücke a+0 bzw. a (Konkatenation ) erzwingen die Interpretation als Zahl bzw. als String. awk verwendet 0 und als booleschen Wert FALSE und alle übrigen Werte als TRUE.

SS 2011H. Werner : DatenalyseÜbung 1 : 20 AWK Vektoren Variablennamen haben keinen vorgegebenen Typ und können auch als Vektoren verwendet werden Beispiel for (i = 1; i < NR; i++) eingabe[i]=$i; Die Variable eingabe enthält nun gerade die Worte bzw. Zahlen, die in der aktuell eingelesenen Zeile stehen. Solche Vektoren sind z.B. hilfreich, wenn die statistik-Zeilen erzeugt werden sollen

SS 2011H. Werner : DatenalyseÜbung 1 : 21 Beispiel In einer Datei sollen vor jeden Record (Zeile mit numerischen Daten) die Record-Nummer geschrieben werden. Inhalt der Datei RNzaehlen.awk : BEGIN {RN = 0} {if (($1>=0)||($1<=0)) {RN++ ; print RN, $0} else {print $0}} Das Muster BEGIN ist nur vor dem Lesen des ersten records wahr, es wird eine Variable RN mit 0 initialisiert Wenn die aktuelle Zeile $0 mit einem numerischen Wert $1 anfängt (ein Record), so wird RN inkrementiert und vor die vorhandene Zeile herausgeschrieben, andernfalls (ein Kommentar oder Leerzeile …) wird nur die vorhandene Zeile unverändert herausgeschrieben. awk -f "RNzaehlen.awk" pts.dat >ptsRN.dat