Ich habe eine große txt-Datei (~ 300 MB) mit Werten und Form wie:große Datetime-Objekte Pandas aus dem Speicher verursacht
df= pd.read_csv('file.txt')
df.head()
<Base> <DTYYYYMMDD> <TIME> <p1> <p2> <p3> <p4> <q>
36 x 20010102 235700 0.5622 0.5622 0.5622 0.5622 4
37 x 20010102 235800 0.5622 0.5622 0.5622 0.5622 4
38 x 20010102 235900 0.5622 0.5622 0.5622 0.5622 4
39 x 20010103 0 0.5618 0.5618 0.5618 0.5618 4
40 x 20010103 300 0.5622 0.5622 0.5622 0.5622 4
41 x 20010103 500 0.5622 0.5622 0.5622 0.5622 4
df.shape()
(5560000, 8)
Ich versuche nur, den Wert p4 und zeichnen Sie die Anzahl von Vorkommnissen zu bekommen in jedem Jahr unter anderem. Dazu versuche ich zum ersten DTYYYYMMDD und Zeitfelder in Strings (sie lesen, wie ganze Zahlen von Textdatei), dann wandeln sie in Datetime konvertieren wie folgt:
datestr = df['<DTYYYYMMDD>'].apply(lambda x: str(x))
timestr = df['<TIME>'].apply(lambda x: str(x))
zeros = timestr.apply(lambda x: '0' * (6- len(x)))
timestr = zeros + timestr
dtstr = datestr + timestr
p4_df = df['<p4>']
dt_datetime = pd.to_datetime(dtstr, format = '%Y%m%d%H%M%S')
p4_df.index = dt_datetime
Jetzt versuche ich nur noch das Datum Teil zu erhalten getrennt, damit ich das gruppieren kann und die Vorkommen zählen kann. Ich muss den vollen Datum-Zeit-Index auch behalten, da ich das in anderen Berechnungen brauche.
p4_df['Date'] = dt_datetime.apply(lambda x: x.date())
to_plot = p4_df.groupby(['Date'])['<p4>'].count()
to_plot.plot()
Ich bekomme einen Speicherfehler auf dt_datetime.apply
Zeile. Ich habe versucht, stattdessen aber immer noch für den Fehler zu verwenden:
p4_df['Date'] = pd.to_datetime(datestr, format = '%Y%m%d')
Haben Sie irgendwelche Vorschläge, um den Code effizienter zu machen?
Danke, viele gute Punkte drin! – dayum