Google Colaboratory内蔵のpythonでオープンデータを分析してどの年代が一番年収が高いのか調べてみた

f:id:mi_ki_ri:20180820205150p:plain

 

Google Colaboratory というサービスをGoogleさんが作っていて、

そのサービスではWeb上でPythonが動くらしい、

ということを小耳に挟んだので試しに何かやってみようと思い触ってみた。

 

例えば

f:id:mi_ki_ri:20180820205703p:plain

こんな感じで、

灰色の部分にコードを書くことで下にprintした内容が出ている。

 

以前R言語で楽曲の再生数を分析したが、今回も分析系のテストをしようと思い、

pythonではよく使われるらしいpandasをチョイス。

(なぜパンダなんだろう)

さらに一度使ってみたかったRESAS API のオープンデータから何かを分析しようと思った。

 

使えるAPIこのページにあるが、**やはり賃金**が一番面白げな気がしたので賃金のデータをゲットすることに。

 

!curl -H "X-API-KEY:{ここにキー}" -o "chingin_00-19.json" "https://opendata.resas-portal.go.jp/api/v1/municipality/wages/perYear?prefCode=34&simcCode=-&wagesAge=2&sicCode=-&year=2010"

 

上のような感じのコマンドをColaboratoryに打ち込んだ。

ちなみに、キーは登録すると発行される。

ちなみに、curlにビックリマークがついているのは、ColaboratoryやJupyter Notebookの方式らしい。

ちなみに、公式のドキュメントを見てもGETで何を送ればいいのかまちまちで多少苦労した。yearのパラメータはいらなかったかもしれない。

 

wagesAgeの値を変えて何度もコマンドを打ち込み、

f:id:mi_ki_ri:20180820210914p:plain

このような感じにjsonファイルが溜まった。

(クラウド上に溜めておける。あるいはGoogle Driveを紐づけたりもできるようだ)

 

さて、このjsonファイルをまずpython上の変数に読み込む。

f:id:mi_ki_ri:20180820211116p:plain

上のような感じだ。

open("{ファイル名}")でファイルを開き、それをjson.load()に送っている。

 

そしてpandas。

R言語と似た、データフレームという型にpandas(pd)を通じて変換する。

f:id:mi_ki_ri:20180820211455p:plain

このデータフレーム、見ての通り年代ごとに分かれているが、

グラフにしたい都合上同一のデータフレームにまとめたい。

なので地道に代入してみる(もっとうまい方法があったと思う)。

f:id:mi_ki_ri:20180820211558p:plain

dfAll = pd...の部分でデータフレームを初期化し、

初期状態のデータフレームに次々とデータを代入、

最後にindexを付け替えている。

(代入後にやらないとインデックスが合わないので値がNaNになってしまう)

 

そして、plot()

f:id:mi_ki_ri:20180820211813p:plain

棒グラフにしてみた。

中年〜壮年期が年収が多くて、若い人とお年寄りは少なめという、まあ常識的な結果となった。

 

続いて行と列を入れ替えてみる。

f:id:mi_ki_ri:20180820211943p:plain

入れ替えることでplot()のkind="pie"が使用可能に。

(厳密に言うと入れ替えなくてもできるが、ほしい形式にならない)

最初に挙げた

f:id:mi_ki_ri:20180820205150p:plain

このようなグラフが得られる。

 

ちなみに、70~99の99は便宜的な値で、実際には100歳以上で働いている人もここに加算されると思われる。

まああまりいないだろうけど。

 

というわけでpythonでした!

面白かったのでまた何かやりたい。