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. Databricks

    Databricks: Spark RDDで使う主なメソッド

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

  2. Adobe Analytics

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

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

  3. Adobe Analytics

    AdobeAnalyticsでReactNativeアプリを計測する

    この記事は2018年12月7日現在の情報を元にしているので内容が古いで…

  4. Adobe Analytics

    Adobe AnaltyicsとGoogle Analytics の「生Webビーコン」をBigQu…

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

  5. Google Cloud Platform

    Node.js+GAE: 日本語自然文を形態素解析してネガポジ判定をする

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

  6. プログラミング

    Node.jsでCSVファイル内のダブルクオートで囲まれたカラム内のカンマを除去する

    こんにちは、エクスチュアCTOの権です。いろんなデータを扱う業…

最近の記事

  1. Adobe AnalyticsとGoogle Analyti…
  2. AdobeAnalytics: s.Util.getQuer…
  3. Tableau:Viz in ツールヒントを出し分ける
  4. GoogleAnalytics Apps+Web プロパティ…
  5. BigQueryのユーザー定義関数(UDF)をTableau…
  1. Google Analytics

    Google Analytics StandardのデータをBigQueryで分…
  2. Adobe Dynamic Tag Manager

    Tag Manager: Adobe DTM で Google Analytic…
  3. ObservePoint

    ObservePointでサイト内のタグが全部まるっとお見通しだ!
  4. Adobe Analytics

    Adobe Analytics:マーケティングチャネルの設定方法 全流入経路を1…
  5. Google BigQuery

    GCPのBQMLを使ってKaggleコンペに挑んでみた(その1)
PAGE TOP