はじめに
この記事はPandasを用いた棒グラフの作成(後編)|Pythonのつづき
今回は円グラフの作成の仕方についてのメモ
この記事は、以下の著作物を改変して利用しています。
あいちの人口(2024年9月1日現在) 愛知県人口動向調査結果 月報、愛知県、クリエイティブ・コモンズ・ライセンス
表示2.1日本(http://creativecommons.org/licenses/by/2.1/jp/)
円グラフの作成
pandas.Dataframeのplot.pieメソッドが用意されている
今回は例として、名古屋市の区別の人口割合を可視化する
前提として、pandas, matplotlib, japanize_matplotlibはインストール済みであるとする
インストールしていない場合は以下のコマンドでインストール
$ pip3 install pandas matplotlib japanize_matplotlib
ソースコード
先に今回の全体のソースコードを示す
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["ブロック"]=="名古屋")]
df = df[1:]
# データフレームの整形
df = df.sort_values(by="20240901", ascending=False, ignore_index=True)
df.index = df["区町村"]
# 円グラフの描画と表示
df.plot.pie(y="20240901", legend = False, startangle = 90, counterclock = False, autopct = '%.0f%%')
plt.title("名古屋市の区別推計人口割合")
plt.show()
解説
8行目ではスライスを利用している
もとのデータフレームの1行目には全ての区を合計した名古屋市のデータが存在する
これを除くためにスライスを行なった
円グラフの見た目を見やすくするために、以下の操作をデータフレームに行なった
- データは降順にソートしておく
- データフレームのindexを区の名前にしておく(これで円グラフに凡例が不要になる)
plot.pieについて
引数の説明
引数 | 説明 |
---|---|
y | 円グラフに用いるデータの列を指定する |
legend | Trueで凡例を表示する(デフォルトではTrue) |
startangle | 円グラフの開始角度(デフォルトでは0) 90にすることで円の真上から開始できる |
counterclock | Trueで反時計回りに描画する(デフォルトではTrue) |
autopct | 割合(%)表示のフォーマットの設定 ‘%.0f%%’で整数表示 ‘%.1f%%’で小数第1位まで表示 |
%%は%記号そのものを表示するためのエスケープ文字
実行結果
小数第1位まで表示したら、文字が重なって分かりにくかったので整数までで妥協した
文字が重ならないようにするには円の半径を大きくするなどの対策ができそう
コメントを残す