Seite 1 von 1

Daten in Listen synchronisieren

Verfasst: Montag 15. April 2019, 09:51
von winnitouch
Hallo zusammen,

ich hab gerade folgendes Problem. Ich hab mehrere Files mit Rohdaten in einem Ordner, zum Beispiel 3 Files. Die Rohdaten sehen wie folgt aus:
Bild

Nun möchte ich die 3 Files einlesen (zum Beispiel in eine Liste?), so dass alle 3 Listen die gleiche Anzahl Elemente haben. Wenn man die 3 Rohdaten-Files anders darstellt, ergeben sich quasi folgende Lücken, welche aufgefüllt werden müssten:
Bild

Und die Lücken sollen nun so aufgeüllt werden, dass bei einem fehlenden Datensatz der vorherige Wert eingetragen wird. Also fehlt z.B. bei File 2 der 25.02.2019, dann soll hierfür der Wert vom 24.02.2019 genommen werden. Sollte bei einem File der aller erste Wert fehlen, soll hier eine 0 eingetragen werden. Der finale Datensatz geht dann vom frühesten Datum aller Files (hier aus File 2 der 24.02.) bis zum spätesten Datum aller Files (hier aus File 1 oder 3 der 29.03.)
Bild


Kann mir jemand helfen?

Gruss

Re: Daten in Listen synchronisieren

Verfasst: Montag 15. April 2019, 10:08
von __blackjack__
@winnitouch: Schau Dir mal das `pandas`-Modul an.

Re: Daten in Listen synchronisieren

Verfasst: Montag 15. April 2019, 14:48
von ThomasL

Code: Alles auswählen

import pandas as pd
import numpy as np

# erzeugen der Datums Spalte
index = pd.date_range(start='24.02.2019', periods=34, freq='D')

# erzeugen der 3 Rohdaten Dateien
liste_1 = pd.DataFrame(data={'Datum': index, 'Roh1': np.random.randint(2000, 9000, 34)})
liste_2 = pd.DataFrame(data={'Datum': index, 'Roh2': np.random.randint(2000, 9000, 34)})
liste_3 = pd.DataFrame(data={'Datum': index, 'Roh3': np.random.randint(2000, 9000, 34)})

# löschen der jeweiligen fehlenden Daten
liste_1.drop(index=[0, 32], axis=0, inplace=True)
liste_2.drop(index=[1, 2, 5, 11, 19, 33], axis=0, inplace=True)
liste_3.drop(index=[0, 3, 4, 10, 13, 21, 22], axis=0, inplace=True)

# mergen der Listen OHNE auffüllen der fehlenden Werte
df = pd.merge_ordered(liste_1, liste_2, on='Datum', how='outer')
df = pd.merge_ordered(df, liste_3, on='Datum', how='outer')
print(df)

# mergen der Listen MIT auffüllen der fehlenden Werte
df = pd.merge_ordered(liste_1, liste_2, on='Datum', how='outer', fill_method='ffill')
df = pd.merge_ordered(df, liste_3, on='Datum', how='outer', fill_method='ffill')

print(df)

Re: Daten in Listen synchronisieren

Verfasst: Dienstag 16. April 2019, 07:47
von winnitouch
wow, vielen Dank für Deine Hilfe, werde ich ausprobieren!