MLプロジェクトのデータ読み込み

MLプロジェクトを開始したい場合、最初に必要な最も重要なことは何ですか?これは、MLプロジェクトを開始するためにロードする必要のあるデータです。データに関して、MLプロジェクトのデータの最も一般的な形式はCSV(コンマ区切り値)です。

基本的に、CSVは、スプレッドシートなどの表形式のデータ(数値とテキスト)をプレーンテキストで保存するために使用される単純なファイル形式です。Pythonでは、さまざまな方法でCSVデータを読み込むことができますが、CSVデータを読み込む前に、いくつかの考慮事項に注意する必要があります。

CSVデータの読み込み時の考慮事項

CSVデータ形式はMLデータの最も一般的な形式ですが、MLプロジェクトに同じものを読み込む際には、次の主要な考慮事項に注意する必要があります。

ファイルヘッダー

CSVデータファイルでは、ヘッダーに各フィールドの情報が含まれています。データフィールドの解釈方法を指定するのはヘッダーファイルであるため、ヘッダーファイルとデータファイルに同じ区切り文字を使用する必要があります。

以下は、考慮しなければならないCSVファイルヘッダーに関連する2つのケースです-

  • Case-I: When Data file is having a file header −データファイルにファイルヘッダーがある場合は、データの各列に名前が自動的に割り当てられます。

  • Case-II: When Data file is not having a file header −データファイルにファイルヘッダーがない場合は、データの各列に手動で名前を割り当てる必要があります。

どちらの場合も、CSVファイルにヘッダーが含まれているかどうかを明示的に指定する必要があります。

コメント

データファイル内のコメントには、その重要性があります。CSVデータファイルでは、コメントは行頭にハッシュ(#)で示されます。ファイルにコメントがある場合は、ロードするために選択した方法に応じて、それらのコメントを予期するかどうかを示す必要があるため、CSVデータをMLプロジェクトにロードするときにコメントを考慮する必要があります。

デリミタ

CSVデータファイルでは、コンマ(、)文字が標準の区切り文字です。区切り文字の役割は、フィールドの値を区切ることです。タブや空白などの別の区切り文字を使用することもできるため、CSVファイルをMLプロジェクトにアップロードする際に区切り文字の役割を考慮することが重要です。ただし、標準の区切り文字とは異なる区切り文字を使用する場合は、明示的に指定する必要があります。

引用

CSVデータファイルでは、二重引用符(“”)マークがデフォルトの引用符です。二重引用符以外の引用符を使用することもできるため、CSVファイルをMLプロジェクトにアップロードする際には、引用符の役割を考慮することが重要です。ただし、標準とは異なる引用符を使用する場合は、明示的に指定する必要があります。

CSVデータファイルをロードする方法

MLプロジェクトで作業する場合、最も重要なタスクはデータを適切にロードすることです。MLプロジェクトの最も一般的なデータ形式はCSVであり、さまざまなフレーバーとさまざまな解析の難しさがあります。このセクションでは、CSVデータファイルをロードするためのPythonの3つの一般的なアプローチについて説明します。

Python標準ライブラリでCSVをロードする

CSVデータファイルをロードするための最初で最も使用されているアプローチは、さまざまな組み込みモジュールを提供するPython標準ライブラリの使用です。 csv moduleおよびreader()関数。以下は、CSVデータファイルを使用してロードする例です-

Example

この例では、ローカルディレクトリにダウンロードできるアイリスフラワーデータセットを使用しています。データファイルをロードした後、次のように変換できますNumPy配列し、MLプロジェクトに使用します。以下は、CSVデータファイルをロードするためのPythonスクリプトです-

まず、Python標準ライブラリが提供するcsvモジュールを次のようにインポートする必要があります-

import csv

次に、ロードされたデータをNumPy配列に変換するためのNumpyモジュールをインポートする必要があります。

import numpy as np

ここで、CSVデータファイルを含む、ローカルディレクトリに保存されているファイルのフルパスを指定します-

path = r"c:\iris.csv"

次に、csv.reader()関数を使用してCSVファイルからデータを読み取ります-

with open(path,'r') as f:
   reader = csv.reader(f,delimiter = ',')
   headers = next(reader)
   data = list(reader)
   data = np.array(data).astype(float)

次のスクリプト行を使用して、ヘッダーの名前を出力できます-

print(headers)

次のスクリプト行は、データの形状、つまりファイル内の行と列の数を出力します-

print(data.shape)

次のスクリプト行は、データファイルの最初の3行を示します-

print(data[:3])

Output

['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
(150, 4)
[  [5.1  3.5  1.4  0.2]
   [4.9  3.   1.4  0.2]
   [4.7  3.2  1.3  0.2]
]

NumPyでCSVを読み込む

CSVデータファイルをロードする別のアプローチは、NumPyおよびnumpy.loadtxt()関数です。以下は、CSVデータファイルを使用してロードする例です-

この例では、糖尿病患者のデータを持つPima IndiansDatasetを使用しています。このデータセットは、ヘッダーのない数値データセットです。ローカルディレクトリにダウンロードすることもできます。データファイルを読み込んだ後、それをNumPy配列に変換して、MLプロジェクトに使用できます。以下は、CSVデータファイルをロードするためのPythonスクリプトです-

from numpy import loadtxt
path = r"C:\pima-indians-diabetes.csv"
datapath= open(path, 'r')
data = loadtxt(datapath, delimiter=",")
print(data.shape)
print(data[:3])

出力

(768, 9)
[  [ 6.  148.  72.  35.  0.  33.6  0.627  50. 1.]
   [ 1.  85.   66.  29.  0.  26.6  0.351  31. 0.]
   [ 8.  183.  64.  0.   0.  23.3  0.672  32. 1.]
]

パンダでCSVを読み込む

CSVデータファイルをロードする別のアプローチは Pandas そして pandas.read_csv()function。これは、を返す非常に柔軟な関数です。pandas.DataFrameすぐにプロットに使用できます。以下は、CSVデータファイルを使用してロードする例です-

ここでは、2つのPythonスクリプトを実装します。1つはヘッダーのあるIrisデータセットを使用するもので、もう1つはヘッダーのない数値データセットであるPima IndiansDatasetを使用するものです。両方のデータセットをローカルディレクトリにダウンロードできます。

Script-1

以下は、アイリスデータセットでパンダを使用してCSVデータファイルをロードするためのPythonスクリプトです-

from pandas import read_csv
path = r"C:\iris.csv"
data = read_csv(path)
print(data.shape)
print(data[:3])

Output:

(150, 4)
   sepal_length   sepal_width  petal_length   petal_width
0         5.1     3.5          1.4            0.2
1         4.9     3.0          1.4            0.2
2         4.7     3.2          1.3            0.2

Script-2

以下は、CSVデータファイルをロードするためのPythonスクリプトであり、ヘッダー名も提供します。PimaIndiansDiabetesデータセットでPandasを使用します-

from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
print(data.shape)
print(data[:3])

Output

(768, 9)
   preg  plas  pres   skin  test   mass    pedi    age   class
0   6    148    72      35    0     33.6   0.627    50      1
1   1    85     66      29    0     26.6   0.351    31      0
2   8    183    64      0     0     23.3   0.672    32      1

CSVデータファイルをロードするために使用された上記の3つのアプローチの違いは、与えられた例の助けを借りて簡単に理解することができます。