DataFrameに取り込んだデータから棒グラフを作りたい…。
簡単にできますよ!
では今回は、
「pandasのDataFrameから棒グラフを作成する方法」を
できるだけわかりやすく解説いたします。
また、「凡例」を表示させる方法や、
「複数の棒グラフ」を作成する方法も紹介いたします!
【著者情報】
Python歴3年。
入社2年目の春に先輩が突然トンズラし、業務を半分肩代わりするハメに…。
今までの1.5倍の仕事をこなせるはずもなく、苦しむ毎日。
業務効率化を模索中にPythonと出合う。
業務とPythonの相性が良く、2倍以上の効率化を実現。現在も効率化を進行中。
[pandas]DataFrameから棒グラフを作成するには
「plot.bar」を使います。
まずは単独の棒グラフを作ってみましょう。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import pandas as pd
import japanize_matplotlib
df = pd.read_excel('input.xlsx')
df.set_index('年代', inplace = True)
df['A店入場者数'].plot.bar(figsize=(8, 4))
df['A店入場者数'].plot.bar(figsize=(8, 4))
事前準備
- pandasのインストール
- japanize_matplotlibのインストール
「DataFrame」を作成・編集するには、「pandas」が必要になります。
「japanize_matplotlib」は日本語表示が可能になるため、必要に応じてインストールしてください。
pandasのインストール方法
pandasを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install pandas
※pandasを使用したことがある場合は、このインストール作業は不要です。
インストールができない場合の対処法などは下記記事をご参考ください。
japanize_matplotlibのインストール方法
インストール方法は「pandas」と同様です。
下記コードを入力・実行してください。
pip install japanize_matplotlib
※japanize_matplotlibを使用したことがある場合は、このインストール作業は不要です。
DataFrameの基礎解説
「read_excel」などは下記記事で解説しております。ご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
import pandas as pd
import japanize_matplotlib
「pandas」と「japanize_matplotlib」をインポートします。
データ内に日本語が含まれる場合、「japanize_matplotlib」をインポートしないと文字化けします。
▼「japanize_matplotlib」をインストール・インポートしなかった場合
df = pd.read_excel('input.xlsx')
df.set_index('年代', inplace = True)
インデックスが棒グラフのラベル部分に表示されるため、5行目でインデックスを変更しています。
(年代をラベルに表示したいので、年代をインデックスに変更)
これを書かないと行番号(0、1、2、3など)がラベルに表示されてしまいます。
▼インデックス変更をしなかった場合
「inplace = True」はDataFrameに保存するかどうかの設定です。
保存しない場合は「inplace = False」と記述するか、記述自体しなくても大丈夫です。
df['A店入場者数'].plot.bar(figsize=(8, 4))
上記一文にて、df(データフレーム)の「A店入場者数」を棒グラフにすることができます。
print等を使わなくても、コードエディタに表示されます。
▼「JupyterLab」に表示された場合の一例
「figsize」はグラフのサイズ(幅, 高さ)です。
特に指定がなければ記述しなくても大丈夫です。
<テンプレ>
【 データフレーム[‘棒グラフにする列名’].plot.bar(figsize=(グラフの幅, グラフの高さ)) 】
棒グラフを出力したい場合は、openpyxlで作成するのがオススメです。
凡例を表示する方法
グラフ内に「凡例」を表示してみましょう。
▼凡例
ひとまず全コードをお見せします。
これで凡例付きのグラフを作成することができます。
import pandas as pd
import japanize_matplotlib
df = pd.read_excel('input.xlsx')
df.set_index('年代', inplace = True)
df.plot.bar(y='A店入場者数',figsize=(8, 4))
変わっているのは7行目だけです。
▼前項
df['A店入場者数'].plot.bar(figsize=(8, 4))
▼今回
df.plot.bar(y='A店入場者数',figsize=(8, 4))
前項ではdfの「A店入場者数」のみで棒グラフを作りましたが、
今回はdf全てにして「y=’A店入場者数’」の指定をしています。
では、複数の棒グラフを作成するにはどうしたらいいのでしょうか。
次項で解説いたします。
複数の棒グラフを作成するには
今回紹介するのは下記の2種類です。
- 並列棒グラフ
- 積み上げ棒グラフ
並列棒グラフ
上図のような並列で比較できるような棒グラフを作ってみましょう。
import pandas as pd
import japanize_matplotlib
df = pd.read_excel('input.xlsx')
df.set_index('年代', inplace = True)
df.plot.bar(figsize=(8, 4))
前項との違いは、7行目の「y=’入場者数’」が無くなっているだけです。
元データ含め、その他は前項と同じです。
積み上げ棒グラフ
今度は下図のような積み上げ棒グラフの作り方です。
import pandas as pd
import japanize_matplotlib
df = pd.read_excel('input.xlsx')
df.set_index('年代', inplace = True)
df.plot.bar(stacked=True,figsize=(8, 4))
並列棒グラフとの違いは7行目に「stacked=True」を追加しただけです。
これを記述することによって、積み上げ棒グラフを作成することができます。
うまく動作しない時
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
pandasのDataFrameから棒グラフを作成する方法を解説いたしました。
当ブログでは、pandasやopenpyxlなど、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!