【Python】円グラフの描画【初心者のための】

python engraph Python

Excelなどのデータから、図を作る仕事って結構ありませんか?
数字だけをプレゼン資料に張り付けるより、様々なグラフにして話すほうが、
聞き手に優しいですし、理解も進みます。

ただ、Excelを使って図を作ると、色を変えたり文字のフォントを少しずつ変えたり
結構時間がかかってしまう
こともありますよね。

筆者も同じ悩みで、発表資料を作るためのグラフにかなり多くの時間を使っています。
pythonを使えるようになり、図を作る作業を手早く簡単に達成することが目標です。

この記事では、実際の業務でありそうなExcelのデータを、
きれいに図示し、発表資料に使う
ことをコンセプトに記載します。

今回は「円グラフ」に挑戦します。

Mogrii
Mogrii

 ー筆者についてー

Excelを使う事務作業が多いサラリーマン

同僚の「これまとめといて」で

かなり時間を使ってしまう現状に嫌気がさし

なんとかPythonで楽に仕事ができないか日々勉強中。

非エンジニア。数学も苦手。


振り返りと使用するデータ

Excelからデータフレームに内容を取り込むところについては下記

データの集計と棒グラフの作成は下記

Level up Log
昨日より一歩先に、着実に前に進む記録

使用したデータは、ファイル名「arisounadata.xlsx」です。
内容は適当ですが、仮に「友達に聞いた、ごはんに一番合うと思うおかず」です。
回答者番号(No)と、性別(Gender)、回答(Answer)の3列です。

初心者向けのため、欠損値や異常値は含まれていないことを前提に進めます。
(いつかまたその記事も書きます)

データのイメージ

円グラフの作成に必要なもの

まずライブラリのインポートをします。

Excelからデータを入れるために、pandas、円グラフの描画にmatplotlib.pyplotが必要です。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel('arisounadata.xlsx', sheet_name= 'Answer')

gender_data = df['Gender'].value_counts()
answer_data = df['Answer'].value_counts()

# print(gender_data.index)

また、データのうち、性別(Gender)、回答(Answer)のぞれぞれを
gender_dataとanswer_dataに格納します。

またここで、後で円グラフのそれぞれの範囲の横に書くラベルを
gender_data.indexで表現できることを確認します。

円グラフの描画

円グラフを描画するにはplt.pieを使います。
そのままでは円がデータに応じて区切られた図だけが出力されるので、
labels=に前項で確認したラベル名をいれます。

startangle=90は、時計でいう12時の箇所から円グラフを始めるために設定します。

また、それぞれの割合を示すため、autopct=”%1.1f%%”を末尾に記載しました。

plt.pie(gender_data,labels=gender_data.index, startangle=90, autopct="%1.1f%%")
plt.show()
出力した円グラフ

同様にAnswerに関しても図示します。

plt.pie(answer_data,labels=answer_data.index, startangle=90, autopct="%1.1f%%")
plt.show()

円グラフでは、右上(時計でいう1時とか2時とかの場所)に大きな割合のデータが
来てほしい場合もあると思うので、その時は下記のようにcounterclock=Falseとします。

また、数値が若干かぶっていたので、
pctdistance=0.8(デフォルトは0.6)で数値を少し外側に移動しています。

plt.pie(answer_data,labels=answer_data.index, startangle=90, autopct="%1.1f%%", 
counterclock=False, pctdistance=0.8)
plt.show()

参考にしたサイトと未だ筆者にできないこと

グラフの作成にあたっては、下記サイトを参考にしています。

matplotlib で円グラフを描く
本ページでは、Python のグラフ作成パッケージ、Matplotlib を用いて円グラフ (pie chart) を描く方法について紹介します。 matplotlib.pyplot.pie の概要 matplotlib …

また、円グラフに割合(%)ではなく生データを乗せる方法はまだ習得していません。
できるようになればこのページを更新予定です。

コメント

タイトルとURLをコピーしました