Python
 Computer >> コンピューター >  >> プログラミング >> Python

MatplotlibでPySpark SQLの結果をプロットする方法を徹底解説

Matplotlibを使ってPySpark SQLのクエリ結果をグラフ化する方法を解説します。Sparkで処理したデータをPandasデータフレームに変換し、Matplotlibで可視化まで行う一連の手順を、サンプルコード付きで紹介します。

実装の全体フロー

MatplotlibでPySpark SQLの結果をプロットするには、以下の手順に従います。

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  • Spark機能のメインエントリポイントとなるSparkContextのインスタンスを取得します。
  • Hiveに格納されたデータと統合できるSpark SQLの派生クラスであるHiveContextのインスタンスを取得します。
  • タプル形式でレコードのリストを作成します。
  • ローカルのPythonコレクションを分散処理用のRDDに変換します。
  • リスト内の各レコードをDBスキーマ(Rowオブジェクト)としてマッピングします。
  • スキーマを持つDataFrameを作成し、「my_table」というテーブル名で登録します。
  • テーブルにレコードを挿入(登録)します。
  • SQLクエリを実行してレコードを取得します。
  • 取得したレコードをPandasのデータフレームに変換します。
  • name列をインデックスに設定してプロットします。
  • show()メソッドで図を表示します。

サンプルコード

from pyspark.sql import Row
from pyspark.sql import HiveContext
import pyspark
import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

sc = pyspark.SparkContext()
sqlContext = HiveContext(sc)

test_list = [(1, 'John'), (2, 'James'), (3, 'Jack'), (4, 'Joe')]
rdd = sc.parallelize(test_list)
people = rdd.map(lambda x: Row(id=int(x[0]), name=x[1]))
schemaPeople = sqlContext.createDataFrame(people)
sqlContext.registerDataFrameAsTable(schemaPeople, "my_table")

df = sqlContext.sql("Select * from my_table")
df = df.toPandas()
df.set_index('name').plot()

plt.show()

実行結果

このコードを実行すると、「my_table」から取得したidとnameのデータがMatplotlibの折れ線グラフとして描画され、画面に表示されます。name列がX軸のラベルとして使われ、idの値がY軸にプロットされます。

補足:より新しいAPIについて

なお、HiveContextは古いAPIであり、現在のPySparkではSparkSessionの使用が推奨されています。SparkSessionを使えば、SparkContextやHiveContextを個別に生成する必要がなく、以下のように簡潔に書けます。

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("example").getOrCreate()
df = spark.createDataFrame(test_list, ["id", "name"])
df.createOrReplaceTempView("my_table")

result = spark.sql("Select * from my_table")
result.toPandas().set_index('name').plot()

import matplotlib.pyplot as plt
plt.show()

環境に応じて適切なAPIを選択してください。

  1. MatplotlibでグラフのX軸とY軸を入れ替える方法

    Matplotlibでグラフの軸(X軸とY軸)を入れ替えたい場合、subplots()メソッドを使って図(figure)を作成し、2つのサブプロットを追加する方法が便利です。1つ目のサブプロットに曲線を描画し、そのX・Yデータを抽出して、2つ目のサブプロットの曲線に設定し直すことで、軸を入れ替えたグラフを作成できます。 手順 NumPyを使って、xとyのデータポイントを作成します。 図を作成し、2つのサブプロットを追加します。 両方のサブプロットにタイトルを設定します。 plot()メソッドを使って、xとyのデータポイントをプロットします。 get_xdata()とget_ydata()を使

  2. Matplotlibで折れ線グラフをアニメーション化する方法を徹底解説

    Matplotlibでは、FuncAnimationを活用することで、折れ線グラフに動きのあるアニメーション効果を簡単に加えることができます。本記事では、基本的な手順と実際に動作するサンプルコードを交えながら、その方法をわかりやすく解説します。折れ線グラフをアニメーション化する基本手順subplots()メソッドを使用して、図(figure)とサブプロットを作成します。x軸・y軸それぞれの表示範囲(スケール)を設定します。NumPyを使って、xおよびtのデータ点を生成します。座標ベクトルからmeshgrid()で座標行列X2とT2を作成します。plot()メソッドでxとFのデータを使い、折れ線