Guten Abend Als Student bekommt man ja manchmal undankbare Aufgaben. Meine heutige ist, das anpassen von zwei Messreihen. Die eine besteht aus Wetterdaten (Temperatur und Einstrahlung), welche als halbstündliche Mittelwerte zur Verfügung stehen. Die andere Messreihe sind Temperaturen aus einem Heizungssystem, welche alle 15 (!) Sekunden aufgenommen worden sind. Das sind über 300.000 Werte pro Jahr. Mir liegen die Daten in einer Excel Datei mit 91 (!) Spalten vor, wobei die ersten beiden Spalten das Datum und die Uhrzeit sind. Jetzt die alles entscheidende Frage: Wie kann ich möglichst automatisch diese riesen csv Datei einlesen und alle 120 Zeilen den Mittelwert einer jeden Spalte berechnen und wieder abspeichern? Wenn mir da jemand zu einer einfachen Lösung verhelfen kann, wäre ich sehr erleichtert. Danke und Gruß
Ich verstehe gar nicht, wo das Problemchen sein soll. Wenn nicht mit Excel, womit dann?
Probiers einfach mal mit der Funktion "Mittelwert" in Excel Einfach die gewünschten Bereiche markieren und die Funktion benutzen
Hier die Funktion =MITTELWERT(B3:C29) für B3 oder C29 musst du halt deine Spalten und Zeilen eintragen, indenen deine Daten sind
VBA ist dein Freund:
1 | Sub FaulerStudent |
2 | |
3 | dim i as integer |
4 | dim j as integer |
5 | dim Mittelwert as integer |
6 | |
7 | for i=1 to EndeDerListe step 1 |
8 | |
9 | Mittelwert = 0 |
10 | |
11 | for j=1 to 150 step 1 |
12 | Mittelwert = Mittelwert + Activesheet.Cells(i*j, SpaltenNr) |
13 | next j |
14 | |
15 | MsgBox("Mittelwert " & CStr(i) & " :" & Cstr(Mittelwert) |
16 | |
17 | next i |
18 | |
19 | End Sub |
Schnell mal reingetippt, debuggen musst du schon selbst
Neue Spalte, in der jeweils 120 Zeilen denselben "Schlüssel" bekommen, dann eine Pivot-Tabelle draus, fertig.
Michael schrieb: > Probiers einfach mal mit der Funktion "Mittelwert" in Excel > > Einfach die gewünschten Bereiche markieren und die Funktion benutzen Ja, das ist der Weg den ich gehen sollte. Aber es sind, wie gesagt, 300k werte pro Jahr und das über mindestens drei Jahre
perl. wenn du öfter so zeug machen musst, solltest du dir eine geeignete scripsprache reinschaffen. ansonsten klickst du dir ganz stumpfsinnig nen wolf.
Nutz Excel! Sei mir nicht böse, aber meiner Vermutung nach studierst du eine Ingenieurswissenschaft. Also verhalt dich wie ein Ing: Mach die Excel Hilfe auf und such nach Mittelwert wie oben geschrieben.
Einfach Formel eingeben und ziehen ($-Zeichen verwenden, um fixe Teile nicht mit zu verändern). Deiner Beschreibung nach klingt das, als könnte man das mit Excel in 30 Sekunden machen, ohne Referenzdatei kann man es leider nicht testen/zeigen. Gruß Kai PS: Ich persönlich bin auch Freund von freier Programmierung (z.B. Skriptsprache). Ich bin aber doch immer wieder überrascht, wie viel Mühe sich Microsoft bei Excel gegeben hat, um Skripte durch native Befehle zu vermeiden. Dafür muss der Nutzer dann halt die Spezialbefehle lernen statt einer anderen Sprache.
Moki schrieb: > Mach die Excel Hilfe auf und such nach Mittelwert wie oben geschrieben. Wie man einen Mittelwert in Excel bildet ist mir klar. Das hätte ich vielleicht anfangs deutlich machen sollen. Bitte entschuldigt. Ich suche einen Weg, wie ich diese große Datenmenge automatisch bearbeiten kann. VBA kenne ich noch gar nicht, könnte mir aber vorstellen, dass das eine gute Lösung abgeben wird.
Kolja L. schrieb: > Mir liegen die Daten in einer Excel Datei mit 91 (!) Spalten vor, > wobei die ersten beiden Spalten das Datum und die Uhrzeit sind. Da hat wohl einer richtig drüber nachgedacht, wie die Daten hinterher weiter verarbeitet werden sollen. Importiere das Zeugs in DIAdem. Das kann mit solchen Datenmengen recht zügig umgehen.
Kolja L. schrieb: > VBA kenne ich noch gar nicht, könnte mir aber vorstellen, dass das eine > gute Lösung abgeben wird. Ja, kann mit mit VBA machen. Ist aber keine gute Lösung, da Excel mit Makros eine massive Sicherheitslücke ist und extrem ungerne gesehen wird. Ich kann aber nicht nachvollziehen, wo dein Problem mit einfach Formel und ziehen (kleines, schwarzes Rechteck des makierten Bereichs mit dem kleinen, schwarzen Kreuz der Maus) ist. Aber ohne Beispieldatei (Notfalls tut es auch ein Ausschnitt aus den Originaldaten, wenn du die veröffentlichen darfst) kann ich da leider nicht weiterhelfen. Gruß Kai
Wolfgang schrieb: > Da hat wohl einer richtig drüber nachgedacht, wie die Daten hinterher > weiter verarbeitet werden sollen. Das ist auch mein Verdacht. Ich prophezeie sogar, dass meine Aufgabe, alles auf halbstündige Werte zu bringen, nicht die Lösung sein wird. Wahrscheinlich müssen beide Datensätze auf minütliche Werte angepasst werden. Sebastian S. schrieb: > Kann Excel denn überhaupt 300000 Zeilen? Ja, hatte auch schon mal 1.6 Millionen Zeilen. Kai S. schrieb: > Deiner Beschreibung nach klingt das, als könnte > man das mit Excel in 30 Sekunden machen, ohne Referenzdatei kann man es > leider nicht testen/zeigen. Die Uhr läuft :-)
Kolja L. schrieb: > VBA kenne ich noch gar nicht, könnte mir aber vorstellen, dass das eine > gute Lösung abgeben wird. Nein. VBA ist ein Werkzeug das nur auf einer einzigen Insel funktioniert, eine Insel die mit "M" anfängt und mit "ft" aufhört und die leider mit nichts anderem auf der Welt kompatibel ist, darin mehr Zeit zu verschwenden als zwingend nötig ist um von eben dieser Insel runterzukommen ist das Gegenteil von vernünftig. Schaff als erstes die Daten raus aus Excel. Dann verarbeite die Daten mit irgend einer Scriptsprache, vorzugsweise (im Interesse der Investitionssicherheit für Deine investierte Zeit) suchst Du Dir eine Sprache aus die auf der ganzen Welt (und nicht nur auf der oben genannten Insel) funktioniert und auch für mehr als nur eine Anwendung von Nutzen ist. Ich persönlich würde für den Anfang Python empfehlen. Oben hat einer Perl empfohlen, das ist auch OK, ist halt Geschmackssache, als Allzwecksprachen sind beide gut geeignet (und noch etliche mehr).
:
Bearbeitet durch User
Bernd K. schrieb: > eine Insel die mit "M" anfängt und mit "ft" "M......ft" ist keine Insel sondern ein Kontinent. Auch wenn die L...x Eingeborenen das anders sehen.
Kolja L. schrieb: > Die Uhr läuft :-) Bitte schön. Zugegeben, hat einen Moment länger gedauert, da ich nicht realisiert habe, das du die Daten der Mittelwerte ohne Leerzeilen haben möchtest. Daher der extra Schritt über die indirekte Adressierung. Gruß Kai
Danke, bin gespannt. Muss nur gerade mit der Familie vor dem Fernseher verweilen
exel geht es ist aber bei der Datenmenge nervig. Wenn du Student bist dann hast du doch Matlab. Schreib dir damit nen Tool, dass geht auf Dauer schneller als mit exel, das kommt bei 300000 Messwerten langsam an die Grenze. Wenn du Hilfe brauchst schreib ne Mail dann bekommst du Beispiel.
Marc E. schrieb: > exel geht es ist aber bei der Datenmenge nervig. Wenn du Student bist > dann hast du doch Matlab. Und ansonsten funktioniert auch Octave wunderbar. Wäre auch meine erste Wahl und nutze ich auch geschäftlich viel für CSV Import + Berechnungen + Visualisierung/Export. Da dürfen es auch gerne Mal größere Datenmengen sein. Ansonsten hat man so etwas auch schnell in C# o.Ä. geschrieben.
Noch einmal: warum machst du nicht einfach eine Pivot? Einmal einrichten 5 Minuten, und wenn du später das Intervall ändern musst ist das in 30 Sekunden geschehen.
Frank schrieb: > Und ansonsten funktioniert auch Octave wunderbar. > Wäre auch meine erste Wahl Dito, mit mean(csvread($dateiname)) ist es in < 10 Sekunden getan. Ok, vielleicht noch den Datenbereich einmalig anpassen... Aber octave hat das berechnet bevor Excel überhaupt offen ist!
Jan H. schrieb: > Noch einmal: warum machst du nicht einfach eine Pivot? Weil ich noch nicht ganz verstanden habe, wie du das meinst.
Kolja L. schrieb: > Wie kann ich möglichst automatisch diese riesen csv Datei > einlesen und alle 120 Zeilen den Mittelwert einer jeden > Spalte berechnen und wieder abspeichern? Du laesst den GLEITENDEN MITTELWERT ueber 120 Zeilen berechnen und verwendest nur jede 120. Zeile. Bitte sehr; keine Ursache. :)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.