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

python engraph Python

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

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

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

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

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

Mogrii
Mogrii

 ー筆者についてー

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

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

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

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

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


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

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

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

https://leveluplog-mogrii.com/wp-admin/post.php?post=288&action=edit

使用したデータは、ファイル名「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()

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

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

https://pythondatascience.plavox.info/matplotlib/%E5%86%86%E3%82%B0%E3%83%A9%E3%83%95

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

コメント

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