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. Adobe Analytics

    AdobeAnalyticsでReactNativeアプリを計測する

    この記事は2018年12月7日現在の情報を元にしているのと、レガシーA…

  2. Firebase Analytics

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

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

  3. Adobe Analytics

    AdobeAnalytics: s.Util.getQueryParam で複数パラメータ同時取得

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

  4. Google BigQuery

    Google Apps Scriptを使ってスプレッドシートからBigQueryのテーブルを更新する…

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

  5. Google BigQuery

    Big QueryでWindow関数を用いて、累積和を計算する

    こんにちは。エクスチュアでインターンをさせて頂いている中野です。…

  6. Google Cloud Platform

    Google Compute Engine: 一定時間経過したらタスクを強制終了する

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

最近の記事

  1. Streamlitを使った簡単なデータアプリケーション作成ガ…
  2. 生成AI機能を活かしたデータカタログ製品「Secoda」を試…
  3. 回帰分析はかく語りき Part2 重回帰分析
  4. 第14回関西DB勉強会-Snowflake Summit参加…
  5. Open Interpreter+VScode+Docker…
  1. ブログ

    IPアドレスとは
  2. Amazon Web Services

    ELB (ALB・NLB・CLB) をサクッと学ぶ
  3. Linux

    Linux Tips: コマンドラインでJSONをCSVに変換する
  4. IT用語集

    シームレス(Seamless)って何?
  5. ブログ

    東南アジアのデジタルマーケティング
PAGE TOP