Pandasを用いた円グラフの作成|Python

0 アクセス

はじめに

この記事はPandasを用いた棒グラフの作成(後編)|Pythonのつづき

今回は円グラフの作成の仕方についてのメモ

この記事は、以下の著作物を改変して利用しています。
あいちの人口(2024年9月1日現在) 愛知県人口動向調査結果 月報、愛知県、クリエイティブ・コモンズ・ライセンス
表示2.1日本(http://creativecommons.org/licenses/by/2.1/jp/

円グラフの作成

pandas.Dataframeのplot.pieメソッドが用意されている
今回は例として、名古屋市の区別の人口割合を可視化する

前提として、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円グラフに用いるデータの列を指定する
legendTrueで凡例を表示する(デフォルトではTrue)
startangle円グラフの開始角度(デフォルトでは0)
90にすることで円の真上から開始できる
counterclockTrueで反時計回りに描画する(デフォルトではTrue)
autopct割合(%)表示のフォーマットの設定
‘%.0f%%’で整数表示
‘%.1f%%’で小数第1位まで表示

%%は%記号そのものを表示するためのエスケープ文字

実行結果

小数第1位まで表示したら、文字が重なって分かりにくかったので整数までで妥協した
文字が重ならないようにするには円の半径を大きくするなどの対策ができそう

Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です