PythonでPandasのデータフレームを使ってmatplotlib散布図を作成する方法
散布図は、2つの変数間の関係を視覚的に把握するのに非常に便利なグラフです。Pandasを使えばデータフレームを簡単に作成でき、さらにsubplots()メソッドで図(fig)と軸(ax)の変数を生成できます。その後、ax.scatter()メソッドを呼び出すことで、目的の散布図を描画することが可能です。
手順
生徒数のリストを作成します。
生徒が取得した点数のリストを作成します。
各散布点の色を表現するために、色のリストを用意します。
Pandasを使って、データフレームの軸となるデータをリストとして定義します。
subplots()メソッドでfig変数とax変数を作成します。デフォルトではnrowsとncolsはどちらも1に設定されています。plt.xlabel()メソッドでX軸のラベル「Students count」を設定します。plt.ylabel()メソッドでY軸のラベル「Obtained marks」を設定します。手順4で作成したデータフレームをもとに散布点を作成します。各点はstudents_count(生徒数)、marks(点数)、color(色)で構成されます。
最後に
plt.show()メソッドを呼び出して図を表示します。
コード例
from matplotlib import pyplot as plt
import pandas as pd
no_of_students = [1, 2, 3, 5, 7, 8, 9, 10, 30, 50]
marks_obtained_by_student = [100, 95, 91, 90, 89, 76, 55, 10, 3, 19]
color_coding = ['red', 'blue', 'yellow', 'green', 'red', 'blue', 'yellow', 'green', 'yellow', 'green']
df = pd.DataFrame(dict(students_count=no_of_students,
marks=marks_obtained_by_student, color=color_coding))
fig, ax = plt.subplots()
plt.xlabel('Students count')
plt.ylabel('Obtained marks')
ax.scatter(df['students_count'], df['marks'], c=df['color'])
plt.show()
コードのポイント
pd.DataFrame(dict(...))により、辞書形式のデータから一括してデータフレームを生成しています。キー名がそのまま列名になります。c=df['color']を指定することで、各点に個別の色を割り当てられます。カテゴリごとの違いをひと目で判別できるのが利点です。軸ラベルを設定しておくことで、グラフ単体でも何を表しているのかが伝わりやすくなります。
実行結果

このように、Pandasのデータフレームとmatplotlibを組み合わせれば、わずか十数行のコードで見やすい散布図を作成できます。データ分析やレポート作成の際に、ぜひ活用してみてください。
-
Pythonのmatplotlibで1つのページに複数のプロットを作成する方法
Pandasとmatplotlibを組み合わせることで、データフレームから図(figure)と軸(axis)を簡単に作成し、scatterメソッドを使って点をプロットできます。ここでは、学生の人数と取得点数の関係を散布図として可視化する手順を紹介します。 実装の手順 学生のリスト、各学生が取得した点数のリスト、スコアごとの色分け用リストを作成します。 PandasのDataFrameを使って、手順1のデータからデータフレームを作成します。 subplotsメソッドでfigとax変数を作成します。デフォルトでは行数(nrows)と列数(ncols)はどちらも1に設定されています。 plt.xl
-
Pythonで2つのプロットを並べて作成する方法【matplotlibのsubplot活用】
matplotlibのsubplot(row, col, index)メソッドを使うと、1つの図(figure)を行数×列数の領域に分割し、指定したインデックスの位置にそれぞれグラフを描画できます。本記事では、このメソッドを利用して、1つの図の中に2つのグラフを横並びで作成する方法を解説します。 実装の手順 numpyを使って、x座標と2種類のy座標(y1、y2)のデータポイントを作成します。 nrows=1、ncols=2、index=1を指定してsubplot()メソッドを呼び出し、現在のfigureに最初のサブプロットを追加します。 plot()メソッドで、xとy1のデータを使って折れ