【Python基礎】 pandas とmatplpotlibで日本の人口を可視化する

#はじめに
- PandasとMatplotLibを使用して簡単な**データの可視化**を行います。
- 今回は国勢調査が提供するデータから[男女別人口－全国，都道府県（大正９年～平成27年）](https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&toukei=00200521&tstat=000001011777&cycle=0&tclass1=000001094741)を利用します。

#データを読み込む
まずは、データを読み込んで、内部の構造を見てみましょう。

```python

import numpy as np
import pandas as pd
import codecs as cd
import matplotlib.pyplot as plt
import seaborn as sns #後で使いますので、更新予定です。

with cd.open('../data/data001.csv', "r", "Shift-JIS", "ignore") as csv_file:
    data = pd.read_csv(csv_file)

data.info()　#データの構造を見る
data.head(10) #20行頭からデータを表示する
```

実行結果を見ると、popluationの数字がobjectとなっており、
文字列であることがわかります。

```
##data.info()　の実行結果
RangeIndex: 982 entries, 0 to 981
Data columns (total 8 columns):
code                982 non-null object
name                980 non-null object
jp_year_category    980 non-null object
jp_year             980 non-null float64
year                980 non-null float64
popluation          980 non-null object
pop_men             980 non-null object
pop_women           980 non-null object
dtypes: float64(2), object(6)
memory usage: 61.5+ KB
```

また、head()関数を利用した結果から、'name'列を見ると、都道府県名ごとのデータと全国のデータも入っていることもわかりますね。　後で使用する都道府県のコードもわかります。


```
##data.head(10)の結果
code	name	jp_year_category	jp_year	year	popluation	pop_men	pop_women
0	0	全国	大正	9.0	1920.0	55963053	28044185	27918868
1	1	北海道	大正	9.0	1920.0	2359183	1244322	1114861
2	2	青森県	大正	9.0	1920.0	756454	381293	375161
3	3	岩手県	大正	9.0	1920.0	845540	421069	424471
4	4	宮城県	大正	9.0	1920.0	961768	485309	476459
5	5	秋田県	大正	9.0	1920.0	898537	453682	444855
6	6	山形県	大正	9.0	1920.0	968925	478328	490597
7	7	福島県	大正	9.0	1920.0	1362750	673525	689225
8	8	茨城県	大正	9.0	1920.0	1350400	662128	688272
9	9	栃木県	大正	9.0	1920.0	1046479	514255	532224
10	10	群馬県	大正	9.0	1920.0	1052610	514106	538504
11	11	埼玉県	大正	9.0	1920.0	1319533	641161	678372
12	12	千葉県	大正	9.0	1920.0	1336155	656968	679187
13	13	東京都	大正	9.0	1920.0	3699428	1952989	1746439
14	14	神奈川県	大正	9.0	1920.0	1323390	689751	633639
15	15	新潟県	大正	9.0	1920.0	1776474	871532	904942
16	16	富山県	大正	9.0	1920.0	724276	354775	369501
17	17	石川県	大正	9.0	1920.0	747360	364375	382985
18	18	福井県	大正	9.0	1920.0	599155	293181	305974
19	19	山梨県	大正	9.0	1920.0	583453	290817	292636
```


#データの前処理と整形を行う
- 今回は都市部と地方代表で、東京都と青森と北海道のデータを利用しましょう。
- 文字列になっているデータを数字に変換します。人口データが文字列となっているので、int型に変更しましょう。

```python

#青森のデータを作成
data_aomori= data[(data['code']=='2')].copy()
data_aomori.loc[:, 'popluation'] = data_aomori['popluation'].astype(int) #人口データを文字列からint型へ変更

#北海道のデータを作成
data_hokkaido= data[(data['code']=='1')].copy()
data_hokkaido.loc[:, 'popluation'] = data_hokkaido['popluation'].astype(int) #人口データを文字列からint型へ変更

#東京のデータを作成
data_tokyo= data[(data['code']=='13')].copy()
data_tokyo.loc[:, 'popluation'] = data_tokyo['popluation'].astype(int) #人口データを文字列からint型へ変更  
```

#データをグラフ化する
いよいよデータをグラフ化してみましょう。
- 今回は東京都と青森と北海道の人口の推移を棒グラフで横並びで表示します。
- X軸、Y軸にラベルを設定します。
- メモリの年は見やすいように縦書きに回転させます。

```Python
plt.bar(data_aomori['year'], data_aomori['popluation'], color='blue', label='Aomori', align="center")
plt.bar(data_hokkaido['year']　+1.0, data_hokkaido['popluation'], color='green', label='Hokkaido', align="center")
plt.bar(data_tokyo['year']　+2.0, data_tokyo['popluation'], color='red', label='Tokyo', align="center")
plt.xlabel('年ごとの人口の推移（東京、青森、北海道）')　#x軸のラベルを設定する
plt.xticks(rotation=90) #x軸のメモリを回転させる
plt.ylabel('人')　#y軸のラベルを設定する
plt.show()
```

このような形で、グラフ化することができました。
今回は本当に簡単ものをやってみたので、次回もう少しきれいなグラフを書くやり方をまとめる予定です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/133230/72d5d7de-694d-fe62-a60e-039651aa53b2.png)

# 参考にした記事
　[Jupyter + Matplotlib > Figureのサイズを拡大する | 字のぼやけを緩和する](https://qiita.com/7of9/items/5851e542f4041ec33f2b)