2つの列データの差を新しい列として作る
今回は「e-Stat:政府統計の総合窓口」からオープンデータを取得していきます。
キーワードに「人口推計」と入力します。
4つの中から「人口推計」を選択します。
データベースを選択します。
この中から「平成30年10月1日現在人口推計」を選択します。
005の都道府県、男女別人口、総人口、日本人人口の「DB」を選択します。
右上のダウンロードをクリックします。
画面下のダウンロードをクリックしてダウンロードします。
そうするとこのようなCSVファイルがダウンロードできました。
2つの列データの差を新しい列として作る
試しに「平成30年」から「平成29年」を引いて、新しく人口増減を作って見たいと思います。解説
import pandas as pd | 表データーを読み込むpandasライブラリをimportします。省略してpdとします。 |
import matplotlib.pyplot as plt | グラフを表示させるmatplotlibをimportします。matplotlib.pyplotとするとpltという省略名が使えます。 |
import japanize_matplotlib | 日本語で表示させるため、また文字化けしないようjapanize_matplotlibをimportします。 |
df = pd.read_csv(“FEH_00200524_220213102329.csv”,index_col=”全国・都道府県”, encoding=”shift_jis”) | read_csvでファイルを読み込みます。index_colでインデックスを全国・都道府県の列に指定し、グラフに県別を表示させます。encoding=”shift_jis”でUTF-8形式での日本語対応にします。 |
df = df.drop(“全国”, axis=0) | 「全国」の行を削除してます。 |
df[“平成29年”] = pd.to_numeric(df[“平成29年”].str.replace(“,”, “”)) | エラーで「no numeric data to plot」がでないように「カンマを空の文字に変換」してグラフ用データにしています。 |
df[“平成29年”] = pd.to_numeric(df[“平成30年”].str.replace(“,”, “”)) | 同上 |
df[“人口増減”] = df[“平成30年”] – df[“平成29年”] | 2つの列の差を新しい列として作る。 |
df = df.sort_values(“人口増減”, ascending=False) | 多い順に並べ替えています。 |
df[“人口増減”].plot.bar(figsize=(11,7)) | 棒グラフで画面サイズを幅11インチ、高さ7インチにしています。 |
plt.show() | 表示します。 |
最大値が100になっていますね。これはmatlotlibはグラフを表示するときに最大値と最小値を自動的にスケールを調整してくれるのでこのようになります。
そこで今度はplt.ylim()を使ってグラフの縦軸の最小値と最大値のスケールを指定することもできます。
plt.ylim(-200,200) | 最小値を200、最大値を200に設定 |
*尚、ここではバージョン「Python 3.10.1」を使用しています。
この本から引用、参考に学び、完成させることができました。しかし、ここではプログラミング初心者の私が詳しく解説することは、おこがましく、難しく出来ません(ToT)
その点、この本では丁寧な解説が載っていますので、解説とともにコードを書き、完成させればより深く学ぶことができます(^.^)、実際、初心者の私でもわかりやすかったです。身に付け消えないスキルが2,000円程ならコスパよく、買っておいてよかったと満足してます。