Pandas NAN Problem

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Bl3nder
User
Beiträge: 41
Registriert: Freitag 3. Januar 2020, 17:07

Sonntag 22. November 2020, 01:57

Schönen guten Tag,

Ich habe folgendes Problem ICh lese eine Datei ein ( diese ist nicht direkt eine CSV sondern eine WRT Datei jedoch funktioniert das alles...

Ich möchte ein Datum als Date_Range setzten und mit meinen Messdaten verbinden das ICh zum Beispiel eine Uhrzeit danach abfragen kann und den dazugehörigen Messwert erhalte jedoch bekomme ICh wenn Ich das Versuche als Ausgabe ( mein Datum und plötzlich sind alle Messwerte NAN ( was Sie vorher nicht waren) wenn Ich dann prüfe ob Sie True oder False sind sehe ICh das alle Messwerte False nicht was Ich nicht verstehe und ich weiß nicht wie Ich das geändert bekomme:

Code: Alles auswählen

import pandas as pd
from pathlib import Path








#Pfade:
ORDNER_MIT_DATEN=Path(r"C:\Users\Marcel\Desktop\Dieter_Klimareport\Dieter_Auswertung\Fertigdaten_2020_02.wrt")

#Kanal-Nummern:
LUFTTEMPERATUR = 3
RELATIVE_LUFTFEUCHTIGKEIT = 290
MAX_TEMPERATUR = 250
MIN_TEMPERATUR = 249
NIEDERSCHLAG = 262
SONNENSCHEINDAUER = 19
MAX_WIND = 140
WINDRICHTUNG = 74



def daten_einlesen(daten):
    """Hier werden die Daten eingelesen und zurückgegeben"""
    daten = pd.read_csv(daten,header = None,sep = "|",low_memory = False)
    return daten

def anfang_und_ende_ermitteln(daten):
    """Hier wird das Anfangs und Enddatum ermittelt"""


    #return str(daten.iloc[0,0]).split(" ")[1]

    return pd.DataFrame(daten).iloc[:,0],pd.DataFrame(daten).iloc[0,0],pd.DataFrame(daten).iloc[-1,0]


def messdaten_zusammenfuehren(datum,Messdaten):

    test = pd.period_range("2020-02","2020-03",freq = "T")
    dft = pd.Series(Messdaten,index = test)
    print(dft.T)






def lufttemperatur(daten,kanal_nummer,datum):
    """Es werden die Messdaten übergeben und mit hilfe der Kanalnummer die benötigte Spalte extrahiert
    danach werden die Daten und das Datum zusammengesetzt """



    Lufttemperatur_extrahieren = daten.iloc[:,kanal_nummer]
    print(Lufttemperatur_extrahieren ==1)
    Lufttemperatur_mit_Datum = messdaten_zusammenfuehren(datum,Lufttemperatur_extrahieren)
    print(Lufttemperatur_mit_Datum)



def main():
    AUSGELESENE_DATEN = daten_einlesen(ORDNER_MIT_DATEN)
    GESSAMT_DATUM,ANFANGS_DATUM,END_DATUM = anfang_und_ende_ermitteln(AUSGELESENE_DATEN)

    #DATUM_OHNE_ZEIT = anfang_und_ende_ermitteln(AUSGELESENE_DATEN)
    DATEN_LUFTTEMPERATUR = lufttemperatur(AUSGELESENE_DATEN,LUFTTEMPERATUR,GESSAMT_DATUM)



if __name__=="__main__":
    main()


Die Daten sind ein bisschen größer der Link : https://www.file-upload.net/download-14 ... 2.wrt.html
Bl3nder
User
Beiträge: 41
Registriert: Freitag 3. Januar 2020, 17:07

Sonntag 22. November 2020, 13:03

OK habe es hin bekommen trotzdem danke :)
Sirius3
User
Beiträge: 13286
Registriert: Sonntag 21. Oktober 2012, 17:20

Sonntag 22. November 2020, 13:43

@Bl3nder: Variablennamen werden komplett klein geschrieben, also alles was in main steht auch. Nur Konstanten schreibt man GROSS.
In anfang_und_ende_ermitteln wandelst Du daten drei mal in ein DataFrame, obwohl das schon einer ist.

Code: Alles auswählen

def anfang_und_ende_ermitteln(daten):
    """Hier wird das Anfangs und Enddatum ermittelt"""
    zeiten = daten.iloc[:, 0]
    return zeiten, zeiten[0], zeiten[-1]
Anfangs- und Enddatum werden aber dann gar nicht benutzt.
`lufttemperatur` hat keinen Rückgabewert, aber wird in main trotzdem einer Variable zugewiesen.
Antworten