Hallo,
aus einem Datenerfassungssystem erhalte ich einen CSV Export mit 10
Werten pro Datenzeile mit einer zeitlichen Auflösung von 1 Minute.
Leider splittet das System den Export pro Datenzeile in 10 Zeilen.
Das ganze sieht dann etwa so aus:
1
23.05.2022 05:59:00;1;;;;;;;;;
2
23.05.2022 05:59:00;;2;;;;;;;;
3
23.05.2022 05:59:00;;;3;;;;;;;
4
23.05.2022 05:59:00;;;;4;;;;;;
5
23.05.2022 05:59:00;;;;;5;;;;;
6
23.05.2022 05:59:00;;;;;;6;;;;
7
23.05.2022 05:59:00;;;;;;;7;;;
8
23.05.2022 05:59:00;;;;;;;;8;;
9
23.05.2022 05:59:00;;;;;;;;;9;
10
23.05.2022 05:59:00;;;;;;;;;;10
Leider kann ich an der Art des Exports nichts ändern. Händisch ändern
ist eigentlich keine Option, ein Export geht immer über 2 Tage womit
immer 28800 Zeilen zusammenkommen, anstatt 2880.
Hat jemand einen Tip wie ich die jeweils 10 Datenzeilen wieder in eine
Zeile zurückc "mergen" kann?
Danke.
Mit cut vorne das Datum entfernen.
Dann mit sed alle Semikolons durch Blanks ersetzen.
Dann hat man nur noch die Daten in einer Zeile einzeln.
Fehlt nur noch die jeweils 10 Zeilen zusammen fassen. Dafür habe ich im
Moment noch keine Idee.
Da gibt es bestimmt was mit einem Shell-Script.
Mit der Programmiersprache deiner Wahl !
Datei zeilenweise in einer Schleife auslesen und dabei einen Zähler
mitführen, der beim Auslesen jeder Zeile um 1 erhöht wird. Dabei mit
Modulo 10 abfragen. Solange Zähler MOD 10 größer 0 ist, den gelesenen
String
an den bestehenden String anhängen. Wenn Zähler Mod 10 gleich 0 ist,
den eingelesenen String auch noch anhängen und dann in eine 2. Datei
wegschreiben. Dann den 2. String aber mit = "" löschen.
Mit einem Basic - Dialekt würde das etwa so aussehen :
1
Declare String zeile1, zeile2, Int z
2
z = 1
3
zeile2 = ""
4
cls
5
Assign #1, "F:\Modulo.txt"
6
Reset #1
7
Assign #2, "F:\ModTest.csv"
8
Rewrite #2
9
10
WhileNot Eof(#1)
11
Input #1, zeile1
12
If (z Mod 10) > 0
13
zeile2 = zeile2 + zeile1
14
ElseIf (z Mod 10) = 0
15
zeile2 = zeile2 + zeile1
16
Print #2, zeile2
17
zeile2 = ""
18
EndIf
19
Inc z
20
EndWhile
21
22
Close #1
23
Close #2
24
25
waitkey
Das ist jetzt zwar in XProfan getippt, aber auch ganz leicht in eine
andere Sprache zu portieren.
csv_problem schrieb:> Hat jemand einen Tip wie ich die jeweils 10 Datenzeilen wieder in eine> Zeile zurückc "mergen" kann?
Was willst du denn noch mit den CSV Daten machen? Du siehst viele Wege
führen nach Rom, daher würde ich Mittel zur Konvertierung dem nach
gelagerten Prozess unterordnen.
Unter Python könnte man mit Pandas zum Beispiel folgendes machen:
Das geht sogar mit Excel OHNE Programmieren.
Einfach nach Verketten und INDIREKTER Zellen-Adressierung suchen.
Dabei wird die Zelle nicht mit einen festen Wert angesprochen sondern
mit einen berechneten Wert.
Genau, das geht mit Excel-Hausmitteln.
Wenn die Werte in 10 Spalten stehen, daneben 10 Formel-Spalten einfügen,
in denen sich der Inhalt jeweils durch vertikale(!) Verkettung aus 10
Original-Zeilen ergibt. Da immer nur eine gefüllt ist, gelangen so alle
Inhalte auf die gleiche Höhe. Das ganze mit Zeilenzahl modulo 10
kombiniert und danach gefiltert oder sortiert - fertig.
Bei solchen Dingen sowieso immer eine gute Idee: eine eigene
Zählerspalte verwenden, dann kann man beliebig rumprobieren und kommt
trotzdem mit einem Knopfdruck zurück zur Ausgangsreihenfolge.
Viele Wege führen nach Rom. Ich würde das wahrscheinlich mit einem
Python-Skript machen. Entweder mit dem CSV-Modul oder halt Pandas. Dazu
finden sich im Netz sicher massenhaft Infos.
Fridolin schrieb:> Wenn die Werte in 10 Spalten stehen, daneben 10 Formel-Spalten einfügen,> in denen sich der Inhalt jeweils durch vertikale(!) Verkettung aus 10> Original-Zeilen ergibt.
Viel zu viel arbeit und Quatsch.
in C8 steht : 23.05.2022 05:59:00;1;;;;;;;;;
in C9 steht : 23.05.2022 05:59:00;;2;;;;;;;;
in C10 steht : 23.05.2022 05:59:00;;;3;;;;;;;
in D8 = 8
in e8 steht =
=VERKETTEN(INDIREKT("c"&D8)&INDIREKT("c"&D8+1))&INDIREKT("c"&D8+2) <-'
nur für 3 Zellen muss auf 10 erweitert werden.
In D9 Steht : = d8 + 10
Nun E8 nach E9 kopieren
Dann d9 + E9 nach unten kopieren bis alle erfasst.
Beides Kopieren Mit EXCEL-Kopierfunktion das die Formel angepasst wird.
!!!!
Das war es.
Der INDIREKT-Befehl verbindet den Buchstaben einer Zelle (Spalte) mit
der Zeilennummer. Das ist alles.
Arbeitsaufwand : 5 Minuten.
INDIREKT("c"&D8)
Εrnst B. schrieb:> Heinz B. schrieb:>> ganz leicht in eine>> andere Sprache zu portieren.>> Challenge accepted!> perl -e 'while (<>) { chomp; @x=split/;/; if($d[0] ne $x[0]) { print> join(";",@d),"\n"; @d=@x; } for (1..$#x) { $d[$_]=$x[$_] unless $d[$_]}}> print join(";",@d),"\n"' test.csv
Äh, ok. Muss ich mal ausprobieren. ;-)
imonbln schrieb:> csv_problem schrieb:>> Hat jemand einen Tip wie ich die jeweils 10 Datenzeilen wieder in eine>> Zeile zurückc "mergen" kann?>> Was willst du denn noch mit den CSV Daten machen? Du siehst viele Wege> führen nach Rom, daher würde ich Mittel zur Konvertierung dem nach> gelagerten Prozess unterordnen.>> Unter Python könnte man mit Pandas zum Beispiel folgendes machen:> df = pd.read_csv("old.csv", sep=";")> # the first column must be called "Date"> # that depends on the CSV header,> # it may have to be adjusted here.> df2 = df.groupby(df["Date"]).mean()> df2.to_csv("new.csv", sep=";")
Das klingt schon mal nicht schlecht. Danke.
Schlaumaier schrieb:> Das geht sogar mit Excel OHNE Programmieren.
Excel bzw. jedwede Software die händischen Aufwand verursacht ist raus,
es soll gerade mit programmieren funktionieren, da mit der Datei
automatisiert noch diverse Auswertungen generiert werden.
Ursprünglich hat das auch mal so funktioniert, aber nach einem Update,
kommt nun nur noch dieser "Datenmüll" beim Export heraus. Das ganze ist
zwar schon als Bug gemeldet und erkannt, aber bis wann es einen Fix gibt
oder ob man das ganze erst mit der nächsten Version fixt steht noch in
den Sternen.
Hätte ich vielleicht im Eingangspost dazuschreiben sollen:
Die fertige CSV Datei soll durch diverse Scripte gehen, welche
Auswertungen und Berechnungen damit machen. Das meiste ist selbst
zusammengeklüngeltes C einer anderen Abteilung, es werden aber auch ganz
profane Python Scripte darauf losgelassen und am Ende kommt Gnuplot noch
zum Zuge um eine lustige Grafik damit zu generieren.
Insofern erstmal Danke für den Denkanstoß mit pandas und dem Perl
"Einzeiler".
csv_problem schrieb:> Die fertige CSV Datei soll durch diverse Scripte gehen, welche> Auswertungen und Berechnungen damit machen. Das meiste ist selbst> zusammengeklüngeltes C einer anderen Abteilung, es werden aber auch ganz> profane Python Scripte darauf losgelassen und am Ende kommt Gnuplot noch> zum Zuge um eine lustige Grafik damit zu generieren.>> Insofern erstmal Danke für den Denkanstoß mit pandas und dem Perl> "Einzeiler".
Ich würde dir dann eher zu Python raten (egal ob da mit pandas oder
selbstgebastelter zeilenweiser Schleife oder sonstwie).
Ohne triftigen Grund baut man in so ein fertiges System keine neue
Programmiersprache ein, schon garnicht für sowas eher Triviales, und
erst recht nicht, wenn die niemand im Team so wirklich beherrscht.
Und auch wenn Perl ursprünglich exakt für solche Aufgaben entstanden ist
(Practical Extraction and Report Language), ist es doch schon etwas in
die Jahre gekommen.
Solche Einzeiler zu basteln macht zwar Spaß, sie später zu Warten oder
zu Erweitern eher nicht.
Wenn gewisse Schlaumaier hier "Quatsch" schreiben, dann beweist das nur
deren fehlende Sozialkompetenz. Offenbar hat er sich nicht mal die Mühe
gegeben, die Antworten vorher richtig zu lesen - geschweige denn sie
nachzuvollziehen oder gar zu verstehen.
Manuell trägt man genau diese eine Formel in ein Feld ein:
1
=IF(MOD(ROW($A20);10)=1;CONCAT(B20:B29);"")
zieht sie neun Felder nach rechts und kopiert die zehn Felder mit einen
Doppelklick nach unten. Nun noch die leeren Felder ausfiltern - fertig.
Das ist nicht bloß lesbarer, sondern dauert höchstens eine Minute.
Tja, man sollte halt nicht nur die Werkzeuge kennen, mit denen man
arbeitet, sondern sie auch effektv nutzen...
Fridolin schrieb:> Offenbar hat er sich nicht mal die Mühe> gegeben, die Antworten vorher richtig zu lesen - geschweige denn sie> nachzuvollziehen oder gar zu verstehen.
Pack dir an die eigenen Nase.
csv_problem schrieb:> Excel bzw. jedwede Software die händischen Aufwand verursacht ist raus,> es soll gerade mit programmieren funktionieren, da mit der Datei> automatisiert noch diverse Auswertungen generiert werden.
Lese hilft.
Als ich die Aussage oben geschrieben habe, war davon aber keine Rede.
Meine Erklärung mit Beweisführung später, zeigt weniger den TO sondern
dir das deine Aussage inkorrekt war.
Bei meiner Lösung muss ich nix "Filtern" . Ich kopiere die Zeile runter
und habe das Ergebnis. FERTIG.
Davon abgesehen ist deine Lösung FALSCH. !!!
Wenn ich deine Felder nach Link kopiere steht das Ergebnis in neuen
Feldern. Wenn ich nun diesen Felder in eine Text-Datei o.ä. kopiere wird
der Text durch Chr(9) = TAB getrennt, und DAS ist nicht im Sinne des
Users.
Wenn ich MEIN Ergebnis in eine Text Datei kopiere habe ich am Ende der
Zeile CR + LF stehen, und der Text ist korrekt wie der TO das will.
LESEN solltest du wenigstens den ersten Beitrag.
Aber da der TO eh kein Excel will, O.K. Ich hätte das ganze auch locker
mit anderen Programmiersprachen gelöst. Vermutlich in VB mit
Parameteraufruf. Wandler.exe "Quelldatei.txt" "Zieldatei.txt" ,
starten und fertig.
Vermutlich 20 Zeilen Code.
So was ist Programmieren für Anfänger. Das habe ich schon vor fast 40
Jahren so gemacht. in COBOL. !!!
csv_problem schrieb:> Excel bzw. jedwede Software die händischen Aufwand verursacht ist raus,> es soll gerade mit programmieren funktionieren, da mit der Datei> automatisiert noch diverse Auswertungen generiert werden.
Man kann Excel mit all seinen Features problemlos auch aus eignene
Programmen heraus benutzen. Insofern ist deine Einwendung also
grenzdebiler Schwachsinn.
Allerdings ist es natürlich einigermaßen sinnlos, Excel zu benutzen,
wenn man eh' schon ein eigenes Programm schreiben will und Excel weder
Quelle noch Ziel der Daten ist.
In diesem Fall muß man einfach nur die gewählte Programmiersprache
beherrschen, lösbar dürfte das Problem in JEDER beliebigen sein und
zwar auf weit mehr als nur eine Art...
Dein Problem ist einfach nur: du kannst nix und du weißt nix und willst
dir die Arbeit von anderen erledigen lassen. Also ein typischer Parasit.
Ich HASSE Parasiten.
c-hater schrieb:> Man kann Excel mit all seinen Features problemlos auch aus eignene> Programmen heraus benutzen.
STIMMT.
Das mache ich mit meine VB z.b. dauernd.
Ich schreibe ganze Tabellen mit Formeln und Grafik und alles mit VB.
Der Grund ist, ich lese Daten aus sqlite aus, verarbeite die in einer
bestimmten Form, und übergebe die dann an die Excel-Tabelle. Dann werden
in einige Felder Kalkulationsformeln geschreiben, andere Felder sind für
freie Parameter zuständig, etc.
Je nach spätere Eingabe des Users werden dann die Kalkulationen mit
Grafik etc. ausgeführt. Um Fragen wie : "Wie würde sich eine
Preiserhöhung von 5 % des Lieferanten auf Umsatz und Marge auswirken" zu
beantworten.
Und das ich Excel-Daten von Lieferanten in Sqlite-Tabellen zurück lese
ist ja wohl logisch.
Ich benutze sogar Excel ohne das man es sieht. Schöne Tabellen +
Grafiken sind so nämlich einfacher zu erstellen. ;)
Ach was das Problem angeht. Ich habe so was wirklich mal als
Prüfungsaufgabe bekommen in einen EDV-Kurs. Thema : Serielles Lesen und
schreiben von Dateien in Quickbasic. Lang, ne sehr lang ist her. ;)
csv_problem schrieb:> Die fertige CSV Datei soll durch diverse Scripte gehen, welche> Auswertungen und Berechnungen damit machen. Das meiste ist selbst> zusammengeklüngeltes C einer anderen Abteilung, es werden aber auch ganz> profane Python Scripte darauf losgelassen und am Ende kommt Gnuplot noch> zum Zuge um eine lustige Grafik damit zu generieren.
Das klingt danach, als ob eure Firma mehr als nur ausreichende
Kompetenzen zur Verfügung hätte, das Problemchen in ein paar Minütchen
zu lösen.
Wie immer in solchen Fällen stellt sich dann die Frage: warum nur macht
das dort nicht jemand, der sich auskennt?
Oliver
>> Challenge accepted!>> perl -e 'while (<>) { chomp; @x=split/;/; if($d[0] ne $x[0]) { print>> join(";",@d),"\n"; @d=@x; } for (1..$#x) { $d[$_]=$x[$_] unless $d[$_]}}>> print join(";",@d),"\n"' test.csv>> Unter Python könnte man mit Pandas zum Beispiel folgendes machen:>> df = pd.read_csv("old.csv", sep=";")>> # the first column must be called "Date">> # that depends on the CSV header,>> # it may have to be adjusted here.>> df2 = df.groupby(df["Date"]).mean()>> df2.to_csv("new.csv", sep=";")
Die zitierten codeschnipsel nur als stellvertretende Beispiele, folgend
meine weiterführende Gedanken / Manöverkritik.
Ein gezeigter Ansatz war "solange aufeinanderfolgende Eingabezeilen den
selben Zeitstempel haben, werden deren folgende Datenfelder in eine
Ausgabezeile zusammengefügt".
Ein anderer Ansatz war "beginnend mit dem ersten Datenfeld, werden exakt
10 Datenfelder in eine Ausgabezeile zusammengefügt".
Angesichts der Tatsache dass das vorgelegte Eingabedatenformat bereits
einem (anderswo) getätigten Fehler entstammt, lohnen sich m.M.n.
folgende zusatzüberlegungen.
Sie zielen darauf ab weitere unerwartete (künftige) Anomalien bzgl.
Datenformat sinnvoll anzumeckern.
- sind die Zeitstempel wirklich immer exakt sekundengenau identisch oder
muss ev. ein +/-epsilon an Abweichung toleriert werden?
- kommen echt nur gültige Zeitstempel daher? Oder ist auch mit z.b.
"25.05.2022 05:67:00;..." zu rechnen?
- die folgenden Datenwerte sind wirklich immer eine Zahl (oder eine
Zeichenkette)? Kann auch ein "Leerwert" gültig sein?
- wie ist ein allfälliges Quoting geregelt? (ist ';' garantiert nie
Bestandteil der Daten?)
- sind die 10 Zeilen mit selbem Zeitstempel immer in perfekter
Reihenfolge? Oder kann es sein dass z.B. die dritte Zeile den fünften
Wert bringt, der dritte Wert erst mit der fünften Zeile kommt (o.ä)?
- sind es garantiert immer 10 Zeilen welche zusammengehören? Können es
auch mal weniger sein? (ist dann der 10er-Block ungültig weil
unvollständig?) ...oder mehr sein? (ist dann eine Zeile einfach doppelt?
Gibt es doch mehr als 10 Werte? Usw.)
- sind die Zeitstempel strikt auf- oder ab-steigend? Monoton (also im
gleichbleibenden Abstandsintervall)?
Manchmal sucht man eben bloss einen schnellen fix für kurze Zeit;
manchmal bleiben jedoch solche Provisorien viiiiieeeeel länger produktiv
im Einsatz als deren Qualität es rechtfertigt...
Ich persönlich arbeite gerne mit PCREs wie im Modul "re" von Python
verfügbar, um Sanity-Checks in Daten(zwischen)formate zu implementieren.
Und sei es auch nur um ohne sichtbarem Effekt einfach die gewissenheit
zu haben dass das Zeugs "immer noch so ist, wie es immer war", resp.
einen Alarm zu bekommen bevor das Kind in den Brunnen fällt...
Ich hatte das problem auch mal.
ich importiere die Daten in Librebase und Merge diese über ein Group By,
man kann ausgewählte Datensätze dann auch in eine CSV oder Excel Tabelle
schicken.
Bei mir waren es soviele Daten in hunderten dateien verteilt das ein
Bashscript zulange gebraucht hätte.
Wenn es immer der gleiche Ablauf an Zeilen ist sollte das bei dir mit
einem einzeiler funktionieren.
Das sollte mit csvsql aus dem csvkit machbar sein:
1
csvsql -H -d ';' --query 'SELECT a,group_concat(b), group_concat(c),group_concat(d),group_concat(e),group_concat(f),group_concat(g),group_concat(h),group_concat(i),group_concat(j),group_concat(k) FROM y GROUP BY a ORDER BY a ASC' y.csv | csvformat -D ';' | sed 1d
Oliver S. schrieb:> Das klingt danach, als ob eure Firma mehr als nur ausreichende> Kompetenzen zur Verfügung hätte, das Problemchen in ein paar Minütchen> zu lösen.>> Wie immer in solchen Fällen stellt sich dann die Frage: warum nur macht> das dort nicht jemand, der sich auskennt?
Wer sagt denn was von Firma? "Abteilung" kann ja nun alles bedeuten. In
diesem Fall Forschung.
Ar**karteweiterreicher schrieb:> - sind die Zeitstempel wirklich immer exakt sekundengenau identisch oder> muss ev. ein +/-epsilon an Abweichung toleriert werden?>
Der Zeitstempel ist immer exakt sekundengenau gleich in den 10 Zeilen.
> - kommen echt nur gültige Zeitstempel daher? Oder ist auch mit z.b.> "25.05.2022 05:67:00;..." zu rechnen?
Es gibt nur gültige Zeitstempel.
> - die folgenden Datenwerte sind wirklich immer eine Zahl (oder eine> Zeichenkette)? Kann auch ein "Leerwert" gültig sein?
Es gibt nur Werte. "Leerwerte" kommen nicht vor bzw. werden als 0 (Nicht
NULL) repräsentiert.
>> - wie ist ein allfälliges Quoting geregelt? (ist ';' garantiert nie> Bestandteil der Daten?)
Semikolon ist der garantierte Trenner.
> - sind die 10 Zeilen mit selbem Zeitstempel immer in perfekter> Reihenfolge? Oder kann es sein dass z.B. die dritte Zeile den fünften> Wert bringt, der dritte Wert erst mit der fünften Zeile kommt (o.ä)?
Die Zeilen sind immer in exakt dergleichen Reihenfolge wie im Beispiel
dargestellt.
> - sind es garantiert immer 10 Zeilen welche zusammengehören? Können es> auch mal weniger sein? (ist dann der 10er-Block ungültig weil> unvollständig?) ...oder mehr sein? (ist dann eine Zeile einfach doppelt?> Gibt es doch mehr als 10 Werte? Usw.)
Es gibt immer garantiert nur 10 Werte also 10 Zeilen.
> - sind die Zeitstempel strikt auf- oder ab-steigend? Monoton (also im> gleichbleibenden Abstandsintervall)?
Die Zeitstempel sind immer gleichbleibend im Minutentakt von 0:00 bis
23:59.
Bisher wurde das ganze von 2 HiWis händisch korrigiert. Die möchte ich
aber nun entlasten und brauchte Input da ich offensichtlich auf den
Schlauch stand.
Ich A. schrieb:> Es gibt nur Werte. "Leerwerte" kommen nicht vor bzw. werden als 0 (Nicht> NULL) repräsentiert.
Ok, dann muss man in meinem csvsql statement SUM statt group_concat
nehmen. Zumindest angenommen es sind immer Zahlen.
csv_problem schrieb:> Leider kann ich an der Art des Exports nichts ändern. Händisch ändern> ist eigentlich keine Option, ein Export geht immer über 2 Tage womit> immer 28800 Zeilen zusammenkommen, anstatt 2880.
In den von dir gezeigten Daten ist nichts zu erkennen, was nach
Information aussieht, nur Datum, Uhrzeit und eine fortlaufende Nummer.
Vielleicht verrätst du, wie eine Zeile nach der Umformung aussehen soll.
Jede besser Editor erledigt die Umformung wahrscheinlich mit einem
vernünftigen Makro.
Also - wie soll das Ergebnis zu deinen Beispieldaten aussehen?
Das geht in der Bash mit ein paar Zeilen. Die Zeilen Deiner Datei
enthalten 11 Felder (Datum + 10x Daten). Die Zeilen werden eingelesen,
per cut in das jeweils aktuelle Feld zerlegt und in der Ausgabevariable
wieder zusammengefaßt.
Sobald alle 11 Felder zusammengefaßt sind geht das Spiel von vorn los.
Das erste if in der while-Schleife fängt Leerzeilen ab.
Oder das ganze als Einzeiler in Regex..
Muss man nur einen Replace auf nix ("") machen und das bleibt in jeder
konsole, Programmiersprache, Interpreter oder Powershell ein Einzeiler.
(?:[\r\n]+((\d{2}).(\d{2}).(\d{4}) (\d{2}):(\d{2}):(\d{2})))?;([;]{1})
Löppt schrieb:> Oder alternativ Makros im Texteditor (wäre vermutlich mein erster> Ansatz)
Gerade erst gelesen.. in Notepad++ kann man regexp in Suche/Ersetzen
benutzen, so habe ich mein Regexp erstellt und getestet.
Alternativ kann man auch zum Beispiel Java nehmen, Code examples gibt es
ja für diverse Programmiersprachen beim regextester.
Im Anhang noch fix in Javascript als HTML umgesetzt.
imonbln schrieb:> csv_problem schrieb:>> Hat jemand einen Tip wie ich die jeweils 10 Datenzeilen wieder in eine>> Zeile zurückc "mergen" kann?>> Was willst du denn noch mit den CSV Daten machen? Du siehst viele Wege> führen nach Rom, daher würde ich Mittel zur Konvertierung dem nach> gelagerten Prozess unterordnen.>> Unter Python könnte man mit Pandas zum Beispiel folgendes machen:>>
1
> df = pd.read_csv("old.csv", sep=";")
2
> # the first column must be called "Date"
3
> # that depends on the CSV header,
4
> # it may have to be adjusted here.
5
> df2 = df.groupby(df["Date"]).mean()
6
> df2.to_csv("new.csv", sep=";")
7
>
Der Trick mit "mean" ist echt clever, Respekt! Man könnte die
Spaltennamen aber auch gleich beim Einlesen erzeugen, wenn die Datei
keinen Header hat, und / oder n Zeilen des eventuell vorhandenen Headers
mit "header=<n>" in read_csv() einfach ignorieren, dann wird es ein
Einzeiler:
1
pd.read_csv('f.csv', sep=';', names=['date']+['col_%d'%(i) for i in range(10)]
csv_problem schrieb:> Die fertige CSV Datei soll durch diverse Scripte gehen, welche> Auswertungen und Berechnungen damit machen. Das meiste ist selbst> zusammengeklüngeltes C einer anderen Abteilung, es werden aber auch ganz> profane Python Scripte darauf losgelassen und am Ende kommt Gnuplot noch> zum Zuge um eine lustige Grafik damit zu generieren.hüstel So gerne ich Gnuplot auch mag, aber... wenn die Daten eh schon
in einem Pandas-Dataframe vorliegen, kann man sie auch gleich da
weiterverarbeiten. Simple Plots kann Pandas mit der Funktion
pandas.DataFrame.plot(), ansonsten sei seaborn wärmstens empfohlen --
den Barplot im Anhang habe ich so gemacht:
1
import pandas as pd
2
import seaborn as sns
3
4
df = pd.read_csv('f.csv', sep=';',
5
names=['date']+['col_%d'%(i) for i in range(10)]).groupby('date').agg('mean')