型を手動で設定するシステムにCSVを取り込む例
取引先から受け取った設備センサーのCSVを、社内のトレンドグラフ表示システムに取り込む場面を考えます。このシステムはCSVの値から型を判定しないため、取り込み設定画面で列ごとに次の項目を入力する必要があります。
| 設定項目 | 入力する内容 | CSVで調べること |
|---|---|---|
| データ種別 | 日時・数値・文字列のどれか | 各列の値の種類と、型に合わない値の有無 |
| 日時の書式 | yyyy-MM-dd HH:mm:ssなど | 日時列の形式と、形式の混在 |
| 小数桁数 | 小数点以下を何桁まで扱うか | 数値列の小数部の最大桁数 |
| グラフの表示範囲 | 縦軸の最小値・最大値、横軸の期間 | 数値列の最小値・最大値、日時列の最初と最後 |
| 系列 | グラフの線を分ける列(設備IDなど) | その列に入っている値の種類 |
設定項目は説明用の架空のシステムの例です。実際の項目名や設定方法は、利用するシステムの仕様書を確認してください。
今回使用するCSVは、2台の設備について温度・気圧・湿度・稼働状態を30分ごとに3日間記録した、架空のデータ288件です。
measured_at,device_id,temperature,pressure,humidity,status,note
2026-09-01 00:00:00,001,21.1,101.9,67,1,
2026-09-01 00:00:00,002,17.7,100.9,65,1,
2026-09-01 00:30:00,001,20.5,102.0,67,1,
…
2026-09-02 06:00:00,001,20.5,ERROR,66,1,センサー通信エラー
…同じファイルで手順を試せるように、サンプルCSV(sensor_trend_sample.csv)を用意しています。値はすべて架空です。
CSVの型と範囲を目視で調べにくい理由
CSVはすべての値を文字として保存するため、ファイル自体には「この列は数値」「この列は日時」という情報がありません。型は、実際に入っている値から判断する必要があります。
ExcelでCSVを開いて先頭の数十行を見るだけでは、次のような問題を見落としやすくなります。
- 数百行目にだけある
ERRORなどの文字 - 途中から
2026/09/01のように変わる日付の区切り文字 001のような先頭0(Excelが数値として表示すると1に見えます)- 全体の最小値・最大値と、小数点以下の最大桁数
- 空欄の件数と、その列に入っている値の種類
型を誤って設定すると、取り込みエラーになるだけでなく、IDの先頭0が消える、グラフが途切れる、軸の範囲から値がはみ出すといった問題につながります。全行を目視する代わりに、CSV 列型判定で列ごとに集計します。
手順1:CSV 列型判定でファイルを選択する
CSV 列型判定を開き、[CSVファイルを選択]を押すか、ファイルを枠内へドロップします。1行目が列名の場合は[1行目をヘッダーとして扱う]をオンのままにします。

対応しているのはカンマ区切りのCSVで、文字コードはUTF-8とShift_JIS / Windows-31Jを自動で判定します。タブ区切りなどの場合は、先にCSV 区切り文字変換でカンマ区切りにします。
手順2:全列の判定結果を一覧で確認する
ファイルを選択すると、列数とデータ件数の下に、列ごとの推定型と注意点が一覧で表示されます。今回のCSVでは7列のうち4列が「確認が必要」と判定されました。

| 一覧の項目 | 意味 |
|---|---|
| 推定型 | 空欄以外の値から推定した型です。文字列、整数、小数、日付、日時、真偽値候補、混在、空列のいずれかになります。 |
| 判定確度 | 推定型に合う値の割合などから高・中・低で表示します。型に合わない値がある列や、値が3件以下の列は低めになります。 |
| 空欄 | 何も入っていないセルの件数です。NULLなどの文字は空欄に含めません。 |
| 異常値 | 推定型に合わない値の件数です。 |
| 補足 | 先頭ゼロ、0/1フラグ候補、複数の日付形式など、型を決める前に確認したい点です。 |
今回の一覧からは、次のことが分かります。
- measured_at:日時。ただし日付の形式が2種類混ざっている
- device_id:数字だけだが、先頭0があるため文字列と判定
- pressure:小数。ただし型に合わない値が2件、空欄が1件ある
- status:整数。0と1だけなので、フラグの可能性がある
- note:文字列。288件中285件が空欄
手順3:「確認が必要」の列だけに絞り込む
列が多いCSVでは、[表示]で[確認が必要]を選ぶと、型の混在、型に合わない値、先頭ゼロなどの補足がある列だけを表示できます。数値列だけ、日付・日時列だけに絞り込むこともできます。

絞り込みは表示を切り替えるだけで、判定結果は変わりません。列定義を作るときは、最後に[すべて]へ戻して全列を確認します。
手順4:[詳細を見る]で範囲・桁数・形式を確認する
各列の[詳細を見る]を押すと、件数の内訳と値の範囲が表示されます。グラフの設定に必要な値は、ここで確認します。
日時列:期間と形式

measured_atは2026-09-01 00:00:00から2026-09-03 23:30:00までのデータです。形式はyyyy-MM-dd HH:mm:ssが286件、yyyy/MM/dd HH:mm:ssが2件でした。システムに設定できる書式が1つだけなら、取り込む前に形式をそろえる必要があります。
数値列:最小値・最大値と桁数

temperatureは16.4から29.2までの小数で、整数部は最大2桁、小数部は最大1桁です。この結果から、データ種別は数値、小数桁数は1桁と設定できます。整数列のhumidityは39から72、最大2桁でした。
最小値・最大値と桁数は、推定型に合う値だけから計算します。混在と判定された列では表示されないため、先に混在の原因を確認してください。
手順5:型に合わない値の行を特定する
異常値がある列の詳細では、「型の内訳」と「確認したい値」に、どの値が推定型に合わなかったかが表示されます。

ERRORが入っていました。表示される行番号は、ヘッダーを除いたデータ行の番号です。1行目をヘッダーとして扱っている場合、データ行121はCSVファイルの122行目にあたります。該当行のnote列には「センサー通信エラー」と記録されていました。
確認したい値は列ごとに最大10件まで表示されます。件数が多い場合は、列定義表で決めた型をCSV 列制約チェックに設定すると、違反した行を一覧で確認できます。
手順6:IDやフラグの列は値の一覧を確認する
空欄以外の値が20種類以下の列では、詳細に「値の一覧」と件数が表示されます。系列に使う列やフラグの列は、ここで入っている値を確認します。

statusは0と1だけの整数で、補足には「0/1フラグ候補」と表示されています。ただし、0と1が「停止・稼働」を表すのか、単なる数量なのかはCSVだけでは分かりません。データの提供元に意味を確認します。
device_idの値の一覧は001(144件)と002(144件)でした。2台の設備で件数がそろっているため、系列として使えそうなことも分かります。
手順7:判定結果をCSVでダウンロードする
一覧の下にある[判定結果をCSVでダウンロード]を押すと、全列の判定結果を1列1行のCSVで保存できます。UTF-8 BOM付きで保存されるため、Excelで開いても日本語の列名が文字化けしにくくなっています。

今回のCSVをダウンロードすると、主な項目は次のようになりました(実際のファイルには、データ件数、有効値、ユニーク値数、最小文字数なども含まれます)。
| 列名 | 推定型 | 空欄 | 型に合わない値 | 最小値 | 最大値 | 整数部の最大桁数 | 小数部の最大桁数 | 補足 |
|---|---|---|---|---|---|---|---|---|
| measured_at | 日時 | 0 | 0 | 2026-09-01 00:00:00 | 2026-09-03 23:30:00 | 複数の日付形式あり | ||
| device_id | 文字列 | 0 | 0 | 先頭ゼロあり(文字列推奨) | ||||
| temperature | 小数 | 0 | 0 | 16.4 | 29.2 | 2 | 1 | |
| pressure | 小数 | 1 | 2 | 100.8 | 102.2 | 3 | 1 | 型に合わない値あり |
| humidity | 整数 | 3 | 0 | 39 | 72 | 2 | ||
| status | 整数 | 0 | 0 | 0 | 1 | 1 | 0/1フラグ候補 | |
| note | 文字列 | 285 | 0 |
判定結果のCSVには、元のCSVの値は最小値・最大値にしか含まれません。値の一覧はチェックを入れた場合だけ追加されます。取引先のデータを社内で共有する場合は、含めてよい情報か確認してから保存してください。
判定結果から列定義表を作る
ダウンロードしたCSVをExcelで開き、「設定する型」「表示範囲」「対応」の列を追加すると、システムに入力する内容をまとめた列定義表になります。推定型をそのまま写すのではなく、列の用途と取り込み先の仕様に合わせて決めます。
| 列名 | 設定する型 | 範囲・形式 | 判断と対応 |
|---|---|---|---|
| measured_at | 日時(横軸) | yyyy-MM-dd HH:mm:ss2026-09-01 00:00:00~2026-09-03 23:30:00 | yyyy/MM/dd形式の2件を統一してから取り込む |
| device_id | 文字列(系列) | 3文字、001・002 | 数値にすると先頭0が消えて1・2になるため文字列にする |
| temperature | 数値・小数1桁 | 実データ16.4~29.2 | 表示範囲は単位(℃)と今後の値を考えて決める |
| pressure | 数値・小数1桁 | 実データ100.8~102.2 | ERROR2件と空欄1件の扱いを決めてから取り込む |
| humidity | 数値・整数 | 実データ39~72 | 空欄3件。単位が%なら0~100で表示する方法もある |
| status | 数値(0/1) | 0・1 | 0と1の意味を提供元に確認し、グラフに表示するか決める |
| note | 文字列 | 最大9文字 | グラフに使わないなら取り込み対象から外す |
判断に迷うのは、数字だけで構成される列です。計算やグラフの値として使う列は数値、IDやコードのように識別に使う列は文字列にします。先頭0がある値、桁数が決まっているコード、郵便番号なども文字列にしておくと値が変わりません。
グラフの表示範囲は最小値・最大値だけで決めない
判定結果の最小値・最大値は、そのCSVに入っているデータの範囲です。グラフの縦軸にそのまま設定すると、線が上端と下端に張り付いて変化が見にくくなるほか、次回以降のデータが範囲を超える可能性があります。
- 余白を取る:temperatureの実データが16.4~29.2なら、10~35のように前後に余裕を持たせる
- 単位で決まる範囲を使う:湿度(%)なら0~100のように、取り得る範囲で固定する
- 仕様上の上限・下限を確認する:センサーの測定範囲や、業務上の基準値があればそれに合わせる
- 期間は今後の取り込みも考える:横軸を固定する場合は、毎回のデータ期間が変わることを考慮する
範囲外の値をどう扱うか(表示しない、端に寄せて表示する、取り込みエラーにするなど)はシステムによって異なります。設定前に仕様を確認してください。
判定結果をそのまま使えないケース
CSV 列型判定は、入っている値の形から型を推定します。次のような場合は、結果を見たうえで人が判断する必要があります。
| ケース | 判定の動作 | 確認すること |
|---|---|---|
1,200、12.5%、全角数字 | 数値ではなく文字列として数えます | 取り込み先が受け付ける数値の書き方 |
NULL、N/A、- | 空欄ではなく値(文字列)として数えます | 欠損値の表記と、取り込み先での扱い |
20260905のような8桁 | 日付候補になりますが、判定確度は低になります | 日付なのか、コードや数量なのか |
09/04/2026のような月日順 | 月と日の順序が曖昧なため日付と判定しません | 出力元の日付形式 |
| 値が3件以下の列 | 判定確度は低になります | 今回のファイルだけでは型を判断できないことがある |
| 型が混在している列 | 最小値・最大値と桁数を表示しません | 型に合わない値の原因 |
| 値が21種類以上の列 | 値の一覧は表示せず、値の例だけを表示します | 許容値が決まっている列は列制約チェックで確認 |
| 小数の最小値・最大値 | 100.50は100.5のように末尾の0を省いて表示します(桁数は入力どおりに数えます) | 表示桁数は桁数の結果で判断する |
| 時刻の間隔や抜け | 30分ごとにそろっているか、欠けている時刻があるかは判定しません | トレンドグラフで線が途切れないか |
また、判定はそのCSVに入っている値だけを対象にします。今回は小数1桁でも、別の日のデータで2桁の値が来る可能性はあります。継続して取り込むデータは、提供元の仕様も合わせて確認してください。
問題が見つかった列の直し方
判定で見つかった問題は、元のCSVを残したまま、別のファイルとして修正します。
| 問題 | 使うツール | 今回の対応例 |
|---|---|---|
| 日付・日時の形式が混在している | CSV 日付形式チェック・統一 | measured_atをyyyy-MM-dd HH:mm:ssにそろえる |
数値列にERRORなどの文字がある | CSV 欠損値・NULL表記統一 | pressureのERRORを欠損値として空欄にする |
| グラフに使わない列がある | CSV 列抽出 | noteを除いたCSVを作る |
| 決めた型・範囲・桁数を満たすか確認したい | CSV 列制約チェック | 期待するデータ型、整数部・小数部の最大桁数、数値範囲を設定して検証する |
ERRORを0に置き換えるのは避けてください。トレンドグラフでは、気圧が0まで下がったように表示されてしまいます。欠損として空欄にするか、その行を除外するかは、取り込み先が空欄をどう扱うかを確認してから決めます。
修正後のCSVを、もう一度CSV 列型判定で確認します。今回の例では、measured_atの補足から「複数の日付形式あり」が消え、pressureの型に合わない値が0件になれば、列定義表のとおりに設定できる状態です。
まとめ
型を自動判定しないシステムにCSVを取り込むときは、全行を目視するのではなく、CSV 列型判定で列ごとの推定型、空欄、型に合わない値、最小値・最大値、桁数、値の一覧を確認します。判定結果をCSVでダウンロードすれば、列定義表のたたき台として使えます。
ただし、判定結果はそのファイルの値から推定したものです。IDやコードは文字列にする、フラグの意味は提供元に確認する、グラフの表示範囲は余白と今後のデータを考えて決める、といった判断は人が行います。問題のある値を修正したら、もう一度判定して結果が変わったことを確認してから取り込んでください。