Excelなどのデータから、図を作る仕事って結構ありませんか?
数字だけをプレゼン資料に張り付けるより、様々なグラフにして話すほうが、
聞き手に優しいですし、理解も進みます。
ただ、Excelを使って図を作ると、色を変えたり文字のフォントを少しずつ変えたり
結構時間がかかってしまうこともありますよね。
筆者も同じ悩みで、発表資料を作るためのグラフにかなり多くの時間を使っています。
pythonを使えるようになり、図を作る作業を手早く簡単に達成することが目標です。
この記事では、実際の業務でありそうなExcelのデータを、
きれいに図示し、発表資料に使うことをコンセプトに記載します。
今回は「円グラフ」に挑戦します。
ー筆者についてー
Excelを使う事務作業が多いサラリーマン
同僚の「これまとめといて」で
かなり時間を使ってしまう現状に嫌気がさし
なんとかPythonで楽に仕事ができないか日々勉強中。
非エンジニア。数学も苦手。
振り返りと使用するデータ
Excelからデータフレームに内容を取り込むところについては下記
データの集計と棒グラフの作成は下記
使用したデータは、ファイル名「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()
参考にしたサイトと未だ筆者にできないこと
グラフの作成にあたっては、下記サイトを参考にしています。
また、円グラフに割合(%)ではなく生データを乗せる方法はまだ習得していません。
できるようになればこのページを更新予定です。
コメント