meteva

提供气象产品检验相关python程序


温度预报检验

<pre><code class="language-python"> import numpy as np import pandas as pd import meteva.base as meb import meteva.product as mpd import meteva.method as mem import meteva.perspact as mps</code></pre> <h1>温度预报技巧评分</h1> <p><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;temp_forecaster_score(ob, fo)&lt;/font&gt;</strong><br /> 按照《第十六届全国气象行业职业技能竞赛暨第八届全国气象行业天气预报职业技能竞赛组织实施方案》,预报评定分为基础分(满分0.6分)和技巧分(满分1分)两部分。<br /> 1.基础分<br /> │预报值-实况值│≤2℃为正确,否则为错误。正确得0.6分,错误得0分。 </p> <p>2.技巧分<br /> 评定预报员相对客观城市预报产品的预报技巧评分。根据预报员和模式产品的检验结果计算预报技巧得分<br /> 模式正确,预报员错误,得0份<br /> 模式错误,预报员错误,得0.3分<br /> 模式正确,预报员正确,得0.6分<br /> 模式错误,预报员正确,得1.0分 </p> <p>3.总分<br /> 最后得分为基础分和技巧分两项分值的总和。 </p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;ob&lt;/font&gt;</strong></td> <td style="text-align: left;">实况数据, 1维numpy数组,长度为N</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;fo&lt;/font&gt;</strong></td> <td style="text-align: left;">预报数据,2×N的数组</td> </tr> <tr> <td style="text-align: left;">&lt;font face=&quot;黑体&quot; color=blue size=5&gt;return&lt;/font&gt;</td> <td style="text-align: left;">返回各站点总分的平均值</td> </tr> </tbody> </table> <p><strong>调用示例:</strong></p> <pre><code class="language-python">temp_all = pd.read_hdf(r&amp;quot;H:\test_data\input\mpd\temp_data.h5&amp;quot;) #加载一周的预报数据 meb.set_stadata_names(temp_all,data_name_list=[&amp;quot;obs&amp;quot;,&amp;quot;model&amp;quot;,&amp;quot;forecaster&amp;quot;]) print(temp_all)</code></pre> <pre><code> level time dtime id lon lat obs \ 1425 0.0 2020-06-29 08:00:00 3 57197 114.35 32.97 27.500000 1434 0.0 2020-06-29 08:00:00 3 57231 108.53 32.53 28.799999 1436 0.0 2020-06-29 08:00:00 3 57233 108.50 32.90 27.200001 1437 0.0 2020-06-29 08:00:00 3 57237 108.03 32.07 30.600000 1439 0.0 2020-06-29 08:00:00 3 57242 109.37 32.85 28.400000 ... ... ... ... ... ... ... ... 742220 0.0 2020-06-23 08:00:00 156 58510 116.23 29.73 25.000000 742221 0.0 2020-06-23 08:00:00 156 58512 116.55 29.90 24.100000 742222 0.0 2020-06-23 08:00:00 156 58514 116.05 29.45 25.799999 742223 0.0 2020-06-23 08:00:00 156 58517 116.20 29.27 26.200001 742224 0.0 2020-06-23 08:00:00 156 58519 116.68 29.00 26.700001 model forecaster 1425 27.690479 25.520103 1434 25.489040 25.833244 1436 25.497000 25.108383 1437 25.887096 25.408495 1439 26.357519 26.479502 ... ... ... 742220 23.838448 28.369730 742221 23.832800 28.175653 742222 23.332600 28.041468 742223 22.905279 29.219957 742224 22.700199 30.072720 [51880 rows x 9 columns]</code></pre> <pre><code class="language-python">ob = temp_all[&amp;quot;obs&amp;quot;].values fo = temp_all[[&amp;quot;model&amp;quot;,&amp;quot;forecaster&amp;quot;]].values.T result = mpd.temp_forecaster_score(ob,fo) print(result)</code></pre> <pre><code>0.7829317656129529</code></pre> <h1>温度预报技巧评分_中间量</h1> <p><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;tbask(ob, fo)&lt;/font&gt;</strong><br /> 按照《第十六届全国气象行业职业技能竞赛暨第八届全国气象行业天气预报职业技能竞赛组织实施方案》,预报评定分为基础分(满分0.6分)和技巧分(满分1分)两部分。<br /> 1.基础分<br /> │预报值-实况值│≤2℃为正确,否则为错误。正确得0.6分,错误得0分。 </p> <p>2.技巧分<br /> 评定预报员相对客观城市预报产品的预报技巧评分。根据预报员和模式产品的检验结果计算预报技巧得分<br /> 模式正确,预报员错误,得0份<br /> 模式错误,预报员错误,得0.3分<br /> 模式正确,预报员正确,得0.6分<br /> 模式错误,预报员正确,得1.0分 </p> <p>3.总分<br /> 最后得分为基础分和技巧分两项分值的总和。 </p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;ob&lt;/font&gt;</strong></td> <td style="text-align: left;">实况数据, 1维numpy数组,长度为N</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;fo&lt;/font&gt;</strong></td> <td style="text-align: left;">预报数据,2×N的数组</td> </tr> <tr> <td style="text-align: left;">&lt;font face=&quot;黑体&quot; color=blue size=5&gt;return&lt;/font&gt;</td> <td style="text-align: left;">返回一个数组,内容为[总站数,得分总和]</td> </tr> </tbody> </table> <p><strong>调用示例:</strong></p> <pre><code class="language-python">mpd.tbask(ob,fo)</code></pre> <pre><code>array([51880. , 40618.5])</code></pre> <h1>基于透视模块分类统计</h1> <pre><code class="language-python">df_tbask = mps.middle_df_sta(temp_all,mpd.tbask) print(df_tbask)</code></pre> <pre><code> time dtime T BASK 0 2020-06-23 08:00:00 3 169.0 132.3 1 2020-06-23 08:00:00 6 169.0 124.5 2 2020-06-23 08:00:00 9 169.0 109.0 3 2020-06-23 08:00:00 12 88.0 77.1 4 2020-06-23 08:00:00 15 169.0 155.9 .. ... ... ... ... 303 2020-06-28 20:00:00 24 169.0 103.1 304 2020-06-29 08:00:00 3 168.0 142.5 305 2020-06-29 08:00:00 6 169.0 134.4 306 2020-06-29 08:00:00 9 169.0 148.4 307 2020-06-29 08:00:00 12 169.0 141.8 [308 rows x 4 columns]</code></pre> <pre><code class="language-python">score,gll_dict = mps.score_df(df_tbask,mpd.temp_forecaster_score,g = &amp;quot;dtime&amp;quot;) print(&amp;quot;评分数值:&amp;quot;) print(score) print(&amp;quot;分组方式:&amp;quot;) print(gll_dict)</code></pre> <pre><code>评分数值: [0.81018265 0.7872835 0.84314351 0.89881685 0.86971796 0.85125926 0.85646594 0.82637037 0.81214903 0.75091595 0.76666667 0.75889009 0.75112827 0.74253555 0.74795737 0.75260664 0.77683168 0.78202765 0.83217105 0.7560237 0.74294205 0.76748148 0.78593634 0.76422222 0.72269263 0.78907705 0.8243083 0.74777887 0.69145907 0.72191943 0.76706231 0.59733333 0.61262327 0.59546351 0.50887574 0.78550296 0.57633136 0.88934911] 分组方式: {'dtime': [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 78, 84, 90, 96, 102, 108, 114, 120, 126, 132, 138, 144, 150, 156]}</code></pre>

页面列表

ITEM_HTML