value_counts()の結果を円グラフにする方法を説明します。 分析にはほとんど使わない円グラフですが、プレゼン資料では大活躍です。 更に、一つのパイ切れを引っ張り出して強調する方法も説明します。
チートシート
やりたいこと | コーディング |
---|---|
value_counts()の結果を円グラフの ソースデータにする |
pie = df['Col'].value_counts() df_pie = pd.DataFrame(pie) |
インデックスラベルをシリーズオブジェクトで受ける | labels = df_JobRole.index.tolist() |
'Col' : 任意の列名
labels: ラベル名のシリーズオブジェクト
今回のデータについて
- df[‘JobRole’].value_counts() した結果をデータフレームにします
- df.shape => 9 x 1 に集約しています。 データフレーム名
df_JobRole
- インデックスは各
JobRole
名になります。
サンプルデータセットについての記事で紹介しているHRデータ
です。
1470行 x 35列のサイズがあります。
サンプルオペレーション
デフォルトの0から始まるインデックスをラベルインデックスに変更します。
1
2
# JobRole の各要素数を`value_counts()`で取る
df['JobRole'].value_counts()
結果は以下のとおりです。
円グラフ用のデータフレームを作成します。 インデックスをJobRole名にします。
1
2
3
4
# JobRole の各要素数を`value_counts()`で取る
JobRole = df['JobRole'].value_counts()
df_JobRole = pd.DataFrame(JobRole)
df_JobRole
結果は、以下のとおりです。
円グラフを作図します
1
2
3
4
5
6
7
# Year of Month でインデックスする
sizes = df_JobRole['JobRole']
labels = df_JobRole.index.tolist()
fig1, ax1 = plt.subplots()
ax1.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=0)
ax1.axis('equal')
plt.show()
これだけでも十分ですが、プレゼン用にLabratory Technician
だけ少し引っ張り出して強調させて見ましょう。
1
2
3
4
5
6
7
sizes = df_JobRole['JobRole']
labels = df_JobRole.index.tolist()
explode = (0,0,0.1,0,0,0,0,0,0)
fig1, ax1 = plt.subplots()
ax1.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=0, explode=explode, shadow=True)
ax1.axis('equal')
plt.show()
line by line で解説します。
- JobRole をdf_JobRole のデータフレームから取り出し、変数sizes に代入します。sizesはシリーズオブジェクトです
- 変数labesにインデックス(JobRole名)を代入します。lablesもシリーズオブジェクトです
- 変数explodeに各pie ピースのうち、explode(引っ張ってくる)pieピースに0.1を与える配列を定義します。
- plt.subplot()に入れる変数を定義します
- 円グラフの本体axiにpieの大きさ、ラベル、pieの中に記入する%のフォーマット等を設定します
- ax1の均等スケーリング equal を指定します
- おまじないの作図命令
ついでに、棒グラフは以下のとおりです。 仲間内にはこのグラフで十分かと思います。 これは、ラベルでインデックスして plt.bar で棒グラフ化するの記事で紹介している方法です。
1
df_JobRole.plot.bar()
参照ページ一覧
以下のページ(本サイト内及び外部サイト)も参照してください。
1) df.value_counts() の結果をパワポ用にビジュアル化する
2) 日本語対応した matplotlib 2軸グラフ
3) クロス集計表とヒートマップでデータセットを理解する
4) matplotlib_documentation
ひとこと
データの集約化から可視化へのワークフローを確立することをおすすめします。データ解析自体より意外と時間と手間のかかるまとめのプレゼン資料作成がぐんと楽になります。