Databricks

Databricks: Spark DataFrameでピボットグラフを作る

こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。

今回はDatabricksにおける、Spark DataFrameのピボット機能を使った集計方法についてです。

DataFrameを作成する

まずはサンプルデータでDataFrameを作成します。
公開データのPopular Baby NamesのCSVを使います。
このデータは、「ニューヨーク市で生まれた新生児の名前」を出生年別・人種別・性別でまとめたパブリックデータです。

Databricksにデータをアップロードしてから、下記のコードでDataFrameを作成します。

import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._

val myschema = StructType(
  Array(
    StructField("Year of Birth", IntegerType, true),
    StructField("Gender", StringType, true),
    StructField("Ethnicity", StringType, true),
    StructField("Child's First Name", StringType, true),
    StructField("Count", IntegerType, true),
    StructField("Rank", IntegerType, true)
  )
)

val babyname = spark.read.option("header", true)
.schema(myschema)
.csv("/FileStore/tables/Popular_Baby_Names.csv")

dispaly(babyname)

DataFrameの中身が表示されました。

Popular Baby NamesのCSVをロード

このデータを使って、
2013年〜2016年に生まれた「男の子」の名前でピボットを作ります。

pivotメソッドでピボットテーブル化

ピボットテーブルを作るにはその名もズバリpivotメソッドを使います。
groupByのあとに、さらに軸にしたいカラムをpivotで指定します。

val result = babyname.filter('Gender === "MALE")
.filter($"Year of Birth" > 2012)
.groupBy("Child's First Name")
.pivot("Year of Birth")
.sum("Count")

display(result.orderBy($"2016".desc).limit(10))

2016年の出生数を降順でソートしてトップ10だけを表示してます。

pivotメソッドを使う

ピボットグラフを作成する

最後にテーブルをグラフ化します。
グラフボタンを押して「Bar」を選んだ後、「Plot Option」を開いて下記のように設定します。

Keys: Child’s First Name
Value: 2013, 2014, 2015, 2016
Display type: Stacked Bar chart

積み上げ棒グラフの設定

Applyをクリックすると、グラフが描画されて完成です。

ピボットグラフの完成

Databricksを使えば、ETLから可視化までをScala/Pythonで一貫して作業出来るのでメソッドさえ覚えてしまえばとてもスムーズな分析が可能です。

弊社はデジタルマーケティングからビッグデータ分析まで幅広くこなすデータ分析のプロ集団です。
Databricksのコンサルティング/導入支援についてのお問合わせはこちらからどうぞ。

ブログへの記事リクエストはこちらまでどうぞ。

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Google Apps Script(GAS)

    【Google App Script】GASを利用してslackに投稿するbotを作る

    こんにちは、エクスチュアの岩川です。業務でSlackを使用さ…

  2. Databricks

    ScalaでDatabricksのDataFrameを扱う

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  3. Adobe Analytics

    Adobe AEP SDKでReactNativeアプリを計測する (Android編)

    こんにちは、エクスチュアの権泳東(コン・ヨンドン)です。今回は…

  4. Adobe Analytics

    AdobeAnalytics: スマホのスワイプにカスタムリンクを実装する

    こんにちは、エクスチュアの権泳東/コン・ヨンドン(@exturekwo…

  5. Adobe Analytics

    Adobe Analyticsに入り切らないデータをBigQueryに投入する

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  6. Firebase Analytics

    Firebase AnalyticsのデータをフラットなCSVに変換するETL処理

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

最近の記事

  1. SnowPro Advanced: Architect 合格…
  2. LangChainのソースコードから実装を見てみる(Chat…
  3. Tableau×Teams連携
  4. AIを使ったマーケティングゲームを作ってみた
  5. Snowflakeや最新データ基盤が広義のマーケティングにも…
  1. GitHub Actions

    GitHub ActionsでGCEへのデプロイを楽にしてみた
  2. Google Analytics

    Google Tag Manager上でGoogle Analyticsのcli…
  3. Adobe Analytics

    Adobe AnalyticsとGoogle Analyticsの違い① セグメ…
  4. ブログ

    初めましてのご挨拶と、業務内容のご紹介
  5. ObservePoint

    Webサイトのプライバシー検証(4/6):CMPはすべての可能な同意プロファイル…
PAGE TOP