print (data_Week)
给了我:
{'2016-04-09 00:56': ['12.0', '50.7'], '2016-04-08 05:23': ['15.4', '49.8'], '2016-04-....}
值为Temperature
和Humidity
值。
我想从字典average
获取data_Week
值。
我正在使用的方法有效,但它需要我的覆盆子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)+'%'
每分钟都有一个字典条目,我试图获得一周的平均值。
因此,每天有1440个温度值和1440个湿度值.....每周10080个值。
有没有一种聪明的方法来获得平均值。
上面的方法采用15 minutes
编辑: 我发现,脚本花了这么长时间,因为我在他的BHawk post中提到的One Liner不需要字典。
我将使用John Coleman中的approach。它完美无缺。 感谢熊猫{{3}}。也许如果当前版本再次放慢速度我将切换到它。 谢谢你的帮助。
答案 0 :(得分:2)
也许我错过了一些东西,但如果你想要的只是温度的平均值,那么1线解决方案应该是可行的并且应该快速运行:
>>> d = {'2016-04-09 00:56': ['12.0', '50.7'], '2016-04-08 05:23': ['15.4', '49.8']}
>>> sum(float(x) for x,y in d.values())/len(d)
13.7
答案 1 :(得分:2)
import pandas as pd
with open("data.json", "r") as handle:
x = pd.read_json(handle, orient='index')
print("Data:")
print(x)
print("Description:")
print(x.describe()) # Will print a summary of each column
结果
Data:
0 1
2016-04-08 05:23:00 15.4 49.8
2016-04-09 00:56:00 12.0 50.7
Description:
0 1
count 2.000000 2.000000
mean 13.700000 50.250000
std 2.404163 0.636396
min 12.000000 49.800000
25% 12.850000 50.025000
50% 13.700000 50.250000
75% 14.550000 50.475000
max 15.400000 50.700000
答案 2 :(得分:1)
每次读取值时,您都不需要增加条目数。在读取值时,您不需要转换为浮动,它们已经是浮点数。
尝试:
week_length = len(data_Week.keys())
if week_length > 1:
tempAverage_Week = sum([x for x,y in data_Week.values()])/weekLength
humAverage_Week = sum([y for x,y in data_Week.values()])/weekLength