CSV (.csv)
- ImportとExportはCSV形式を完全にサポートし,種々のデータ変換およびフォーマットオプションを提供する.
- ImportはCやFortranの表記法を含む一般的な数の形式を自動的に認識する.
- 小数点のない数は整数としてインポートされる.
予備知識

-
- MIME type: text/comma-separated-values, text/csv
- CSV表データ書式.
- 数値およびテキスト情報を,コンマでフィールドが区切られた行として保管する.
- 一般にスプレッドシートアプリケーションにおいてデータ交換形式として使われる.
- CSVはComma-Separated Valuesの頭字語である.
- テキスト形式.
- TSVに似ている.
- RFC 4180をサポートしている.
ImportとExport

- Import["file.csv"] はファイルに保管された行と列を表す,文字列や数値の二次元配列を返す.
- Import["file.csv",elem]は指定の要素をインポートする.
- Import["file.csv",{elem,subelem1,…}] は子要素 subelemiをインポートし,部分的なデータインポートに役立つ.
- インポート形式は,Import["file","CSV"] または Import["file",{"CSV",elem,…}]で指定できる.
- Export["file.csv",expr] はexprからCSVファイルを作成する.
- サポートされている式 expr:
-
{v1,v2,…} 1列のデータ {{v11,v12,…},{v21,v22,…},…} データの行のリスト array SparseArray,QuantityArray等の配列 tseries TimeSeries,EventSeries,TemporalDataオブジェクト Dataset[…] データ集合 Tabular[…] 表形式オブジェクト - 一般的な情報は,以下の関数ページを参照のこと.
-
Import, Export ファイルからインポートする,あるいはファイルへエキスポートする CloudImport, CloudExport クラウドオブジェクトからインポートする,あるいはクラウドオブジェクトへエキスポートする ImportString, ExportString 文字列からインポートする,あるいは文字列へエキスポートする ImportByteArray, ExportByteArray バイト配列からインポートする,あるいはバイト配列へエキスポートする
Import要素


- 一般的なImport要素:
-
"Elements" ファイル中の有効な要素とオプションのリスト "Summary" ファイルの概要 "Rules" すべての可能な要素の規則のリスト - データ表現要素:
-
"Data" 二次元配列 "Grid" Gridオブジェクトで表された表データ "RawData" 文字列の二次元配列 "Dataset" Datasetで表された表データ "Tabular" Tabularオブジェクトで表された表データ - データ記述要素:
-
"ColumnLabels" 列の名前 "ColumnTypes" 列の名前と型の連想 "Schema" TabularSchemaオブジェクト - ImportとExportはデフォルトで"Data"要素を使用する.
- 任意の要素 elem のデータの部分的なインポートにおいて,部分要素は{elem,rows,cols}という形式で行と列の指定をすることができる.rowsとcolsは以下のいずれでもよい:
-
n n 番目の行または列 -n 最後から数える n;;m n から m まで n;;m;;s n から m までステップ s で {n1,n2,…} 特定の行または列 ni - メタデータ要素:
-
"ColumnCount" 列数 "Dimensions" 行数と最大列数のリスト "RowCount" 行数
オプション




- ImportとExportのオプション:
-
"EmptyField" "" 空のフィールドの表現方法 "QuotingCharacter" "\"" 数値でないフィールドの区切りに使われる文字 - コンマと行区切りを含むデータフィールドは通常ダブルクォートでラップされる.デフォルトではExportは区切り文字としてダブルクォートを使用する."QuotingCharacter"を使うと別の文字が指定できる.
- テキストフィールドを区切るダブルクォート文字はデフォルトではインポートされない.
- Importオプション:
-
CharacterEncoding "UTF8ISOLatin1" ファイルで使用される生の文字コード "ColumnTypeDetectionDepth" Automatic 見出し検出に使用される行数 "CurrencyTokens" None 数値をインポートするときに省略される通貨単位 "DateStringFormat" None DateStringとして指定された日付形式 "FieldSeparator" "," 列を分けるために取る文字列トークン "FillRows" Automatic 行を列の最大長まで埋めるかどうか "HeaderLines" Automatic 見出しであると仮定する行の数 "IgnoreEmptyLines" False 空白行を省くかどうか MissingValuePattern Automatic 欠損している要素を指定するために使用するパターン "NumberPoint" "." 小数点に使用する文字 "Numeric" Automatic データフィールドを数値としてインポートするかどうか(可能な場合) "Schema" Automatic Tabular オブジェクトを構築するために使用するスキーマ "SkipInvalidLines" False 無効な行を省くかどうか "SkipLines" Automatic ファイルの最初の省く行数 - デフォルトでは,Importはデータが"UTF8"でエンコードされたテキストであるとして解釈を試みる.ファイルに保存されたバイト列で"UTF8"で表せないものがある場合は,Importは代りに"ISOLatin1"を使用する.
- CharacterEncoding -> Automaticとすると,Importはファイルの文字コードの推測を試みる.
- "HeaderLines"と"SkipLines"は以下の設定が可能である:
-
Automatic 省略または見出しとして使用する行数を自動的に決めようとする n 省略またはDataset見出しとして使用する n 行 {rows,cols} 省略または見出しとして使用する行と列 - Importは"DateStringFormat"の指定に従ってフォーマットされた表の項目をDateObjectに変換する.
- Exportオプション:
-
Alignment None 表の列にデータがどのように並んでいるか CharacterEncoding "UTF8" ファイルで使用される生の文字コード "FillRows" False 行を列の最大長まで埋めるかどうか "IncludeQuotingCharacter" Automatic エキスポートした値の周囲に引用符を追加するかどうか "TableHeadings" Automatic 表の行と列の見出し - Alignmentが取り得る設定はNone,Left,Center,Rightである.
- "IncludeQuotingCharacter" には以下の値を設定できる:
-
None 値を引用符で囲まない Automatic 必要な場合にのみ値を引用符で囲む All 有効な値はすべて引用符で囲む - "TableHeadings" は以下の値を取ることができる:
-
None 列ラベルを省略する Automatic 列ラベルをエキスポートする {"col1","col2",…} 列ラベルのリスト {rhead,chead} 行と列に別々のラベルを指定する - Exportは,Wolframシステムが実行されているコンピュータシステムに従って行区切り文字をエンコードする.
例題
すべて開くすべて閉じるスコープ (8)
Import (4)
自動で見出しを検出するTabularオブジェクトとしてCSVファイルをインポートする:
Export (4)
Tabularオブジェクトをエキスポートする:
"TableHeadings"オプションを使って, Tabularオブジェクトから見出しを削除する:
TimeSeriesをエキスポートする:
EventSeriesをエキスポートする:
QuantityArrayをエキスポートする:
Import要素 (27)
"Data" (6)
"Dataset" (2)
"Grid" (1)
CSVデータをGridとしてインポートする:
"RawData" (3)
"Schema" (1)
TabularSchemaオブジェクトを取得する:
"Tabular" (7)
TabularオブジェクトとしてCSVファイルをインポートする:
Importオプション (15)
CharacterEncoding (1)
文字エンコードは$CharacterEncodingsの任意の値に設定できる:
"DateStringFormat" (1)
指定された日付形式で日付をDateObject指定に変換する:
"HeaderLines" (1)
MissingValuePattern (1)
デフォルトでは,自動設定された値は欠落していると見なされる:
欠損要素の検出を無効にするにはMissingValuePatternNone を使う:
"Numeric" (1)
数を解釈するために"Numeric"->Trueを使用する:
"NumberPoint" (1)
"Schema" (1)
Import では,CSVファイルに保存されているデータから列のラベルと型が自動的に推測される:
"SkipLines" (1)
Exportオプション (7)
CharacterEncoding (1)
文字エンコードは$CharacterEncodingsの任意の値に設定できる:
"IncludeQuotingCharacter" (1)
"QuotingCharacter" (1)
"TableHeadings" (1)
"TableHeadings"Noneを使うと,行の見出しを省略できる:
考えられる問題 (13)
ファイル内のすべての行が列数と同じ出ない場合,いくつかの行は無効であると考えられる:
"nnnEnnn" の形式の項目は科学表記の数として解釈される:
"Numeric"オプションを使って解釈をオーバーライドする:
バージョン14.2以降では,通貨トークンは自動的に省略されない:
"CurrencyTokens"オプションを使って,通貨トークンを省略する:
バージョン14.2以降では,整数値の列がDeveloper`$MaxMachineIntegerより大きい数の場合は,引用符が追加される:
"IncludeQuotingCharacter"->Noneを使って以前のバージョンと同じ結果を得ることができる:
バージョン14.2以降ではいくつかの文字列は自動的に欠落しているものと見なされる:
MissingValuePatternNone を使うと,この動作を無視できる:
バージョン14.2以降では,小数部が0の実数は整数としてエクスポートされる:
"Backend"->"Table"を使って,以前のバージョンと同じ結果を得ることができる:
列内の型が異なる種類であることが予想される場合は,"Backend""Table"を使う:
バージョン14.2以降では,Developer`$MaxMachineIntegerより大きい整数は実数としてインポートされる:
"Backend"->"Table"を使って,以前のバージョンと同じ結果を得ることができる:
バージョン14.2以降では,Tabularオブジェクトの日付と時刻の列はDateStringを使ってエキスポートされる:
"Backend"->"Table"を使って, 以前のバージョンと同じ結果を得ることができる:
Wolfram言語の古いバージョンから生成されたCSVデータの一部は正しく区切られていない可能性があり,バージョン11.2以降では期待通りにインポートされない:
"QuotingCharacter"""を使うと,期待通りの結果が得られる:
データの左上の角は,行と列の見出しを含むDatasetをインポートする際に失われる:
データの次元によってDatasetが異なる形となることもある: