はじめに
この記事はpandas.DataFrameに列を追加/lambda/三項演算子|Pythonの続き
今回は、棒グラフを作成する
この記事は、以下の著作物を改変して利用しています。
あいちの人口(2024年9月1日現在) 愛知県人口動向調査結果 月報、愛知県、クリエイティブ・コモンズ・ライセンス
表示2.1日本(http://creativecommons.org/licenses/by/2.1/jp/)
必要なライブラリのインストール
グラフの描画にあたって、matplotlibが必要となる。さらに、日本語を表示できるようにするためにjapanize_matplotlibもインストールする
エラーの発生
$ pip3 install matplotlib
$ pip3 install japanize_matplotlib
japanize_matplotlibのインストール時に以下のエラーが発生した
ModuleNotFoundError: No module named ‘distutils’
使用しているPythonのバージョンは3.12.7
検索したところ、こちらの記事が参考になった→https://qiita.com/pitao/items/1740a62ddee797aed807
代わりにsetuptoolsをインストールすることで解決するそう
$ pip3 install setuptools
これで準備は完了
棒グラフの描画
pandas.DataFrameにはplotメソッドが用意されている。今回はそのうちのplot.bar()メソッドを用いる。
引数にはx軸とy軸となる列ラベルを指定するだけ
最後にplt.show()を書かないと表示されないので注意
ソースコード
今回は、市町村別の推計人口(2024年9月1日時点)の中でも尾張中西部・海部ブロックの市町村に絞ってグラフにする
市町村列は前回作成したものを利用
import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib
# データの読み込みと抽出
df = pd.read_csv('population.csv', encoding='shift_jis')
df = df[(df["国籍区分"]=="a)日外") & (df["性別"]=="a)男女") & (df["ブロック"]=="尾張中西部・海部")]
# 市区町村列の作成
city = df.apply(lambda x : x["郡市"] if x["区町村"] == "―" else x["区町村"], axis = 1)
df["市区町村"] = city
# 棒グラフの描画
df.plot.bar(x="市区町村", y="20240901")
plt.show()
実行結果
ひとまず、グラフの表示はできた
まだ文字が見切れていたり、グラフのタイトルを加えたり改善点が残っているのでこれから修正していく
後編を公開しました→Pandasを用いた棒グラフの作成(後編)|Python
コメントを残す