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のコンサルティング/導入支援についてのお問合わせはこちらからどうぞ。

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

【Tips】ヒートマップ機能について②~ムーブメント、アテンション編~前のページ

Segmentでデータ管理を一元化する次のページ

ピックアップ記事

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

関連記事

  1. Adobe Analytics

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

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

  2. Adobe Analytics

    AdobeAnalyticsでReactNativeアプリを計測する

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

  3. Google Apps Script(GAS)

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

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

  4. Adobe Analytics

    Adobe AEP SDK: リバースプロキシを使ったアプリ計測検証方法

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

  5. Databricks

    databricksのnotebookを使ってみよう その1

    こんにちは。エクスチュアの松村です。…

  6. Adobe Analytics

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

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

カテゴリ
最近の記事
  1. Adobe Target Recommendations:g…
  2. Conversational Analytics APIでお…
  3. Looker Studioで日付フィルターの開始日・終了日の…
  4. Streamlitでdbt-elementary風ダッシュボ…
  5. Adobe WebSDK FPIDでECIDの復元を検証
  1. Adobe Analytics

    Adobe Analytics:自動で分析してくれる貢献度分析(異常値検出)機能…
  2. ObservePoint

    ObservePoint: Cookieを書いたヤツを見つける
  3. Adobe Analytics

    Adobe Analytics 原理①
  4. Adobe Analytics

    Adobe AnalyticsとGoogle Analyticsの違い② サンプ…
  5. ブログ

    ⑥DMPについてー日本に進出していないDMP
PAGE TOP