気象データから月別の平均、最低、最高気温を計算する
2019年7月31日
2023年10月26日
ちょっとばかり月別の気温の処理をしたかったので、拡張アメダス(拡張AMeDAS、EA気象データ)気象データを加工する簡単なスクリプトを書いてみました。メモ代わりに投稿します。
TRNSYSの処理は図のようなシンプルな構成でデータを出力します。
Type21からは月、日付、時刻を、Type99-AMeDASからは外気温のデータを出力します。コンポーネント接続は以下のようにします。
Settingsの指定は1年分(0~8760h)をタイムステップ1hで出力します。
これを実行すると、以下のようなCSVが出来上がります。
TIME Month Day Hour Ambient
HOURS NAV NAV NAV
+0.0000000000000000E+00 +0.0000000000000000E+00 +0.0000000000000000E+00 +0.0000000000000000E+00 +0.0000000000000000E+00
+1.0000000000000000E+00 +1.0000000000000000E+00 +1.0000000000000000E+00 +1.0000000000000000E+00 +4.9617647058823531E+00
+2.0000000000000000E+00 +1.0000000000000000E+00 +1.0000000000000000E+00 +2.0000000000000000E+00 +4.8499999999999996E+00
+3.0000000000000000E+00 +1.0000000000000000E+00 +1.0000000000000000E+00 +3.0000000000000000E+00 +4.5500000000000007E+00
+4.0000000000000000E+00 +1.0000000000000000E+00 +1.0000000000000000E+00 +4.0000000000000000E+00 +4.0500000000000007E+00
+5.0000000000000000E+00 +1.0000000000000000E+00 +1.0000000000000000E+00 +5.0000000000000000E+00 +3.5979166666666669E+00
+6.0000000000000000E+00 +1.0000000000000000E+00 +1.0000000000000000E+00 +6.0000000000000000E+00 +3.3479166666666669E+00
+7.0000000000000000E+00 +1.0000000000000000E+00 +1.0000000000000000E+00 +7.0000000000000000E+00 +3.0932291666666667E+00
+8.0000000000000000E+00 +1.0000000000000000E+00 +1.0000000000000000E+00 +8.0000000000000000E+00 +2.7859375000000002E+00
このデータをPythonのスクリプトを書いて処理します。(Type25から出力されたファイルは「ea_tamb.csv」としています)
# coding: utf-8
# Example code for calculating monthly mean, minimum and maximum temperatures.
# author Yuichi Yasuda @ quattro corporate design
# copyright 2019 quattro corporate design. All right reserved.
import pandas as pd
DAYS_OF_MONTH = (31,28,31,30,31,30,31,31,30,31,30,31)
labels = ['TIME','Month','Day','Hour','Ambient']
csv = pd.read_csv('ea_tamb.csv', delim_whitespace=True,encoding='cp932', skiprows=3, header=None, names=labels)
tamb = csv['Ambient']
start_of_month = 0
end_of_month = 0
print(' mean min max')
for days in DAYS_OF_MONTH:
end_of_month = start_of_month + days*24
monthly_data = tamb[start_of_month:end_of_month] #1ヶ月分の気温をスライス
t_mean = monthly_data.mean() #平均気温
t_min = monthly_data.min() #最低気温
t_max = monthly_data.max() #最高気温
start_of_month = end_of_month
print('{:8.2f}\t{:>8.2f}\t{:>8.2f}'.format(t_mean, t_min, t_max)) #桁数を揃えて出力
これで12ヶ月分の月別平均、最低、最高気温が出力されます。
mean min max
5.73 -0.84 16.19
6.46 0.85 13.54
8.57 1.60 16.85
15.01 5.02 24.54
19.21 11.15 27.82
21.08 14.01 31.04
26.64 20.32 35.24
27.27 20.55 33.51
23.12 14.55 34.57
17.91 10.36 28.32
12.35 2.37 21.35
9.01 1.73 17.42
この例では気温を処理していますが、湿度や日射量、室温など、他の値にも応用できます。
動作環境
以下の環境で動作を確認しています。
Windows10 Pro(64bit, 1803)
TRNSYS18.01.0001(64bit)
Python3.7.3