気象観測データ (1地点) のグラフ作成と基本的な統計処理: 日照時間 日別値

[気象観測データ (1地点) のグラフ作成と基本的な統計処理 (Python による試作)]と 基本的に同じことを、1日ごとの日照時間の観測値でやってみる。

Pandas の hist でできるものが正しいヒストグラムであるのか、疑問がのこっていますが、 ここでしめす事例では、区間幅が、もとの数値でも、図上でも、等間隔なので、 たぶん問題ないでしょう。

[気象庁の観測データを使う (序論)] (板倉用教材) のページで、 気象庁ウェブサイトの「過去の気象データ ダウンロード」の機能をつかって、 例として、新潟の 2011-2020年の10年ぶんの日別値の日照時間 (と、そのほかいくつかの気象要素) を、 5年ごとに別々の CSVファイルでダウンロードした。 なお、ダウンロードの際に日付の形式は「年月日などに分ける」をえらんだ。 (2022年5月15日にダウンロードしたものを、つぎのところに置いておく。 ダウンロードしたときの名まえは data.csv だが、変更した。)

ここでは、このデータを Python で読んで、図化や基本的な統計処理をこころみる。 【説明は 日本語 Windows 上 の Anaconda にくみこまれた Python 3.8.8 での実行結果による。 他の OS では、日本語文字を表示するために「fontname='MS Gothic'」などとしているところは 変更が必要だろう。】


graph1: 5年ぶんのデータの、横軸の日時を明示しないグラフ

まず、Pandas の read_csv をつかって、1つの CSV ファイルのデータを データフレーム「df」に読みこみ、 列の名まえをつけかえ、 品質情報が「8」でないところは欠損あつかいにする。 (欠損をあらわす値は np.nan が順当だが、 ここでは、グラフで確認したいので、-1 をいれておく。) そして、横軸に日の通し番号、縦軸に降水量をとって、点グラフ (作図技術上は散布図と同じ) をかいてみる。

すなおに read_csv で読もうとすると、shift_jis として不適切な文字があるというエラーになる。 対策として、codecs というパッケージを import し、 「with codecs open」で、不適切な文字を無視する指定をして file という変数に読みこみ、 その file から pandas の read_csv で読むようにしている。

graph1_daily_sundur_niigata_2016_2020.png


graph2: 10年ぶんのデータの、横軸の日時を明示しないグラフ

[複数の CSV ファイルをつないでひとつのデータフレームにする (Python Pandas)]の ページに書いた手順で、それぞれの CSVファイルを df1 というデータフレームに読みこんだうえで つないでいき、ひとつのデータフレームをつくる。 それを graph1 と同様に作図してみる。

graph2_daily_sundur_niigata_2011_2020.png


graph3: 10年ぶんのデータの、横軸を日付 (年) としたグラフ

Python の datetime パッケージ の date 関数をつかって、 年・月・日を、日付型に換算する。 データフレームに、日付型の日付の列「datex」を追加する。 そして、横軸に日時、縦軸に日照時間をとってグラフをかく。 横軸の目盛りに書くラベルは、年 (4けた) にしてみた。 ラベルは年のはじめの位置につけられる。

graph3_daily_sundur_niigata_2011_2020.png


hist1: 10年ぶんのデータ (季節をとわない) の単純なヒストグラム (hist による)

graph2, graph3 と同様な 10年ぶんのデータがはいったデータフレームを材料とする。 ただし、ここからは、欠損のところには np.nan をいれておく。 Pandas の hist メソッドを単純に呼び出してヒストグラムをかいてみる。 集計区間は、「時」単位で、0 から 16 まで 1 きざみにしてみた。

hist1_daily_sundur_niigata_2011_2020.png

結果をみると、「0 以上」の区間の頻度が多い。 このうちには、日照がまったくないばあいと、すこしはあるばあいをふくむはずだ。


hist2: 10年ぶんのデータ (季節をとわない) の単純なヒストグラム、ただし 値 0 をのぞく

こころみに、hist をよびだすまえに、日照時間が 0 である観測記録をはずしてみた。

(値が 0 であるもののうちには、日照がまったくないばあいと、 まったくないわけではないが 0.05 未満で四捨五入して 0.0 となったばあいがあり、 新潟のように「現象なし情報」の列がある地点ならばそれを見れば分離できるはずだが、 ここではそれは見ていない。)

hist2_daily_sundur_niigata_2011_2020.png


hist3: 10年間を季節 (3か月ごと) にわけたヒストグラム (hist による)

[気象観測データ (1地点) のグラフ作成と基本的な統計処理 (Python による試作)]で やってみたのと同じように、年をとわず、月を、(英語の頭文字で) DJF, MAM, JJA, SON に わけて、hist1 と同様な形の 4つのヒストグラムをかいてみる。 (hist2 のようにする変更はコメントアウトしてある。) 季節によって日照時間のとる値がかなりちがうので、 縦軸は、ひとまずデータ内容から自動的に決まるままの、季節によってちがう尺度にした。 (解析を進めるばあいは季節ごとに値の範囲を考えて固定するべきである。)

hist3_daily_sundur_niigata_2011_2020.png


10年間を月ごとにわけた箱ひげ図 (boxplot)

ヒストグラムの要約表現として、箱ひげ図 (box-and-whisker-plot) というものがあり、 Pandas の boxplot 関数をつかってかくことができる。 ここでは、month の列によって分類してつくった箱ひげ図をならべて表示してみる。

boxplot1_daily_sundur_niigata_2011_2020.png

箱の下限と上限は四分位値、まんなかにはいっている横線は中央値をあらわす。 「ひげ」は最小値・最大値までのびていることもあるが、 途中まででおわり、その範囲にふくまれない「はずれ値」が〇印でしめされていることもある。 ひげをどこまでのばすかは、おそらく、この表現方法を考案した Tukey (テューキー) が 指定した方法にあわせていると思うが、わたしはまだ確認していない。


今後の予定


2022-05-15
増田 耕一 (MASUDA Kooiti)
[計算機を利用した気象分野の実習の教材]
立正大学用 [セミナーのページ]