データサイエンス全般

ワイドデータとロングデータ

ワイドデータとロングデータ

ワイドデータ(wide data)とロングデータ(long data)[1]ワイド型(式)とロング型(式)という場合もあります。またロングを、「狭い」という意味でナロー(narrow)と表現する場合もあります。は、データのまとめ方についての用語です。

ワイドデータは横幅(列方向)が大きくなるようにまとめられたデータ、ロングデータは縦の高さ(行方向)が大きくなるようにまとめられたデータです。

ワイドかロングかは相対的なものです。従って、ワイドからロングに変換する、あるいはロングからワイドに変換するといったように、変換を伴う場合によく用いられます。

例として、次のirisデータセットをロングデータと考えます[2]irisデータセットをワイドデータと考え、600行3列のロングデータに変換することも可能です。。省略していますが、全体で150行5列のデータです。

Sepal.Length Sepal.Width Petal.Length Petal.Width Species
5.1 3.5 1.4 0.2 setosa
4.9 3 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa
4.6 3.1 1.5 0.2 setosa
5 3.6 1.4 0.2 setosa
5.4 3.9 1.7 0.4 setosa
7 3.2 4.7 1.4 versicolor
6.4 3.2 4.5 1.5 versicolor
6.9 3.1 4.9 1.5 versicolor
5.5 2.3 4 1.3 versicolor
6.5 2.8 4.6 1.5 versicolor
5.7 2.8 4.5 1.3 versicolor
6.3 3.3 6 2.5 virginica
5.8 2.7 5.1 1.9 virginica
7.1 3 5.9 2.1 virginica
6.3 2.9 5.6 1.8 virginica
6.5 3 5.8 2.2 virginica
7.6 3 6.6 2.1 virginica

これをワイドデータに変換すると、次のようになります。省略していますが、全体で50行12列のデータです。

setosa Sepal.Length setosa Sepal.Width setosa Petal.Length setosa Petal.Width versicolor Sepal.Length versicolor Sepal.Width versicolor Petal.Length versicolor Petal.Width virginica Sepal.Length virginica Sepal.Width virginica Petal.Length virginica Petal.Width
5.1 3.5 1.4 0.2 7 3.2 4.7 1.4 6.3 3.3 6 2.5
4.9 3 1.4 0.2 6.4 3.2 4.5 1.5 5.8 2.7 5.1 1.9
4.7 3.2 1.3 0.2 6.9 3.1 4.9 1.5 7.1 3 5.9 2.1
4.6 3.1 1.5 0.2 5.5 2.3 4 1.3 6.3 2.9 5.6 1.8
5 3.6 1.4 0.2 6.5 2.8 4.6 1.5 6.5 3 5.8 2.2
5.4 3.9 1.7 0.4 5.7 2.8 4.5 1.3 7.6 3 6.6 2.1

これをロングデータに変換すると、当然ですが元に戻ります。

ワイドデータからロングデータに変換することを、列を「積み重ねる」という意味で、スタッキング(stacking)、スタック(stack)するといいます。対して、ロングデータからワイドデータに変換することを、アンスタッキング(unstacking)、アンスタック(unstack)するといいます。

実務においてはスタッキング、つまりワイドデータからロングデータに変換する機会の方が多いかもしれません。

表計算ソフトと構造化データの違い

上記のワイドデータですが、Excelのような表計算ソフトだと、次のように列名を2行に分け、かつセル結合を用いた形でまとるという方も、すくなからずいらっしゃるのではないでしょうか。

setosa versicolor virginica
Sepal.Length Sepal.Width Petal.Length Petal.Width Sepal.Length Sepal.Width Petal.Length Petal.Width Sepal.Length Sepal.Width Petal.Length Petal.Width
5.1 3.5 1.4 0.2 7 3.2 4.7 1.4 6.3 3.3 6 2.5
4.9 3 1.4 0.2 6.4 3.2 4.5 1.5 5.8 2.7 5.1 1.9
4.7 3.2 1.3 0.2 6.9 3.1 4.9 1.5 7.1 3 5.9 2.1
4.6 3.1 1.5 0.2 5.5 2.3 4 1.3 6.3 2.9 5.6 1.8
5 3.6 1.4 0.2 6.5 2.8 4.6 1.5 6.5 3 5.8 2.2
5.4 3.9 1.7 0.4 5.7 2.8 4.5 1.3 7.6 3 6.6 2.1

さらに次のように、3行に分けて列名を記述するという方も、いらっしゃるかもしれません。

setosa versicolor virginica
Sepal Petal Sepal Petal Sepal Petal
Length Width Length Width Length Width Length Width Length Width Length Width
5.1 3.5 1.4 0.2 7 3.2 4.7 1.4 6.3 3.3 6 2.5
4.9 3 1.4 0.2 6.4 3.2 4.5 1.5 5.8 2.7 5.1 1.9
4.7 3.2 1.3 0.2 6.9 3.1 4.9 1.5 7.1 3 5.9 2.1
4.6 3.1 1.5 0.2 5.5 2.3 4 1.3 6.3 2.9 5.6 1.8
5 3.6 1.4 0.2 6.5 2.8 4.6 1.5 6.5 3 5.8 2.2
5.4 3.9 1.7 0.4 5.7 2.8 4.5 1.3 7.6 3 6.6 2.1

表計算ソフトの中で完結する限り、特段問題があるわけではありません。しかしこれを構造化データとして扱い、統計解析の専用ツール上で分析を行うには、いくつか考えないといけない点が出てきます。

まず構造化データでは、列名と値は明確に区別されています。列名は必ずつけないといけないわけではありませんが、つける場合は必ず1行[3] … Continue readingで表します。またセル結合という概念も、構造化データにはありません。

構造化データのルールに合わせて、事前に列名を加工しておくか、列名を無視して値のみを読み込み、必要に応じてデータベースまたは統計解析ツール上で、新たに列名を付与する必要があります。

また統計解析ツール上で取り扱いがしやすいのは、結局一番最初のirisデータセットそのままの形です。分析の目的によって必ずそうしないといけないわけではないのですが、ほとんどの場合スタッキングしてから分析を始めることになるのではないでしょうか。

データの種類(良いデータの条件)
データの種類 様々な観点から、データを種類分けすることができます。 ここでは、構造化データと非構造化データ、時系列データと非時系列データ、実験データと観察データ、ビッグデータとスモールデータについて投稿した記事をまとめています。...

脚注

脚注
1 ワイド型(式)とロング型(式)という場合もあります。またロングを、「狭い」という意味でナロー(narrow)と表現する場合もあります。
2 irisデータセットをワイドデータと考え、600行3列のロングデータに変換することも可能です。
3 表計算ソフトとの対比で便宜上このように表現しますが、「150行5列のデータ」や「50行12列のデータ」といったときには、当然列名は数に入っていません。
タイトルとURLをコピーしました