Seite 1 von 1

Zeiten und Daten aus txt-Datei importieren

Verfasst: Samstag 1. September 2018, 21:36
von Temporal
Hallo zusammen, ich habe das Problem das ich eine txt-Datei mit Daten (dd.mm.jjjj) und Zeiten (hh:mm:ss) habe. Diese würde ich gerne z.B. in ein array übernehmen damit ich damit später rechnen und sie in einen Graphen eintragen kann. Damit das ganze einfacher wird habe ich vor die Zeiten in Sekunden um zu rechnen. Dafür habe ich auch schon etwas funktionierendes hinbekommen. Mein Ziel ist es die Zeiten im array mit einer while-Schleife Schritt für Schritt durchzuarbeiten und in ein neues array die Sekunden einzutragen.
Wahrscheinlich ist es sinnvoll hier mit Datetime zu arbeiten, damit kenne ich mich nur leider gar nicht aus. Es wäre super wenn mir jemand erklären könnte wie ich die Zeiten und Daten in ein array bekomme ohne den Fehler: could not convert string to float: b'18:36:56'

Dankeschön,
Anna

Re: Zeiten und Daten aus txt-Datei importieren

Verfasst: Samstag 1. September 2018, 22:48
von Sirius3
Was verstehst Du denn an der Dokumentation zum datetime-Modul denn nicht?

Re: Zeiten und Daten aus txt-Datei importieren

Verfasst: Samstag 1. September 2018, 23:13
von Temporal
Soweit verstehe ich die Dokumentation eigentlich. Nur leider wird dort keine Möglichkeit aufgelistet wie man die Daten aus der txt raus bekommt. Ich arbeite normaler weise nur mit Python um Graphen zu erstellen und verlasse mich dabei auf genfromtxt und arbeite mit den daraus entstehenden arrays. So würde ich es hier gerne auch machen. Damit ich die Werte nacheinander abarbeiten kann. Die Umwandlung in Sekunden und alles später mit datetime ist mir klar.

Re: Zeiten und Daten aus txt-Datei importieren

Verfasst: Sonntag 2. September 2018, 00:26
von pixewakb
Kommst Du damit weiter? Du brauchst die datetime.strptime-Funktion und dann den String und einen Format-String (der passt) nutzen.

https://www.tutorialspoint.com/python/time_strptime.htm

Du kannst dann z. B. ein datetime.date- oder datetime.datetime-Objekt draus machen, also z. B. d1 = datetime.date(2018,9,1) usw.

Re: Zeiten und Daten aus txt-Datei importieren

Verfasst: Sonntag 2. September 2018, 08:41
von __deets__
genfromtext ist hier wahrscheinlich das Problem. Man KANN das dazu bringen, die einzelnen Spalten spezifisch zu konvertieren. Aber das ist ein bisschen mühselig. Benuzt doch einfach Pandas. Da gibt es schon fertige bequeme Funktionen für sowas.

Siehe zb hier viewtopic.php?t=43509&start=15

und natürlich die Antwort von BJ danach beachten.

Re: Zeiten und Daten aus txt-Datei importieren

Verfasst: Sonntag 2. September 2018, 11:23
von Temporal
Ich hab mich jetzt an euren beiden Ideen versucht und das geschrieben:

data = pd.read_csv('Batterie.txt', sep="\t ")
print(data)
data.columns = ["a", "b"]
struct_time = time.strptime(a, "%H:%M:%S")
print(a)

Er hat allerdings schon Probleme beim benennen der spalten da er die txt so einließt:
02:32:39\t03:02:39
er scheint das \t beim trennen nicht zu nehmen.

Füge ich noch andere Sache ein wie parse_dates meckert er immer: Falling back to the 'python' engine

Re: Zeiten und Daten aus txt-Datei importieren

Verfasst: Sonntag 2. September 2018, 12:15
von __blackjack__
@Temporal: Wenn Du '\t ', also Tabulator *gefolgt* von einem Leerzeichen als Trenner angibst, dann wird in der Tat nicht an einem Tabulator *ohne* folgendes Leerzeichen getrennt. Schau mal in die Dokumentation wie ein `sep`-Argument interpretiert wird das länger als ein Zeichen ist. Das erklärt dann auch die Warnung das die Python-Engine verwendet wird. Die wird man los wenn man sie über das passende Argument bewusst auswählt. Sofern Du wirklich mehr als ein Zeichen bei `sep` angeben möchtest.

Re: Zeiten und Daten aus txt-Datei importieren

Verfasst: Sonntag 2. September 2018, 12:28
von Temporal
Was ein dämlicher Fehler. Das Leerzeichen ist mir echt nicht aufgefallen, danke

Re: Zeiten und Daten aus txt-Datei importieren

Verfasst: Sonntag 2. September 2018, 14:48
von Temporal
Mit den Zeiten kann ich jetzt so arbeiten wie ich es mir Vorgestellt habe. Nur die Daten machen mir noch Probleme. Ich möchte das Format der Daten gerne ändern. Das habe ich bisher getan:

Code: Alles auswählen

data = pd.read_csv('Batterie.txt', sep="\t", header=None)
data.columns = ['a','b','c','d','e']

datetimeobject = pd.to_datetime(data['a'])
date = datetime.strptime(datetimeobject, '%Y-%m-%d')
newformat = date.strftime('%m%d%Y')
Der Fehler ist immer: strptime() argument 1 must be str, not Series
auch wenn ich es so mache:

Code: Alles auswählen

data['a']= data['a'].astype(str)
date = datetime.strptime(data['a'], '%Y-%m-%d')
newformat = date.strftime('%m%d%Y')/code]

Re: Zeiten und Daten aus txt-Datei importieren

Verfasst: Sonntag 2. September 2018, 15:17
von __blackjack__
@Temporal: Was und vor allem warum willst Du da machen? In der Spalte im Dataframe sollten Zeitstempel stehen, damit man damit arbeiten kann. Die müssen in der Regel auch als Zeitstempel an den Plot übergeben werden. Wie sie dort *angezeigt* werden, regelt man beim Plot.

Ich würde die Daten auch direkt beim einlesen in Zeitstempel umwandeln.

Zudem ist die Fehlermeldung ja auch ziemlich deutlich: `datetime.strptime()` möchte einen Zeichenkette mit einem Datum. Du versuchst da aber ein `Series`-Objekt mit ganz vielen Werten zu übergeben. Das kann offensichtlich nicht funktionieren.

Was ist eigentlich der Grund warum Du die vorhandene Kopfzeile so nichtsagend umbenennst in 'a', 'b', …?

Edit: Und würde es eventuell Sinn machen die Zeitstempel als Index zu verwenden statt als normale Spalte?