kaeken(嘉永島健司)のTech探究ブログ

主に情報科学/情報技術全般に関する知見をポストします。(最近は、特にData Science、機械学習、深層学習、統計学、Python、数学、ビッグデータ)

Python/pandas公式チートシート解説:前処理のゴールとなるTidy Dataとは

f:id:kaeken:20180202085619p:plain

pandas githubのドキュメントに公式のチートシートがアップされています。 github.com

このpandasチートシートには、重要な概念やコマンド実行方法が整理されていますので、項目をひとつずつ解説していきます。

なお、このチートシートは、もともとR言語チートシートにインスパイアされたものらしいです。

今回は、pandasですが、今後、R言語でも同様に解説していく予定です。

それでは、まずはじめに、Tidy Dataについて整理します。

Tidy Dataとは

Wikipediaでは以下のように解説されています。

Tidy data - Wikipedia

Tidy data is the data obtained as a result of a process called data tidying. It is one of the important cleaning processes during big data processing and is a recognized step in the practice of data science. The tidy data sets have structure and working with them are easy, they’re easy to manipulate, model and visualize. Tidy data sets main concept is to arrange data in a way that each variable is a column and each observation (or case) is a row.


日本語訳では「整然データ」と呼ばれ、以下の4つの特徴を持ちます。

整然データとは何か|Colorless Green Ideas

整然データとは、1) 個々の変数が1つの列をなす、2) 個々の観測が1つの行をなす、3) 個々の観測の構成単位の類型が1つの表をなす、4) 個々の値が1つのセルをなす、という4つの条件を満たした表型のデータのことであり、構造と意味が合致するという特徴を持つ。R言語などを用いたデータ分析の際には非常に有用な概念である。


Tidy Dataの概念は、リレーショナルデータベースの正規化と類似しているので、すんなり理解できました。

一方、以下のように、上記の特徴に反するデータは、整然データTidy Dataではなく、雑然データ(messy data)と呼ばれます。

  • 個々の変数 (variable) が1つの列 (column) をなす
    →1つの変数(種類)が複数の列に分かれていたり、複数の変数(種類)が1つの列に入っていれば、整然データTidy Dataではない。

  • 個々の観測 (observation) が1つの行 (row) をなす
    →1つのデータが複数の行/レコードに分かれたり、複数のデータが1つの行/レコードに入っていれば、整然データTidy Dataではない。

  • 個々の観測の構成単位の類型 (type of observational unit) が1つの表 (table) をなす
    →ひとつの種類のデータセットが複数のテーブルに分かれていたり、複数の種類のデータセットがひとつのテーブルに入っていれば、整然データTidy Dataではない。

  • 個々の値 (value) が1つのセル (cell) をなす
    →ひとつの値が複数のセルに分かれていたり、複数の値が一つのセルに入っていれば、整然データTidy Dataではない。

人間にとってわかりやすい表だとしても、データ分析する場合は、上記のようなTidy Dataに変換する必要があります。

現場では、人間が見て分かりやすい表にされたデータを使って機械学習させることが多いので、整然データTidy Dataへの変換は、必須と言えます。

次回から、Tidy Dataにするための道具であるpandasのチートシート解説をしていきます。

目次

  • Tidy Data (いまここ)
  • Syntax
  • Reshaping Data
  • Subset Observations(Rows)
  • Subset Variables(Columns)
  • Summarize Data
  • Group Data
  • Handling Missing Data
  • Make New Columns
  • Combine Data Sets
  • Windows
  • Plotting