はじめに
データの値に応じて散布図の色を変える方法について、茨城県つくば市の気温の変化を例として解説する。
コード
解説
データのダウンロード
気象庁のサイトから時間ごとの気温データをダウンロードする。
気象庁|過去の気象データ・ダウンロード
気象庁が提供するページです
モジュールのインポート
pd.read_csvによるデータの読み込み
skiprows=[0,1,2,3]で指定した行を読み込まずにスキップする。encoding=’shift_jis’で日本語の文字化けを防ぐ。 index_col=0で0列目をインデックスとし、header=0で0行目をカラム名とし、names=[‘temp’,’h’,’k’] でそのカラム名を変更している。読み込んだDataFrameは下記のようになる。
temp | h | k | |
---|---|---|---|
2019/8/7 1:00:00 | 26.8 | 8 | 1 |
2019/8/7 2:00:00 | 25.5 | 8 | 1 |
2019/8/7 3:00:00 | 25.6 | 8 | 1 |
2019/8/7 4:00:00 | 24.9 | 8 | 1 |
2019/8/7 5:00:00 | 24.6 | 8 | 1 |
2019/8/7 6:00:00 | 25.4 | 8 | 1 |
2019/8/7 7:00:00 | 27.8 | 8 | 1 |
2019/8/7 8:00:00 | 29.5 | 8 | 1 |
2019/8/7 9:00:00 | 30.1 | 8 | 1 |
2019/8/7 10:00:00 | 31.4 | 8 | 1 |
2019/8/7 11:00:00 | 32.2 | 8 | 1 |
2019/8/7 12:00:00 | 33.2 | 8 | 1 |
2019/8/7 13:00:00 | 34.3 | 8 | 1 |
2019/8/7 14:00:00 | 35.1 | 8 | 1 |
2019/8/7 15:00:00 | 34.8 | 8 | 1 |
2019/8/7 16:00:00 | 33.3 | 8 | 1 |
2019/8/7 17:00:00 | 32.0 | 8 | 1 |
2019/8/7 18:00:00 | 30.7 | 8 | 1 |
2019/8/7 19:00:00 | 29.4 | 8 | 1 |
2019/8/7 20:00:00 | 28.7 | 8 | 1 |
2019/8/7 21:00:00 | 28.2 | 8 | 1 |
2019/8/7 22:00:00 | 27.6 | 8 | 1 |
2019/8/7 23:00:00 | 26.5 | 8 | 1 |
2019/8/8 00:00:00 | 25.4 | 8 | 1 |
2019/8/8 1:00:00 | 25.2 | 8 | 1 |
2019/8/8 2:00:00 | 25.5 | 8 | 1 |
2019/8/8 3:00:00 | 25.3 | 8 | 1 |
2019/8/8 4:00:00 | 24.9 | 8 | 1 |
2019/8/8 5:00:00 | 25.4 | 8 | 1 |
2019/8/8 6:00:00 | 26.5 | 8 | 1 |
2019/8/8 7:00:00 | 28.6 | 8 | 1 |
2019/8/8 8:00:00 | 29.6 | 8 | 1 |
2019/8/8 9:00:00 | 30.3 | 8 | 1 |
2019/8/8 10:00:00 | 32.5 | 8 | 1 |
2019/8/8 11:00:00 | 33.0 | 8 | 1 |
2019/8/8 12:00:00 | 33.9 | 8 | 1 |
2019/8/8 13:00:00 | 34.7 | 8 | 1 |
2019/8/8 14:00:00 | 34.1 | 8 | 1 |
2019/8/8 15:00:00 | 32.8 | 8 | 1 |
2019/8/8 16:00:00 | 31.2 | 8 | 1 |
2019/8/8 17:00:00 | 31.0 | 8 | 1 |
2019/8/8 18:00:00 | 29.9 | 8 | 1 |
2019/8/8 19:00:00 | 27.8 | 8 | 1 |
2019/8/8 20:00:00 | 26.7 | 8 | 1 |
2019/8/8 21:00:00 | 27.4 | 8 | 1 |
2019/8/8 22:00:00 | 27.5 | 8 | 1 |
2019/8/8 23:00:00 | 27.2 | 8 | 1 |
2019/8/9 00:00:00 | 27.0 | 8 | 1 |
不要データの削除
df.drop()でデータを削除する。axis=1とすることで列方向のデータが削除できる。削除したデータは下記のようになる。
temp | |
---|---|
2019/8/7 1:00:00 | 26.8 |
2019/8/7 2:00:00 | 25.5 |
2019/8/7 3:00:00 | 25.6 |
2019/8/7 4:00:00 | 24.9 |
2019/8/7 5:00:00 | 24.6 |
2019/8/7 6:00:00 | 25.4 |
2019/8/7 7:00:00 | 27.8 |
2019/8/7 8:00:00 | 29.5 |
2019/8/7 9:00:00 | 30.1 |
2019/8/7 10:00:00 | 31.4 |
2019/8/7 11:00:00 | 32.2 |
2019/8/7 12:00:00 | 33.2 |
2019/8/7 13:00:00 | 34.3 |
2019/8/7 14:00:00 | 35.1 |
2019/8/7 15:00:00 | 34.8 |
2019/8/7 16:00:00 | 33.3 |
2019/8/7 17:00:00 | 32.0 |
2019/8/7 18:00:00 | 30.7 |
2019/8/7 19:00:00 | 29.4 |
2019/8/7 20:00:00 | 28.7 |
2019/8/7 21:00:00 | 28.2 |
2019/8/7 22:00:00 | 27.6 |
2019/8/7 23:00:00 | 26.5 |
2019/8/8 00:00:00 | 25.4 |
2019/8/8 1:00:00 | 25.2 |
2019/8/8 2:00:00 | 25.5 |
2019/8/8 3:00:00 | 25.3 |
2019/8/8 4:00:00 | 24.9 |
2019/8/8 5:00:00 | 25.4 |
2019/8/8 6:00:00 | 26.5 |
2019/8/8 7:00:00 | 28.6 |
2019/8/8 8:00:00 | 29.6 |
2019/8/8 9:00:00 | 30.3 |
2019/8/8 10:00:00 | 32.5 |
2019/8/8 11:00:00 | 33.0 |
2019/8/8 12:00:00 | 33.9 |
2019/8/8 13:00:00 | 34.7 |
2019/8/8 14:00:00 | 34.1 |
2019/8/8 15:00:00 | 32.8 |
2019/8/8 16:00:00 | 31.2 |
2019/8/8 17:00:00 | 31.0 |
2019/8/8 18:00:00 | 29.9 |
2019/8/8 19:00:00 | 27.8 |
2019/8/8 20:00:00 | 26.7 |
2019/8/8 21:00:00 | 27.4 |
2019/8/8 22:00:00 | 27.5 |
2019/8/8 23:00:00 | 27.2 |
2019/8/9 00:00:00 | 27.0 |
インデックスのデータ形式の変更
現在のIndexのデータタイプは、dtype(‘O’)となる。これはObjectのOとなっている。これをpd.to_datetime()によりデータタイプをdatetime形式に変換する。データタイプはdtype(‘<M8[ns]’)となる。
データを配列として取り出す
インデックスはdf.index.valuesで、DataFrameの要素はdf.iloc[:,0].valuesのようにilocで通常の配列と同じスライスができる方法でやるとわかりやすい。
各プロットデータの生成
30℃以上のデータと30℃未満のデータを、日時と気温を対応させて、それぞれ生成する。
図の表示
30℃以上と未満の各データを色を変えて、散布図でプロットする。
ax.xaxis.set_major_formatter(mdates.DateFormatter(‘%m-%d %H:00’))により、x軸の表示形式を月ー日 時間:00にする。
fig.autofmt_xdate()でx軸ラベルが重ならないように回転した状態で表示される。
参考
Contourf and log color scale — Matplotlib 3.1.0 documentation
https://matplotlib.org/examples/pylab_examples/pcolor_log.html
コメント