データファイル(csv, json, xml)

データをファイルに焼く場合様々な形式がある。このページではcsv, xml, jsonについて説明する。




csvについて


昔からあるデータ形式。Excelなんかでも表形式で表示できる。 表の区切りをカンマと改行で表したような形式になっている。

例:

列1, 列2, 列3
21,2.5,5.4
(後略)

Excel等で扱えるので、測定等でデータを集めてExcelで解析するならcsvが良い。 またテキストデータとしてかなり容量が軽い。

デメリットとしては最初の行等に、値の意味(単位等も)を入れていないと数値の意味がわからない。 特に時間が経ってからの解析では不便。
またプログラミング等で解析をする場合列の番号を入れてデータを参照する必要があり、 プログラミングのコード上でどういった意味の値をどう処理しているのかが追いにくい。

xmlについて


htmlのような<>で囲まれたタブを用いて、データに意味をもたせることができるデータ形式。

例:

<?xml version="1.0" encoding="UTF-8" ?>
<親要素>
  <子要素>
    <値1>21</値1>
    <値2>2.5</値2>
    <値3>5.4</値3>
  </子要素>
</親要素>

このデータ形式の良いところは、データの一つ一つにタグ付がされていて後で見たときでも、構造がわかりやすい。 また、プログラミング上からでもタグの文字で操作できるので操作の意味がわかりやすいメリットが有る。

デメリットとしては、全てのデータにタグ付をするのでデータサイズがcsvに比べて大きくなってしまう。 プログラミングで数字を取り込んでも文字として取り込まれてしまう。C++, python等では専用のライブラリが必要な点がある。

jsonについて


javascriptで用いられている記法を取り入れたデータ形式。 {},と:で構造化されていてxmlと同様、構造がわかりやすい。

例:

{
  {
    "値1":21,
    "値2":2.5,
    "値3":5.4
  }
}

このデータ形式の良いところは、xmlと同様意味をもたせられる。 Pythonで取り込めば数字をそのまま取り込めるし、 jsonの構造をそのまま辞書という変数に取り込めるため使い勝手が良い。 またxmlより比較的ファイルサイズを小さくできる印象。

デメリットとしてはCSVよりはよりはファイルサイズが大きくなってしまう点、 C++等では専用のライブラリが必要な点がある。

yamlについて


csvより情報が見やすく、jsonより軽量らしい。 またjsonと違って、コメントが書けるという違いもある。

デメリットとしては、Pythonに標準でyamlを読めない(pipで追加すれば読める)、 リスト(シーケンス)がjsonよりわかりにくい(個人の感想)。

例:

"値1":21
値2:2.5
値3:5.4