Python・Pandas・MatplotlibでDataFrameの頻度プロット(棒グラフ)を作成する方法
PythonのPandas DataFrameでデータの頻度(出現回数)を可視化したい場合、value_counts()メソッドとMatplotlibを組み合わせることで、簡単に頻度プロットを作成できます。
この記事では、Matplotlibを使ってPandas DataFrameの頻度プロットを表示する手順を、サンプルコード付きでわかりやすく解説します。
頻度プロットを作成する手順
以下の手順に従って、DataFrameの値ごとの出現回数を棒グラフとして表示できます。
- 図のサイズと余白を設定する —
plt.rcParamsでfigureサイズや自動レイアウト調整を指定します。 - 図とサブプロットを作成する —
plt.subplots()でFigureオブジェクトとAxesオブジェクトを生成します。 - 2次元の表形式データ(DataFrame)を作成する — サンプルデータとして、サイズ変更可能な2次元のテーブルデータを用意します。
- 一意な値の出現回数を集計する —
value_counts()メソッドで、各ユニークな値のカウントを含むSeriesを取得します。 - 図を表示する —
show()メソッドを使ってグラフを画面に描画します。
サンプルコード
import pandas as pd
from matplotlib import pyplot as plt
# 図のサイズとレイアウトの設定
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
# 図とサブプロットの作成
fig, ax = plt.subplots()
# サンプルDataFrameを作成
df = pd.DataFrame({'numbers': [2, 4, 1, 4, 3, 2, 1, 3, 2, 4]})
# value_counts()で頻度を集計し、棒グラフとして描画
df['numbers'].value_counts().plot(ax=ax, kind='bar', xlabel='numbers', ylabel='frequency')
# グラフを表示
plt.show()
コードのポイント解説
value_counts()は、Series内の一意な値それぞれの出現回数を降順で返します。今回の例では「2」と「4」が3回、「1」と「3」が2回出現しています。kind='bar'を指定することで、集計結果が縦棒グラフとして描画されます。折れ線グラフにしたい場合はkind='line'に変更できます。xlabelとylabel引数により、X軸・Y軸のラベル名を自由に設定できます。
実行結果
上記のコードを実行すると、X軸に「numbers」の各値、Y軸にその出現頻度(frequency)を示した棒グラフが表示されます。これにより、データ内のどの値が最も多く出現しているかがひと目で把握できます。
まとめ
Pandasのvalue_counts()とMatplotlibのplot()を組み合わせれば、わずか数行のコードでDataFrameの頻度分布を直感的に可視化できます。カテゴリカルデータの分布確認や、データクレンジング前の概要把握など、日常的なデータ分析作業でぜひ活用してみてください。
-
Python Matplotlibで3Dグラフをプロットする方法を解説
PythonのMatplotlibを使えば、3次元の散布図やグラフを簡単に描画できます。この記事では、mpl_toolkits.mplot3dモジュールを利用して3Dグラフを作成する手順を、サンプルコード付きでわかりやすく解説します。 3Dグラフをプロットする基本手順 Pythonで3Dグラフを描くには、以下のステップに従います。 figure()メソッドを使って、新しい図(フィギュア)を作成するか、既存の図をアクティブにします。 Axes3Dオブジェクトを取得して、3D用の座標軸を準備します。 x、y、zそれぞれのデータポイントをリストとして定義します。 scatter3D()メソッドを使
-
Matplotlibでプロット上のグリッドサイズを定義する方法
Matplotlib を使ってプロット上にグリッド(格子線)を表示し、その間隔(サイズ)を自由に定義する方法を紹介します。基本的な流れは以下の手順のとおりです。 グリッドサイズを定義する手順 figure() メソッドを使って、新しい図(Figure)を作成するか、既存の図をアクティブにします。 サブプロット配置の一部として、add_subplot() で図に Axes(座標軸)を追加します。 入力リストを渡して曲線をプロットします。 margins() メソッドで x 軸・y 軸のマージンを 0 に設定します。 X 軸のグリッド位置を指定するには、set_ticks() に目盛りの座標