【Pandas】水平棒グラフでデータランキングを表示する

Pandas
この記事は約10分で読めます。

こんにちは、JS2IIUです。

前回はPandasの.plot.barメソッドを使って棒グラフを作成する方法を解説しました。今回は、水平棒グラフに焦点を当てて解説していきます。水平棒グラフは、棒グラフを横に倒したもので、データのランキングを表示する際に特に便利です。Pandasの.plot.barhメソッドを使えば、水平棒グラフも簡単に作成できます。この記事では、具体的な例を通して水平棒グラフの作成方法とカスタマイズ方法を学び、データ分析に役立てていきましょう。

水平棒グラフ

水平棒グラフは、カテゴリ別にデータの値を棒の長さで表現するグラフで、棒が水平方向に伸びているのが特徴です。データのランキングを視覚的に表示したり、ラベルが長いカテゴリを扱う際に便利です。例えば、各都市の人口を水平棒グラフで表示すれば、人口が多い都市順に並べて表示することができます。

Pandasで水平棒グラフを作成する方法

Pandasで水平棒グラフを作成するには、DataFrame.plot.barh()メソッドを使用します。

Python
import pandas as pd
import matplotlib.pyplot as plt

# データフレームの作成
df = pd.DataFrame({
    'category': ['A', 'B', 'C', 'D'],
    'value': [25, 40, 30, 55]
})

# 水平棒グラフの作成
df.plot.barh(x='category', y='value')
plt.title('Horizontal Bar Chart')
plt.xlabel('Value')
plt.show()

解説:

  1. import pandas as pd: Pandasライブラリをpdとしてインポートします。
  2. import matplotlib.pyplot as plt: Matplotlibライブラリのpyplotモジュールをpltとしてインポートします。これはグラフの表示やカスタマイズに使用されます。
  3. データフレームの作成: pd.DataFrame()を使ってサンプルデータを含むデータフレームを作成します。category列はy軸に、value列は水平棒グラフの長さに対応します。
  4. 水平棒グラフの作成: df.plot.barh(x='category', y='value')で水平棒グラフを作成します。x='category'はy軸にcategory列を使用することを指定し、y='value'はx軸にvalue列を使用することを指定します。
  5. グラフのタイトルとラベル: plt.title()でグラフのタイトルを、plt.xlabel()でx軸のラベルを設定します。
  6. グラフの表示: plt.show()でグラフを表示します。

水平棒グラフの活用事例

1. 各国のGDPの比較

各国のGDPを水平棒グラフで比較することで、経済規模の違いを視覚的に把握できます。

Python
import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータの作成
data = {
    'Country': ['USA', 'China', 'Japan', 'Germany'],
    'GDP (trillion USD)': [23.32, 17.73, 5.08, 3.85]
}
df = pd.DataFrame(data)

# 水平棒グラフの作成
df.plot.barh(x='Country', y='GDP (trillion USD)')
plt.title('GDP by Country')
plt.xlabel('GDP (trillion USD)')
plt.show()

2. 商品別売上高の比較

各商品の売上高を水平棒グラフで比較することで、どの商品が最も売れているのかを把握できます。

Python
import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータの作成
data = {
    'Product': ['Product A', 'Product B', 'Product C', 'Product D'],
    'Sales': [1200, 850, 1500, 1000]
}
df = pd.DataFrame(data)

# 水平棒グラフの作成
df.plot.barh(x='Product', y='Sales')
plt.title('Sales by Product')
plt.xlabel('Sales')
plt.show()

3. 年齢層別の人口分布

年齢層別の人口を水平棒グラフで表示することで、人口構成を把握できます。

Python
import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータの作成
data = {
    'Age Group': ['0-14', '15-24', '25-34', '35-44', '45-54', '55-64', '65+'],
    'Population (million)': [15, 20, 25, 22, 18, 12, 8]
}
df = pd.DataFrame(data)

# 水平棒グラフの作成
df.plot.barh(x='Age Group', y='Population (million)')
plt.title('Population by Age Group')
plt.xlabel('Population (million)')
plt.show()

4. アンケート結果の可視化

アンケートの回答結果を水平棒グラフで表示することで、回答の傾向を把握できます。

Python
import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータの作成
data = {
    'Answer': ['Strongly Agree', 'Agree', 'Neutral', 'Disagree', 'Strongly Disagree'],
    'Count': [50, 120, 80, 30, 20]
}
df = pd.DataFrame(data)

# 水平棒グラフの作成
df.plot.barh(x='Answer', y='Count')
plt.title('Survey Results')
plt.xlabel('Count')
plt.show()

5. 学生のテストの点数分布

学生のテストの点数を水平棒グラフで表示することで、得点分布を把握できます。

Python
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# サンプルデータの作成
np.random.seed(0)
data = {
    'Student ID': range(1, 21),
    'Score': np.random.randint(50, 100, 20)
}
df = pd.DataFrame(data)

# 水平棒グラフの作成
df.plot.barh(x='Student ID', y='Score')
plt.title('Test Scores by Student')
plt.xlabel('Score')
plt.show()

6. アルゴリズムの実行時間の比較

異なるアルゴリズムの実行時間を水平棒グラフで比較することで、パフォーマンスの違いを把握できます。

Python
import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータの作成
data = {
    'Algorithm': ['Algorithm A', 'Algorithm B', 'Algorithm C'],
    'Execution Time (seconds)': [0.5, 0.2, 0.8]
}
df = pd.DataFrame(data)

# 水平棒グラフの作成
df.plot.barh(x='Algorithm', y='Execution Time (seconds)')
plt.title('Execution Time by Algorithm')
plt.xlabel('Execution Time (seconds)')
plt.show()

水平棒グラフのカスタマイズ

水平棒グラフの色、凡例、ラベルなどをカスタマイズすることで、より見やすく、分かりやすいグラフを作成できます。

Python
import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータの作成
data = {
    'Product': ['Product A', 'Product B', 'Product C', 'Product D'],
    'Sales': [1200, 850, 1500, 1000]
}
df = pd.DataFrame(data)

# 水平棒グラフの作成
df.plot.barh(x='Product', y='Sales', color='lightgreen')
plt.title('Sales by Product', fontsize=14)
plt.xlabel('Sales', fontsize=12)
plt.ylabel('Product', fontsize=12)
plt.xticks(fontsize=10)
plt.yticks(fontsize=10)
plt.grid(axis='x', linestyle='--')
plt.show()

解説:

  • color引数で、棒の色を’lightgreen’に指定しています。
  • plt.title(), plt.xlabel(), plt.ylabel()で、タイトル、x軸ラベル、y軸ラベルのフォントサイズを指定しています。
  • plt.xticks()plt.yticks()で、x軸とy軸の目盛りのフォントサイズを指定しています。
  • plt.grid(axis='x', linestyle='--')で、x軸方向に破線でグリッド線を表示しています。

プログラミングする上での注意事項

  • データフレームのインデックスをy軸にしたい場合は、df.plot.barh(x='value')のように、y引数を省略できます
  • 水平棒グラフの色や凡例の位置などを変更するには、matplotlib.pyplotモジュールの関数を使用します。

参考になるWEBサイト

この記事が、Pandasで水平棒グラフを作成する際に役立つことを願っています。次回の記事では、箱ひげ図について解説します。お楽しみに!

今回も少しだけPRです。

Pandasについて詳しく知りたいかた、もっと使いこなしたい方におすすめの本です。数年前に購入しましたが、今も手元に置いて時々見返しています。

「pandasクックブック Pythonによるデータ処理のレシピ」Theodore Petrou著、黒川利明訳。

最後まで読んでいただきありがとうございます。73

コメント

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