Member 14990821 Ответов: 1

Как рассчитать суточную эвапотранспирацию по уравнению Харгривза-Самани и с помощью Python?


У меня есть десятилетние данные о погоде, включая максимальную температуру (Tmax), минимальную температуру (Tmin), количество осадков и солнечную радиацию (Ra) за каждый день.

Сначала я хотел бы рассчитать эвапотранспирацию (ETo) для каждого дня, используя следующее уравнение:
ETo=0.0023*(((Tmax+Tmin)/2)+17.8)*sqrt(Tmax-Tmin)*Ra

Затем производится расчет среднемесячных и годовых значений всех параметров (Tmax,Tmin, осадков, Ra и ETo) и вывод их на печать в формате Excel.

Я написал несколько частей. не могли бы вы помочь мне с его завершением? Я думаю, что ему может понадобиться круг "для".

Что я уже пробовал:

import numpy as np
import pandas as pd
import math as mh
# load the weather data file
data_file = pd.read_excel(r'weather data.xlsx', sheet_name='city_1')
# defining time
year = data_file['Year']
month = data_file['month']
day = data_file['day']
# defining weather parameters
Tmax = data_file.loc[:,'Tmax']
Tmin = data_file.loc[:,'Tmin']
Rainfall = data_file.loc[:,'Rainfall']
Ra = data_file.loc[:,'Ra']
# adjusting time to start at zero
year = year-year[0]
month=month-month[0]
day=day-day[0]
#calculation process for estimation of evapotranspiration
ET0=(0.0023*(((Tmax+Tmin)/2)+17.8)*(mh.sqrt(Tmax-Tmin))*Ra

Richard MacCutchan

Что должны делать эти линии?

year = year-year[0]
month=month-month[0]
day=day-day[0]

1 Ответов

Рейтинг:
1

OriginalGriff

"у него есть некоторые проблемы" - это один из отчетов об ошибках, которые мы получаем довольно часто, и он всегда совершенно бесполезен-он ничего не говорит нам о вашей проблеме, кроме "У меня есть проблема", и мы знали это, потому что вы задаете вопрос!

Что он сделал такого, чего вы не ожидали, или не сделали того, что вы сделали?
Когда он это сделал?
Есть ли какие-либо сообщения об ошибках?
Что вы сделали, чтобы заставить его сделать это?
Что вы пытались сделать, чтобы выяснить, почему?
Каковы же были результаты?
Какая помощь вам нужна?

На все эти вопросы нам нужен ответ, иначе мы ничем не сможем вам помочь!
Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Как вы его используете, зависит от вашей системы компилятора, но быстрый поиск Google для "python debugger" должен дать вам необходимую информацию.


Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!


Member 14990821

Спасибо. Я отредактировал свой вопрос. Мой код еще не завершен, и отладчик бесполезен в этой ситуации. Мне нужна помощь, чтобы закончить его.

OriginalGriff

Нет, мы не будем "завершать его" для вас.
Мы более чем готовы помочь тем, кто застрял, но это не значит, что мы здесь, чтобы сделать все это для вас! Мы не можем сделать всю работу, вам либо платят за это, либо это часть ваших оценок, и было бы совсем несправедливо, если бы мы сделали все это за вас.

Поэтому нам нужно, чтобы вы сделали работу, и мы поможем вам, когда вы застряли. Это не значит, что мы дадим вам пошаговое решение, которое вы можете сдать!
Начните с объяснения, где вы находитесь в данный момент и каков следующий шаг в этом процессе. Затем расскажите нам, что вы пытались сделать, чтобы этот следующий шаг сработал, и что произошло, когда вы это сделали.

Если у вас вообще возникли проблемы с началом работы, то это может помочь: Как написать код для решения проблемы, руководство для начинающих[^]

OriginalGriff

Не ждите слишком долго, прежде чем начать пытаться сделать это самостоятельно: сроки выполнения домашних заданий часто намного ближе, чем они кажутся!

Member 14990821

Я знаю, что чтение книг делает меня профессиональным пользователем python, и я делал это до сих пор. Вы могли бы помочь мне, введя соответствующую функцию для этой цели. но я думаю, что вы не профессионал в python.Поэтому он больше не отвечает на мои комментарии!!!

OriginalGriff

"Чтение книг" не делает никого "профессиональным пользователем" ни в чем.
Я могу прочитать книгу по хирургии мозга, но не думаю, что кто-то захочет, чтобы я вскрыл его череп!

Это применение знания, которое включает в себя умение, а не накопление.
И единственный способ построить навык-это применять его и улучшать по мере продвижения ...