質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.62%

CSVファイルとは?

解決済

回答 5

投稿

  • 評価
  • クリップ 0
  • VIEW 1,432

SAMUSAMUN

score 31

前提・実現したいこと

機械学習に興味があり,学びはじめたのですが,よくCSV形式?ファイル?というものを目にします.
CSVファイルとは何のためのものですか?
どういうところに使うもので,メリットやデメリットはあるのでしょうか??
どうかよろしくお願い致します.

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • honami

    2017/05/17 23:53

    harashow1701さんも、ぜひ上記をご一読ください。私は何も意地悪で言っているわけではありません。「自分で解決できること」は質問者にとってメリットとなります。そして、そのように促すことも回答者としての役割であると考えています。

    キャンセル

  • 退会済みユーザー

    2017/05/18 13:09

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • SAMUSAMUN

    2017/05/18 15:22

    確かにご指摘通り調べる努力が足りていないと感じました.お勧めしてくださった記事を参考にさせていただきます.ありがとうございます.

    キャンセル

回答 5

checkベストアンサー

+6

Excelのように複数の行と列になった二次元のデータ、つまり表になるデータを扱いたいときに最も単純な形式がCSVファイルです。

表になっているデータを扱いたいとき、どのようなフォーマットで作れば良いでしょうか?単にデータを並べただけではどこが行でどこが列なのかはわかりません。そこで

  • 行の中の値の区切りに,(カンマcomma)を用いる。
  • 行と行の区切りに改行を用いる。

という極めて単純な規則で構成するのがCSVです。CSVはComma-Separated Valuesの略とされ、文字通り、値(valuse)をカンマ(comma)で分離(separated)したものとなります。実際の例を見てみましょう。

1st,綾波レイ,女,14,零号機
2nd,惣流・アスカ・ラングレー,女,14,弐号機
3rd,碇シンジ,男,14,初号機
4th,鈴原トウジ,男,14,参号機
5th,渚カヲル,男,15,第17使徒

なお、某所によるとこういうデータを痛コードパターンといいます。ついでに、私は全話見ていませんし、映画も見ていません。

データ構造が極めて単純であり、またわかりやすい作りになっています。ただのテキストデータですので、メモ帳で作成して編集することもできます。しかし、考えてみてください。もし、データにカンマや改行を含めたいときはどうするのでしょうか?実はそこに大きな問題があります。

CSVファイルはもともと何かしら規格があったわけではありません。そのため、CSVファイルの扱い方は実装によって異なるという状況でした。ほとんど実装において、

  • カンマや改行を含めたい場合は"で囲む。また、"自体を含めたい場合は、"で囲った上で""と二重化したものを"と見なす。
  • 改行にはCR(U+000D)LF(U+000A)を使用する。

となっていましたが、これは絶対的な物ではありません。後付けでRFC 4180という規格が作られましたが、多くの実装で採用している方法を取っているだけであり、全てがそうであるとは限らないのです。そして、最も大きな問題として、文字コードを指定する方法がないという問題があります。とくにWindowsのExcelでは、文字コードはロケール依存であり、BOM付きUTF-8で無い限り、日本語環境と英語環境では解釈され方が異なります。

他にもデータは単純な文字列としてしか意味がありません。しかし、これまたExcelは数値や日付だと勝手に見なしてしまう場合があるのです。また、1行目をデータのためのヘッダとして扱う場合もあり、混乱に拍車を掛けます。

ということでまとめたいと思います。

何のために、どういうときに使うというと、表のデータを最も単純にテキストとして表現したいときに使います。メモ帳でも表示・作成・編集できるためExcelのようなソフトを別途用意する必要がありません。

つまり、メリットについては、

  • テキストエディタで表示・作成・編集が可能

ということです。そして、私にはこれ以外のメリットは思い当たりません

デメリットは多数あります。

  • カンマや改行を含めたいときに表現する方法がソフトによって異なる。("囲むが全てのソフトで有効とは限らない。)
  • 改行がCRLFとは限らず、LFのみの実装もある。それを読み取れるかもソフトによって異なる。
  • 文字コードが規定されていないため、読み込み時に明示的に指定しないと文字化けを起こす可能性がある。
  • 文字列としてしか扱えない。0という数値と"0"という文字列の区別ができない。そのため、ソフトによっては勝手に数値や日付として扱ってしまう場合がある。
  • 1行あたりの列がバラバラの場合は、余計な列の分についての解釈がソフトによって異なる。
  • データ無しと空文字列の区別ができない。
  • 数値のみを扱いたい場合でも文字列となるため、データサイズが大きくなる。
  • 1行目がヘッダであったとしても、それがヘッダであると言うことを示すことができない。

Excelファイルで適当な日本語があるデータを作り、CSVファイルとして保存して、LibreOfficeのCalcで開いてみてください。単純にそのまま開くと文字化けして使い物になら無いと思います。それぐらいCSVファイルは扱いに注意が必要であり、データとして扱うのに良い形式とは言えません。

なお、CSVの親戚で区切りにタブを用いたTSVというのもあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+5

Google で「CSV ファイル」を検索してください。
1ページ目にウィキペディアが表示されます。
全く何も知らない時には、ウィキペディアは優先的に見てください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+3

CSVファイルとは表データを扱うテキストフォーマットの一種です。
MS Excelを起動し、適当なデータ入力後に [名前を付けて保存] で csv ファイルとして保存できますので、保存したcsvファイルをテキストエディタで開いてみると分かりやすいかと思います。

A1,B1,C1
A2,B2,C2

Re: SAMUSAMUN さん

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

典型的な例ですと、csvファイルを使って、mysqlにデータを大量投入する例があります。

カンマ区切りなので、扱いやすく、データベースからデータをファイルに書き出すときにもよく使われます。

csv mysqlとかで検索すればたくさん出てくると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

データファイルの一種です。
テキストファイルで作成し、各値をカンマで区切ります。
故にCSV(Comma Separated Value)という名前になります。
カンマではなくタブで区切る、TSVというのもあります。
個人的にはこちらのほうが扱いやすいので好みです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る