print (data_Week)
gibt mir zu bekommen:schnellste Weg Mittelwert aus Wörterbuch
{'2016-04-09 00:56': ['12.0', '50.7'], '2016-04-08 05:23': ['15.4', '49.8'], '2016-04-....}
Die Werte sind Temperature
und Humidity
Werte.
Ich möchte die average
Werte aus dem Wörterbuch data_Week
erhalten.
Die Methode, die ich bin Werke verwenden, aber es dauert ewig auf meinem Raspberry Pi ....
for date,value in data_Week.items():
temp_first_value_Week = float(value[0])
temp_total_Week += temp_first_value_Week
temp_length_Week += 1
hum_first_value_Week = float(value[1])
hum_total_Week += hum_first_value_Week
hum_length_Week += 1
if temp_length_Week > 1:
tempAverage_Week = temp_total_Week/temp_length_Week
tempAverage_Week = "%.2f" % tempAverage_Week
tempAverage_Week = str(tempAverage_Week)+'\xb0C'
if hum_length_Week > 1:
humAverage_Week = hum_total_Week/hum_length_Week
humAverage_Week = "%.2f" % humAverage_Week
humAverage_Week = str(humAverage_Week)+'%'
dort jede Minute ein Wörterbucheintrag ist und ich versuche, von einer Woche Durchschnittswert zu erhalten. So gibt es 1440 Temperaturwerte und 1440 Luftfeuchtigkeitswerte pro Tag ..... 10080 Werte pro Woche. Gibt es eine kluge Möglichkeit, die Durchschnittswerte zu erhalten. Das Verfahren von oben nimmt das pi um 15 minutes
Edit: Ich fand heraus, dass das Skript so lange gedauert habe, weil ich über das Wörterbuch geschlungen, die als BHawk in seinem post erwähnte nicht notwendig war.
Ich werde die One Liner von John Coleman verwenden. Es funktioniert perfekt. Und danke für die Pandas approach. Vielleicht, wenn die aktuelle Version wieder langsamer wird, werde ich darauf wechseln. Danke für die Hilfe.
Ich weiß nicht, aber ich bezweifle, Ihr Raspberry Pi nur 11 dict Einträge pro Sekunde verarbeiten würde. Vielleicht enthält das Diktat mehr Daten als Sie denken, oder die Ineffizienz ist an einem anderen Ort, oder die Box ist beschäftigt? – Norman
Ich begann mit der Protokollierung von Daten und um 19.00 Uhr erhalte ich eine E-Mail vom PI mit den Werten "max", "min" und "average" über einen Zeitraum von 7 Tagen. Beim Start der Protokollierung hatte die erste Mail nur Werte von ca. 14 Stunden, und nach ein paar Tagen der Protokollierung verlangsamt es ... jetzt, da es immer einen Zeitraum von 7 Tagen in der Protokolldatei gibt, dauert es fast immer so viel Zeit ... das Problem könnte sein, dass ich nicht nur Durchschnitt für eine Woche, aber auch für die letzten 24 Stunden .... –
Wenn Ihre Berechnungen jemals zu langsam werden, kann ein effizienter Ansatz der Einsatz eines "Online" -Algorithmus sein, der Ihre Ergebnisse inkrementell aktualisiert, sobald ein neuer Datenpunkt eintrifft. Für die Berechnung von min, max, [durchschnittlich] (https://en.wikipedia.org/wiki/Algorithmen_für_Kalkulationsvarianz#Online_Algorithmus), das ist einfach zu tun und verteilt den Berechnungsaufwand so stark, dass er unbemerkbar wird. – Norman