世界の地上気象観測点の 1日ごとの観測データをあつめたものとしては、 アメリカ合衆国 NOAA NCEI (National Centers for Environmental information) [旧組織名 NCDC (National Climatic Data Center)] が編集した 「GHCN (Global Historical Climatology Network) - Daily」 というものがある。
そのデータセットの説明はつぎのウェブページと、それに続く [- Data Access] などのぺージにある。そのページからリンクされた readme.txt というファイルに、 データセットのファイル構成やそれぞれのファイルの書式の説明がある。 このうち、地点表 ghcnd-stations.txt は、列幅固定のテキストファイルである。 その地点表のファイル (データセット本体ではない) を Python で読むプログラム例を、 [Pythonでデータを読む: 列幅固定のテキストファイル] のページで紹介した。
このデータセットの本体は、7 GB の tar.gz ファイルになっていて、 展開すると、地点別の csv ファイルがでてくる。 展開された全地点のデータのデータ量は 100 GB ぐらいになるので 共有のところにおくのがむずかしいが、 対象を国別にわけて、多数地点をふくむ国をはずせば、あつかいはむずかしくない。 (それぞれの csv ファイルは Python の pandas の read_csv で そのまま読める。 一連のファイルについて同様な処理をするプログラムを組むこともむずかしくない。)
その1地点ぶんのデータを読んで、サインカーブをあてはめるプログラムを試作した。 これについては、 [気象観測データに1年周期のサインカーブをあてはめる (GHCNd データ用試作)]のページで説明する。
国名コードはアルファベット2文字だが、NOAA独自のもので、 インターネットのドメイン名につかわれている ISOの国名2文字コードとはちがう。 たとえば、中国は GHCNd では「CH」、ISO では「cn」。
ghcnd-stations.txt の読みかたは [Pythonでデータを読む: 列幅固定のテキストファイル] のページを参照してほしい。
各地点の観測データの csv ファイルの読みかたは、とりあえず、 この下にしめす make_inv_4.py , make_inv_6.py のプログラムや [気象観測データに1年周期のサインカーブをあてはめる (GHCNd データ用試作)]のページの sinfit_ghcnd_work1.py のプログラムを参照してほしい。
GHCNd データセットの inventory ファイルを見れば、地点ごとの観測値のある はじめ と おわり の年は わかるが、中間の年のデータの有無や、データがある年の部分的欠損はわからない。
ここでは各地点の観測値のデータファイルを読み、地点ごとの各年の欠損のはいりかたを 概観する一覧表をつくってみた。 (観測値の有無を形式的にチェックしただけなので、 異常値がはいっているばあいも「有り」となっている。)
作成したプログラムはつぎのものである。(暫定版なので作業用のプログラム名になっている。) そこから読まれる stn_china_selected.csv は、上記の stn_china_selected.xlsx のワークシートを csv 形式で書きだしたものである。
結果の表はつぎのようになった。 表自体にはじゅうぶんな説明がつけてないが、 各行の左端に地点番号 (WMOの5けた番号)、右端に地点名 (ローマ字)、 その間に 1951 年から 2002年までの各年の状況が、1年1文字で記録されている。 「-」は全部の日の値がそろっていること、「#」は値がまったくないこと、 「1」から「9」はその年のデータ欠損の日数、「+」はデータ欠損が10日以上あることをしめす。 「1951年から1960年まで」のように10年ごとにまとめ、空白をいれている。
「1961年から2020年までの観測値があること」という条件をはずして、 GHCNd にふくまれた中国の全地点について、同様なチェックリストをつくった。 (ここで読んだ地点別観測値ファイルには、 上記の zip アーカイブにふくめなかったものもふくんでいる。)
作成したプログラムはつぎのものである。 そこから読まれる ghcnd-stations_china.txt は、上記の ghcnd-stations.txt のファイルのうち 地点 ID が 'CH' で始まる行をぬきだしたものである。 このファイルをさしかえれば、このプログラムは中国以外の地点にも適用できるはずである (しかし、まだためしていない)。
なお、このプログラムは pandas の append メソッドをつかっている。 実行すると、append は廃止予定なので concat にきりかえてほしいというメッセージが出る。 わたしは concat への書きかえをこころみたがまだ成功しておらず、 ひとまず append をつかう形にしている。
結果の表はつぎのようになった。 左端の列は (WMO地点番号ではなく) GHCNdの地点コードにした。 中国の地点でWMO地点番号がついているばあいは、地点コードの終わりの5文字がWMO地点番号と一致する。
GHCNd のうち中国のデータを、卒業研究の学生が材料としてつかっている。
その過程で、異常値がみつかった。 GHCN データ自体の品質管理でも、異常値としては認識されているようだ。 しかし、とりたててこの件が問題にされている記事は見つからない。 ともかく、これまでに気づいたことを、つぎのブログ記事に書いた。