Я пытаюсь повторить этот анализ для моего города. Я на этапе, когда я скопировал и вставил функцию, чтобы вычислить дневные часы дневного света и добавить совокупный счет (недельный и дневной) к сгруппированному набору данных, а затем построить график.
Дело в том, что я считаю, что используемая здесь функция карты ведет себя странно (или что-то изменилось в версии pandas). Если я приведу, например, weekly.head()
, программа возвращает в столбце hours_of_daylight этот вывод, в то время как я ожидаю число
Total East West daylight
Date
2012-10-07 14292.0 7297.0 6995.0 <map object at 0x7f21afcc1ca0>
2012-10-14 16795.0 8679.0 8116.0 <map object at 0x7f21afcc1ca0>
2012-10-21 15509.0 7946.0 7563.0 <map object at 0x7f21afcc1ca0>
2012-10-28 13437.0 6901.0 6536.0 <map object at 0x7f21afcc1ca0>
2012-11-04 12194.0 6408.0 5786.0 <map object at 0x7f21afcc1ca0>
Конечно, после этого matplotlib говорит, что нет никаких чисел c данных для plot
Код
daily = data.resample('d').sum()
weekly = data.resample('w').sum()
def hours_of_daylight(date, axis=23.44, latitude=47.61):
"""Compute the hours of daylight for the given date"""
diff = date - pd.datetime(2000, 12, 21)
day = diff.total_seconds() / 24. / 3600
day %= 365.25
m = 1. - np.tan(np.radians(latitude)) * np.tan(np.radians(axis) * np.cos(day * np.pi / 182.625))
m = max(0, min(m, 2))
return 24. * np.degrees(np.arccos(1 - m)) / 180.
# add this to our weekly data
weekly['daylight'] = map(hours_of_daylight, weekly.index)
daily['daylight'] = map(hours_of_daylight, daily.index)
weekly.head()
и, для сюжета
weekly['daylight'].plot()
plt.ylabel('hours of daylight (Seattle)');
Можете ли вы помочь мне понять, что не так с этими строками кода и получить эффективный число как результат, а также график?