3.2.2 データの探索
データを調べ、データの品質を理解して評価します。 このステージでは、データを評価してデータ内のデータ型およびノイズを識別します。 欠損値および数値外れ値を探します。
データの理解と準備
OML4Pyを使用してPythonからデータベース・データにアクセスするには、まず、データベース表、ビューまたは問合せを表すoml.DataFrame
プロキシ・オブジェクトをPythonで作成する必要があります。 SUPPLEMENTARY_DEMOGRAPHICSおよびCUSTOMERSのoml.DataFrame
プロキシ・オブジェクトを作成し、同一かつ一意の列で内部結合によってマージします。 データを評価して、データ内のデータ型とノイズを特定します。 欠落値(系統的またはランダム)、外れ値の数値、またはラベルが矛盾するカテゴリ値を探します。
データの準備および理解のために、次のステップを実行します:
- %pythonインタプリタの段落で次のスクリプトを実行して、
oml
モジュール、Pandaのモジュールをインポートし、表示オプションを設定します:import pandas as pd import oml pd.set_option('display.max_rows', 500) pd.set_option('display.max_columns', 500) pd.set_option('display.width', 1000) import warnings warnings.simplefilter(action='ignore', category=FutureWarning)
oml.sync
関数を使用して、PythonオブジェクトDEMOGRAPHICS
をデータベース表SUPPLEMENTARY_DEMOGRAPHICS
のプロキシとして作成します。oml.sync
関数は、oml.DataFrame
オブジェクトまたはoml.DataFrame
オブジェクトのディクショナリを返します。oml.sync
によって返されるoml.DataFrame
オブジェクトは、データベース・オブジェクトのプロキシです。DEMOGRAPHICS = oml.sync(table = "SUPPLEMENTARY_DEMOGRAPHICS", schema = "SH") z.show(DEMOGRAPHICS.head())
- シェイプ関数を実行して、oml.DataFrameオブジェクト
DEMO
の行と列を表示します。print("Shape:",DEMOGRAPHICS.shape)
(4500, 14)
- oml.sync関数を使用して、データベース表SH.CUSTOMERSのプロキシとしてPythonオブジェクトCUSTOMERSを作成します。 ここでの2番目のステップと同様に、スキーマは使用されません。 schema引数を使用すると、Python環境およびプロキシ・オブジェクトを作成するスキーマを指定できます。 指定したデータベース・スキーマに一度に存在できるのは、1つの環境のみです。
schema=None
の場合、オブジェクトは現在のユーザーのスキーマ内に作成されます。CUSTOMERS = oml.sync(query = 'SELECT CUST_ID, CUST_GENDER, CUST_MARITAL_STATUS, CUST_YEAR_OF_BIRTH, CUST_INCOME_LEVEL, CUST_CREDIT_LIMIT FROM SH.CUSTOMERS') z.show(CUSTOMERS.head())
- シェイプ関数を実行して、oml.DataFrameオブジェクトCUSTOMERSの行と列を表示します。
print("Shape:",CUSTOMERS.shape)
(55500, 6)
- CUSTOMERS表とDEMOGRAPHICS表を共通列CUST_IDの内部結合とマージして、新しいoml.dataframe CUSTOMER_DATAを作成します。 マージ関数は、1つのoml.dataframeを別のoml.dataframeに結合します。 パラメータは、2つのoml.dataframeに競合する列名がある場合に使用されます。
CUSTOMER_DATA = CUSTOMERS[["CUST_ID", "CUST_INCOME_LEVEL", "CUST_CREDIT_LIMIT"]].merge(DEMOGRAPHICS[["CUST_ID", "HOUSEHOLD_SIZE", "OCCUPATION", "HOME_THEATER_PACKAGE"]], how = "inner", on = 'CUST_ID',suffixes = ["",""]) z.show(CUSTOMER_DATA.head())
- シェイプ関数を実行して、oml.DataFrameオブジェクトCUSTOMER_DATAの行と列を表示します。
print("Shape:", CUSTOMER_DATA.shape)
(4500, 6)
- 次のスクリプトを実行して、すべての列のデータ型を表示します。
print("The datatypes of the column: ","\n") print(CUSTOMER_DATA.dtypes)
- 欠落している値があるかどうかを確認するには、次のスクリプトを実行します。 count関数は、各列に対してNULLでない要素の数を返し、len関数はデータセット内の行数を返します。
print("Number of missing values in each column is : \n") print(len(CUSTOMER_DATA)-CUSTOMER_DATA.count())
- クロス集計メソッドを使用して、データベース内のoml.DataFrameオブジェクトの列間分析を実行します。 クロス集計メソッドは、2つ以上の列のクロス集計を計算します。 デフォルトでは、列と集計関数が渡されないかぎり、列の頻度表が計算されます。 この例では、クロス集計関数によってHOME_THEATER_PACKAGEレスポンダの分布が表示されます。
z.show(CUSTOMER_DATA.crosstab('HOME_THEATER_PACKAGE'))
- 顧客が収益レベルに応じてHOME_THEATER_PACKAGEにどのように応答するかを知るには、次のコードを実行します:
z.show(CUSTOMER_DATA.crosstab('CUST_INCOME_LEVEL','HOME_THEATER_PACKAGE').sort_values('count', ascending=False).rename(columns = {'count':'NUM_CUSTOMERS'}))
これで、データの理解およびデータの準備ステージが完了します。
親トピック: 分類ユース・ケース