A quite simple question that I hope someone can help me with. I have a massive database of hourly minimum and maximum temperatures, from many automatic weather stations. I need to estimate the average monthly minimum, maximum and mean temperatures for each stations, like that provided by climatologies such as bioclim, worldclim, CHELSA, etc.

Given the following one-day example data:

         Date Time tMin tMax
1  2009-05-01    0 24.2 24.4
2  2009-05-01  100 24.1 24.3
3  2009-05-01  200 24.0 24.2
4  2009-05-01  300 23.8 24.1
5  2009-05-01  400 23.7 23.9
6  2009-05-01  500 23.6 23.8
7  2009-05-01  600 23.5 23.6
8  2009-05-01  700 23.5 23.7
9  2009-05-01  800 23.3 23.7
10 2009-05-01  900 23.4 23.5
11 2009-05-01 1000 23.4 24.2
12 2009-05-01 1100 24.2 26.2
13 2009-05-01 1200 26.2 28.4
14 2009-05-01 1300 27.5 29.8
15 2009-05-01 1400 28.3 30.1
16 2009-05-01 1500 28.4 30.9
17 2009-05-01 1600 30.5 31.7
18 2009-05-01 1700 30.7 31.9
19 2009-05-01 1800 29.5 31.2
20 2009-05-01 1900 27.9 30.6
21 2009-05-01 2000 27.6 28.6
22 2009-05-01 2100 26.3 27.6
23 2009-05-01 2200 25.3 26.2
24 2009-05-01 2300 24.6 25.7

How do I calculate the required parameters? I'm confused between two options:

1) Simply by calculating the average of each column each day, and then averaging these averages to calculate the mean temperature: (tMin average: 25.7; tMax average: 26.8; and tMean: 26.2).

2) Picking the lowest daily minimum temperature (23.3), and the highest daily maximum temperature (31.9), and then averaging both (27.6).

Then, once I've got the dailies information estimated, I think I must to calculate the overall average for each of the three parameters each month.

Any feedback will be more than appreciated!


  • 2
    $\begingroup$ From a statistical point of view, you can't calculate an hourly mean from a minimum and a maximum: the temperature could have stayed at tMin (or tMax) for 59 minutes. Unless you make the assumption that T is normally distributed across an hour... $\endgroup$ Nov 27, 2019 at 12:06
  • 2
    $\begingroup$ Watch for relevant decimals when calculating averages: tMin average: 25.72917 should be shown as 25.7 for example, as you don't have a greater precision in your raw data $\endgroup$
    – marsisalie
    Nov 27, 2019 at 16:19

3 Answers 3


From my experience, first of all, you should calculate the hourly average, in your case should be the average of the 2 minimum and 2 maximum temperatures. (In your sample data you need the 0:00 hours of 2009-05-02, as it is covering 23 hours)

Once you have the average by hour in a day, you can go for the daily average, then monthly average and so on...

For the minimum and maximum, there is no average, it should be just one value. If you want to calculate a monthly minimum average, then it should be calculated with the same process, so there is just one minimum by hour (the minimum in the range, f.e. 0:00-1:00), then one average of all the hourly minimums to get the daily minimum, and the same system for the monthly one.

If you try, you will see that you don´t have exactly the same result than making a daily average. For your sample, the daily average by hour is 26.31 degrees and by the daily average of all data is 26.25 degrees.

Hope it helps!


You can easily calculate the monthly minimum and monthly maximum temperatures since you have these data directly (even though a temporal resolution of one hour is quite coarse in my view, but it, of course, depends on the application).

You can only try to estimate the average monthly temperature, which is somewhere between the average minimum and average maximum temperature. You should not pick the lowest and highest values and divide by two as you suggest. Then it would be better to take the average of all values (min and max). This is still not very good, but as the error decreases as $N^{-1/2}$ then it will be a better estimate at least.

Just to give you some ideas: I am wondering if it would be better to use a maximum likelihood approach, e.g. solve for the mode instead of the mean. Note that if your data is truly Gaussian the mode equals the mean.


This is not an answer

average monthly minimum, maximum and mean temperatures... I'm missing something. Why not take the highest temperature in May 1960, May 1961, May 1962, and so on, and average. That would give you the average highest temperate for May. You can do something similar for average lowest temperate. For mean temperature, you'll have to average all the hourly highs and lows. As @Jean-MariePrival points out, this isn't necessarily accurate, but may be the best you can do. Question: where did you get hourly minimum an maximum data? I know where to get hourly data, but not mins and maxs.

If you could, please add your source to: http://opendata.stackexchange.com/questions/10154/sources-of-weather-data/


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.