サイトアイコン アマチュア無線局JS2IIU

【Pandas】棒グラフでデータを見やすく比較する

こんにちは、JS2IIUです。

前回はPandasを使って積み上げグラフを作成する方法を学びました。今回は、棒グラフに焦点を当てて解説していきます。棒グラフは、データの比較を視覚的に行う際に非常に役立つグラフです。Pandasの.plot.barメソッドを使えば、様々なデータから棒グラフを簡単に作成できます。この記事では、具体的な例を通して棒グラフの作成方法とカスタマイズ方法を学び、データ分析に役立てていきましょう。

棒グラフ

棒グラフは、カテゴリ別にデータの値を棒の長さで表現するグラフです。異なるカテゴリの値を比較したり、データの大小を一目で把握したりするのに役立ちます。例えば、各商品の売上を棒グラフで表示すれば、どの商品が最も売れているのかを簡単に比較できます。

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

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

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.bar(x='category', y='value')
plt.title('Bar Chart')
plt.ylabel('Value')
plt.show()

解説:

  1. import pandas as pd: Pandasライブラリをpdとしてインポートします。
  2. import matplotlib.pyplot as plt: Matplotlibライブラリのpyplotモジュールをpltとしてインポートします。これはグラフの表示やカスタマイズに使用されます。
  3. データフレームの作成: pd.DataFrame()を使ってサンプルデータを含むデータフレームを作成します。category列はx軸に、value列は棒グラフの高さに対応します。
  4. 棒グラフの作成: df.plot.bar(x='category', y='value')で棒グラフを作成します。x='category'はx軸にcategory列を使用することを指定し、y='value'はy軸にvalue列を使用することを指定します。
  5. グラフのタイトルとラベル: plt.title()でグラフのタイトルを、plt.ylabel()でy軸のラベルを設定します。
  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.bar(x='Country', y='GDP (trillion USD)')
plt.title('GDP by Country')
plt.ylabel('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.bar(x='Product', y='Sales')
plt.title('Sales by Product')
plt.ylabel('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.bar(x='Age Group', y='Population (million)')
plt.title('Population by Age Group')
plt.ylabel('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.bar(x='Answer', y='Count')
plt.title('Survey Results')
plt.ylabel('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.bar(x='Student ID', y='Score')
plt.title('Test Scores by Student')
plt.ylabel('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.bar(x='Algorithm', y='Execution Time (seconds)')
plt.title('Execution Time by Algorithm')
plt.ylabel('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.bar(x='Product', y='Sales', color='skyblue', rot=0)
plt.title('Sales by Product', fontsize=14)
plt.ylabel('Sales', fontsize=12)
plt.xlabel('Product', fontsize=12)
plt.xticks(fontsize=10)
plt.yticks(fontsize=10)
plt.grid(axis='y', linestyle='--')
plt.show()

解説:

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

参考になるWEBサイト

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

今回も少しだけPRです。

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

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

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

モバイルバージョンを終了