R_縦持ちデータは描画で利用_pivot_longer_20240908

Topic(Purpose / Outcome:目的・期待される成果)

Conductor
Conductor

縦軸にブランド(製造)で、横軸に車種を持ってくる。中身はカウント数なので、どのブランドがどの車種をどの程度保有しているかわかる。

Visualization(How / Output:事実整理 / 最終ゴール)

Visualizer
Visualizer

目的に応じてカラムとして集計する変数を追加していく。大小比較なら単純に降順で棒グラフ比較が分かり易いものの、どの組合せをどのブランドがカバーしているのかについては、カテゴリー変数×カテゴリー変数で整理して、①ブランドをみる、②横軸にそって攻められていない部分を視る、という比較が可能。例えば、車種別(商材の特徴別)でどの特徴が売上や利益として伸びているのか確認の上、ブランド別で車種カバレッジの割合を可視化。

Script Design / Summary(How:設計図・概要・論理構築)

Wrangler
Wrangler

全体像はこんな感じ

# LIBRARIES ----
library(tidyquant)
library(tidyverse)

# DATA ----
mpg

# PIVOTING DATA ----

# 1.0 Pivot Wider ----
# - Reshaping to wide format

mpg_pivot_table_1 <- mpg %>%
    group_by(manufacturer) %>%
    count(class, name = "n") %>%
    # class列の数をカウント。name = "n" でカウント結果をn列に格納。
    ungroup() %>%
    pivot_wider( # wider formatに変換。横持ちデータ。クロス集計表。
        names_from  = class, # class列の値を列に変換
        values_from = n, # n列の値を取得
        values_fill = 0 # NAを0で埋める
    )

# 2.0 Pivot Table ----

# - Making Summary "Pivot Tables"
mpg_pivot_table_2 <- mpg %>%
    pivot_table( # クロス集計表を作成
        .columns = class, # class列を列に変換
        .rows    = manufacturer, # manufacturer列を行に変換
        .values  = ~ n(), # n()でカウント # ~ はformulaの意味. formulaとは、関数の引数に渡す関数のこと。
        fill_na  = 0 # NAを0で埋める
    )

# - Using lists to capture complex objects
mpg %>%
    pivot_table(
        .rows    = class,
        .values  = ~ list(lm(hwy ~ displ + cyl - 1))
        # ~ list(lm(hwy ~ displ + cyl - 1)) でlm()関数を使って回帰分析を行い、その結果をリストで取得.
        # この場合、class列の値ごとに回帰分析を行い、その結果をリストで取得している。
        # このように、複雑なオブジェクトを取得する場合は、list()を使う。
        # hwy ~ displ + cyl - 1 は、hwyをdisplとcylで回帰分析することを指定している。
    )

# 3.0 Pivot Longer ----
# - Long format best for visualizations

mpg_long_summary_table <- mpg_pivot_table_1 %>%
    pivot_longer( # long formatに変換。縦持ちデータ。
        cols      = compact:subcompact, # compact列からsubcompact列までを変換(class列の中身)
        names_to  = "class", # class列に変換
        values_to = "value" # value列に変換.クロス集計表の中身であったvalueはvalue列を新たにさ作成、その値を入れる。
    )

mpg_long_summary_table %>%
    ggplot(aes(class, manufacturer, fill = value)) +
    # class列をx軸、manufacturer列をy軸、value列をfillで色分け
    geom_tile() +
    # タイルを描画
    geom_label(aes(label = value), fill = "white") +
    # fill = "white" でラベルの背景色を白に指定
    # aes(label = value) でラベルにvalue列の値を表示
    # geom_label() でラベルを描画
    scale_fill_viridis_c() +
    # scale_fill_viridis_c() で色をviridisに指定
    # viridisはカラーパレットの一つ
    theme_minimal() +
    # theme_minimal() でテーマをminimalに指定
    labs(title = "Class by Auto Manufacturer")
    # labs(title = "Class by Auto Manufacturer") でタイトルを指定

Raw data / Wrangling / Feature Engineering(抽出~整形)

Raw data(How:生データ抽出元)

Raw data(How:生データ抽出方法)

  • SQL読込: –
  • CSV読込: –
  • API読込 : 〇(mpg)
  • rmarkdown:render()読込:- (.rmdのファイルをtemlate保存しておく必要あり)

Raw data(How:生データの構造 / 種類)

Extractor
Extractor

元々のデータフレーム(mpg)

Wrangling (How: Loading・生データ読込)

Wrangler
Wrangler

Loading

# Script on Rstudio
# Tips: 読み込み先のファイルは「記載するpath名の始まり」からWorking Directoryとして設定する必要性がある。


mpg

Wrangling (How: before output、Output前のデータ構造)

Wrangler
Wrangler

視える化に合わせて編集

メモ

  • 行 (row) :レコード、Observation
  • 列 (column):特徴量、変数、次元数、次元の削減(Dimensionality Reduction): 高次元データを少ない次元に圧縮し、モデルの効率を上げるための手法。.xは列を指定している。
  • 値:data point、Feature
  • Wide format:クロス集計表(横持ちデータ)、Long format:縦持ちデータ
  • 情報ソースがWEBサイト(HTMLやCSS)の場合にはどこから抽出するか、が問われるので、HTMLやCSSの知識が必要(スクレイピングを実施するにせよ)。
  • レンダリング(rendering)とはコンピュータがデータを処理して画像や映像、テキストなどを表示させる技術。
  • .fn(単数)と.fns(複数)はfunctionの略で無名関数。~ (tilde:チルダ) も無名関数。

参考リンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA