paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

データ分析初心者向け・毎日暑いのでPython使って気象データを可視化・分析してみた

f:id:paiza:20180730155631j:plain
Photo by Skaja Lee
秋山です。

今年は暑いですな。(台風前の東京はちょっと涼しかったですが…)

毎年こんな暑かったっけ?ということで、気象庁が公開している気温のオープンデータとPythonを使って、気温データを可視化しながら遊んでみました。

今回は、機械学習でもよく使うPythonライブラリのPandasやMatplotlib、Seabornを使います。

■どんなデータを使うか

気象に関するオープンデータは気象庁のサイトからCSVダウンロードできます。

www.data.jma.go.jp

とりあえず1910年から108年分ダウンロードしてみました。(※やってみたところダウンロードサイズ制限のようなものがあり、最低気温、最高気温に関しては10年程度ごとに分割しないとダウンロードできませんでした)あと、sjisだったので適宜変換しつつutf-8に結合しました。

CSVデータの形式ついてはこちらに記載がありますが、最高気温、最低気温のカラムの横にはそれぞれ品質番号と均質番号が付与されてます。(品質番号は欠測などを意味しているようです)

今回ダウンロードした1910年以降だと、以下の3日分は欠測があり統計値がありません。

1923-09-01
1923-09-02
1994-07-18

また、以下の3日分が疑わしい値ということになっています。(疑問値)

2015-05-18
2015-11-16
2018-05-15

2018/5/15は割と最近なので実際の値を見てみましたが、特に大きく変な感じではなかったのと…

date high low
2018-05-13 21.4 14.6
2018-05-14 28.6 15.2
2018-05-15 28.4 14.8
2018-05-16 29.0 18.8
2018-05-17 28.4 21.4

2015/11/16も見てみましたが、そんなに変な値でもないような。というわけで、特に気にせず使っていくことにします。

date high low
2015-11-14 14.0 12.2
2015-11-15 20.0 13.6
2015-11-16 21.2 12.2
2015-11-17 23.7 15.6
2015-11-18 20.8 14.4

ちなみに均質番号は、観測値変更などに伴ってインクリメントされる数値のようです。

最高気温・最低気温の観測場所に関しては、2014/12/1までは同じ場所で、2014/12/2からは変更されているそうです。

※詳しくはこちら
東京管区気象台|「東京」の気象観測地点の移転について

北の丸公園の観測地点はポケモンGoのピカチュウを捕まえるために現地へ行ったことがありますが、緑に囲まれていてなかなか快適な場所でした。アスファルトの上で暮らしている我々との体感はかなり違いそう…。

というわけで、集めたデータを可視化してみましょう。

■使用するライブラリについて

今回可視化に使うPandasとSeabornですが、ざっくり言うと
Pandas:データ解析ライブラリ。データフレームを作ったり操作したりできる、R言語に近い位置づけのライブラリ。
Matplotlib:図の描画をするときのライブラリ。
Seaborn:Matplotlibをベースに、さらに見た目のよいグラフなどを描画できるようにしたライブラリ。
といった感じです。

Pythonをインストール済の環境であれば

pip install pandas matplotlib seaborn

でインストールできるはずです。

Pandasについては前にもチュートリアル記事を書いているので、興味のある人は見てみてください。
paiza.hatenablog.com

■折れ線グラフを描画してみる

環境ができたら、こんな感じでまずは2017年・2016年分の最低・最高気温グラフを作ってみましょう。

import numpy
import pandas
import datetime

data = pandas.read_csv('res.txt',index_col='date', parse_dates=['date'])

%matplotlib inline
start = data.index.searchsorted(datetime.datetime(2017, 1, 1))
end = data.index.searchsorted(datetime.datetime(2018, 1, 1))
data[start:end].plot()

start = data.index.searchsorted(datetime.datetime(2016, 1, 1))
end = data.index.searchsorted(datetime.datetime(2017, 1, 1))
data[start:end].plot()

こんな感じで最低・最高気温グラフができあがりました。

f:id:paiza:20180730151708p:plain

f:id:paiza:20180730151738p:plain

2017年のほうが暑そう(特に春先)な感じがしますが、折れ線グラフだけだとよくわからないので、ヒートマップを作ってみましょう。

■ヒートマップを描画してみる

Seabornを使って、こんな感じのコードでヒートマップを作ることができます。(今回はひとまずざっくり様子が見られるヒートマップを出したいので、うるう年とかはスルーしています)

import seaborn
import matplotlib
%matplotlib inline

tmp = []
for i in range(100):
    start = data.index.searchsorted(datetime.datetime(2016-i, 1, 1))
    end = data.index.searchsorted(datetime.datetime(2017-i, 1, 1))
    t = data[start:end].values
    
    tmp.append([t[i][0] for i in range(365)])#うるう年面倒なので1日データが欠損しちゃう

matplotlib.pyplot.figure(figsize=(50,50))
ax = seaborn.heatmap(tmp,vmin=15, vmax=35,center=25)

できました。2017年から100年前までの東京の最高気温のヒートマップになっています(上にいくほど最近)。黒い部分は中央の値として25度、最大値を35度、最小値を15度としてカラーマップを当てています。

f:id:paiza:20180730152055p:plain

もちろん東京のみの100年ぽっちのデータで日本全体・地球全体の分析ができるわけではないですが、ヒートマップにして見るとやっぱり上(最近)にいくほど赤っぽい範囲が広がっていて、昔より暑くなってきているような気がしますねぇ。

なんかこんなことしてたら余計暑くなってきました。皆さんも夏場は無理せず養生してください。

■まとめ

というわけでPythonライブラリを使い、気温データをグラフやヒートマップとして可視化してみました。

データの集計・分析は、機械学習をするのに大前提として必要な作業なので、初心者の人はこんな感じで身近なオープンデータを拾ってきていろいろ試してみると勉強になると思います。

あと、データ分析やグラフ表示というとR言語を使っている方も多いと思いますが、「R言語難しいナー」という人(私だ)や、Pythonが好きな人(私だ)はぜひ試してみてください。

これまでもPythonを使ったデータ分析や機械学習に関する記事をいろいろ書いているので、気になった人はぜひ見てみてください。

paiza.hatenablog.com

paiza.hatenablog.com


動画でプログラミングが学べるpaizaラーニングでは、新たに「Python×AI・機械学習入門編」が追加されました。

人気声優の上坂すみれさん演じる進行役のスベトラーナ・小百合・ベレフスカヤと一緒に、実際に画像認識技術を使いながら、初心者でも機械学習を体験・学習できるレッスン内容になっています。

Python×AI・機械学習入門編は全編無料でごらんいただけます。詳しくはこちら





paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。

詳しくはこちら

paizaラーニング

そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。

スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

詳しくはこちら

paizaのスキルチェック





※このブログで紹介しているキャンペーンやイベント、およびサイト内の情報については、すべて記事公開時の情報となります。閲覧されたタイミングによっては状況が変わっている場合もございますのでご了承ください。

ITプログラマー・エンジニア転職・就活・学習のpaiza

プログラミング入門講座|paizaラーニング

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編AI機械学習入門

エンジニアのためのプログラミング転職サイト|paiza転職

プログラミング スキルチェックエンジニア求人一覧

未経験からエンジニアを目指す人の転職サイト|EN:TRY

プログラミング スキルチェックエンジニア未経験可求人一覧

エンジニアを目指す学生の就活サイト|paiza新卒

プログラミング スキルチェックエンジニア求人一覧

ブラウザを開くだけで エディタ、Webサーバ、DB等の開発環境が整う|PaizaCloud