meteva

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


站点数据

<pre><code class="language-python">%matplotlib inline %load_ext autoreload %autoreload 2 import meteva.base as meb import numpy as np import datetime import pandas as pd</code></pre> <p><strong>&lt;font face=&quot;黑体&quot; color=black size = 5&gt;站点数据类&lt;/font&gt;</strong> </p> <p>格式为<a href="https://pandas.pydata.org/pandas-docs/stable/reference/frame.html#dataframe">pandas.DataFrame</a>的数据。本函数库提供了对该网格数据的一序列初始化、读写和转换函数,经过本函数库初始化、读取或转换生成的站点数据统一具备顺序为level,time,dtime,id,lat,lon(层次,时间,预报时效,站点Id,站点经度,站点纬度) 共6个表示时空信息的列变量,在第7列开始为数据内容。</p> <p><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;初始化站点数据&lt;/font&gt;</strong><br /> <strong>sta_data(df,columns = None)</strong><br /> 将一个普通的DataFrame数据,转换成站点数据,如果输入的数据对应的时间或空间维度缺失,则设置为缺省值 </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;df&lt;/font&gt;</strong></td> <td style="text-align: left;">dataframe的站点数据</td> </tr> <tr> <td style="text-align: left;"><strong>columns</strong></td> <td style="text-align: left;">长度和df列数相同的列表,其中第i个元素是df第i列的数据将被赋予的列名称,例如若df第i列数据内容是站点号,columns[i]应该设置&quot;id&quot;,若df第i列数据内容是时效,则clumns[i]应该设置&quot;dtime&quot;,其它类似。</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;">前6列分别为'level', 'time', 'dtime', 'id', 'lon', 'lat' 的一个DataFrame</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">data = {&amp;quot;站号&amp;quot;:np.arange(54511,54611).tolist(), &amp;quot;经度&amp;quot;:np.arange(100,110,0.1).tolist(), &amp;quot;纬度&amp;quot;:np.arange(30,40,0.1).tolist(), &amp;quot;数据&amp;quot;:np.random.randn(100)} df = pd.DataFrame(data) print(df)</code></pre> <pre><code> 站号 经度 纬度 数据 0 54511 100.0 30.0 0.924758 1 54512 100.1 30.1 0.026250 2 54513 100.2 30.2 1.128623 3 54514 100.3 30.3 2.083939 4 54515 100.4 30.4 0.095637 .. ... ... ... ... 95 54606 109.5 39.5 0.774993 96 54607 109.6 39.6 -0.977270 97 54608 109.7 39.7 0.805824 98 54609 109.8 39.8 -1.411085 99 54610 109.9 39.9 -1.063808 [100 rows x 4 columns]</code></pre> <pre><code class="language-python">sta = meb.sta_data(df,columns = [&amp;quot;id&amp;quot;,&amp;quot;lon&amp;quot;,&amp;quot;lat&amp;quot;,&amp;quot;data0&amp;quot;]) print(sta)</code></pre> <pre><code> level time dtime id lon lat data0 0 NaN NaN NaN 54511 100.0 30.0 0.924758 1 NaN NaN NaN 54512 100.1 30.1 0.026250 2 NaN NaN NaN 54513 100.2 30.2 1.128623 3 NaN NaN NaN 54514 100.3 30.3 2.083939 4 NaN NaN NaN 54515 100.4 30.4 0.095637 .. ... ... ... ... ... ... ... 95 NaN NaN NaN 54606 109.5 39.5 0.774993 96 NaN NaN NaN 54607 109.6 39.6 -0.977270 97 NaN NaN NaN 54608 109.7 39.7 0.805824 98 NaN NaN NaN 54609 109.8 39.8 -1.411085 99 NaN NaN NaN 54610 109.9 39.9 -1.063808 [100 rows x 7 columns]</code></pre> <p><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;设置数据名称 &lt;/font&gt;</strong> <strong>set_stadata_names(sta,data_name_list):</strong><br /> 设置站点数据的内容部分(第7列之后)的列名称 </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;sta&lt;/font&gt;</strong></td> <td style="text-align: left;">站点数据,前6列分别为'level', 'time', 'dtime', 'id', 'lon', 'lat' 的一个DataFrame</td> </tr> <tr> <td style="text-align: left;"><strong>data_name_list</strong></td> <td style="text-align: left;">数据名称列表,其长度等于sta的列数 - 6</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;">None</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">meb.set_stadata_names(sta,[&amp;quot;new_name&amp;quot;]) print(sta)</code></pre> <pre><code> level time dtime id lon lat new_name 0 NaN NaN NaN 54511 100.0 30.0 0.924758 1 NaN NaN NaN 54512 100.1 30.1 0.026250 2 NaN NaN NaN 54513 100.2 30.2 1.128623 3 NaN NaN NaN 54514 100.3 30.3 2.083939 4 NaN NaN NaN 54515 100.4 30.4 0.095637 .. ... ... ... ... ... ... ... 95 NaN NaN NaN 54606 109.5 39.5 0.774993 96 NaN NaN NaN 54607 109.6 39.6 -0.977270 97 NaN NaN NaN 54608 109.7 39.7 0.805824 98 NaN NaN NaN 54609 109.8 39.8 -1.411085 99 NaN NaN NaN 54610 109.9 39.9 -1.063808 [100 rows x 7 columns]</code></pre> <p><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;获取数据名称列表 &lt;/font&gt;</strong> <strong>get_stadata_names(sta):</strong><br /> 获取站点数据的内容部分(第6列之后)的列名称 </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;sta&lt;/font&gt;</strong></td> <td style="text-align: left;">站点数据,前6列分别为'level', 'time', 'dtime', 'id', 'lon', 'lat' 的一个DataFrame</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;">数据名称列表,其长度等于sta的列数 - 6</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">names = meb.get_stadata_names(sta) print(names)</code></pre> <pre><code>['new_name']</code></pre> <p><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;设置数据时空坐标 &lt;/font&gt;</strong> <strong>set_stadata_coords(sta,level = None,time = None,dtime = None,id = None,lat = None,lon = None,alt = None):</strong><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;sta&lt;/font&gt;</strong></td> <td style="text-align: left;">站点数据,前6列分别为'level', 'time', 'dtime', 'id', 'lon', 'lat' 的一个DataFrame</td> </tr> <tr> <td style="text-align: left;"><strong>level</strong></td> <td style="text-align: left;">层次,如果该参数不为None,则站点数据中level列设置为该参数值</td> </tr> <tr> <td style="text-align: left;"><strong>time</strong></td> <td style="text-align: left;">时间,如果该参数不为None,则站点数据中time列设置为该参数值</td> </tr> <tr> <td style="text-align: left;"><strong>dtime</strong></td> <td style="text-align: left;">时效,如果该参数不为None,则站点数据中dtime列设置为该参数值</td> </tr> <tr> <td style="text-align: left;"><strong>id</strong></td> <td style="text-align: left;">站号,如果该参数不为None,则站点数据中id列设置为该参数值</td> </tr> <tr> <td style="text-align: left;"><strong>lat</strong></td> <td style="text-align: left;">站点纬度,如果该参数不为None,则站点数据中lat列设置为该参数值</td> </tr> <tr> <td style="text-align: left;"><strong>lon</strong></td> <td style="text-align: left;">站点经度,如果该参数不为None,则站点数据中lon列设置为该参数值</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;">None</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">meb.set_stadata_coords(sta,level = 0,time = datetime.datetime(2019,1,1,8,0),dtime = 0) print(sta)</code></pre> <pre><code> level time dtime id lon lat new_name 0 0 2019-01-01 08:00:00 0 54511 100.0 30.0 0.924758 1 0 2019-01-01 08:00:00 0 54512 100.1 30.1 0.026250 2 0 2019-01-01 08:00:00 0 54513 100.2 30.2 1.128623 3 0 2019-01-01 08:00:00 0 54514 100.3 30.3 2.083939 4 0 2019-01-01 08:00:00 0 54515 100.4 30.4 0.095637 .. ... ... ... ... ... ... ... 95 0 2019-01-01 08:00:00 0 54606 109.5 39.5 0.774993 96 0 2019-01-01 08:00:00 0 54607 109.6 39.6 -0.977270 97 0 2019-01-01 08:00:00 0 54608 109.7 39.7 0.805824 98 0 2019-01-01 08:00:00 0 54609 109.8 39.8 -1.411085 99 0 2019-01-01 08:00:00 0 54610 109.9 39.9 -1.063808 [100 rows x 7 columns]</code></pre> <pre><code class="language-python"></code></pre> <h1>设置数据属性</h1> <p><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;set_stadata_attrs(sta, dtime_units = None,data_source = None,level_type =None, var_name = None,var_cn_name = None, var_units = None): &lt;/font&gt;</strong><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;sta&lt;/font&gt;</strong></td> <td style="text-align: left;">站点数据,前6列分别为'level', 'time', 'dtime', 'id', 'lon', 'lat' 的一个DataFrame</td> </tr> <tr> <td style="text-align: left;"><strong>dtime_units</strong></td> <td style="text-align: left;">时效的单位类型,可设置的选项包括&quot;hour&quot;和&quot;minute&quot;两种</td> </tr> <tr> <td style="text-align: left;"><strong>data_source</strong></td> <td style="text-align: left;">数据来源说明,例如&quot;天擎&quot;等</td> </tr> <tr> <td style="text-align: left;"><strong>level_type</strong></td> <td style="text-align: left;">层次类型说明,例如&quot;等压面&quot;等</td> </tr> <tr> <td style="text-align: left;"><strong>var_name</strong></td> <td style="text-align: left;">要素的名称,例如&quot;temperature&quot;</td> </tr> <tr> <td style="text-align: left;"><strong>var_cn_name</strong></td> <td style="text-align: left;">要素的中文名称,例如&quot;温度&quot;</td> </tr> <tr> <td style="text-align: left;"><strong>var_units</strong></td> <td style="text-align: left;">要素的单位,例如&quot;℃&quot;</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;">None</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">meb.set_stadata_attrs(sta,dtime_units = &amp;quot;minute&amp;quot;) print(sta.attrs[&amp;quot;dtime_units&amp;quot;])</code></pre> <pre><code>minute</code></pre>

页面列表

ITEM_HTML