機械翻訳について

3.2.2 データの探索

データを調べ、データの品質を理解して評価します。 このステージでは、データを評価してデータ内のデータ型およびノイズを識別します。 欠損値および数値外れ値を探します。

データの理解と準備

OML4Pyを使用してPythonからデータベース・データにアクセスするには、まず、データベース表、ビューまたは問合せを表すoml.DataFrameプロキシ・オブジェクトをPythonで作成する必要があります。 SUPPLEMENTARY_DEMOGRAPHICSおよびCUSTOMERSのoml.DataFrameプロキシ・オブジェクトを作成し、同一かつ一意の列で内部結合によってマージします。 データを評価して、データ内のデータ型とノイズを特定します。 欠落値(系統的またはランダム)、外れ値の数値、またはラベルが矛盾するカテゴリ値を探します。

データの準備および理解のために、次のステップを実行します:

  1. %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)
  2. 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())

    SUPPLEMENTARY_DEMOGRAPHICSの上位5つを表示

  3. シェイプ関数を実行して、oml.DataFrameオブジェクトDEMOの行と列を表示します。
    print("Shape:",DEMOGRAPHICS.shape)
    (4500, 14)
  4. 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())

    SH.CUSTOMERSの上位5行を表示

  5. シェイプ関数を実行して、oml.DataFrameオブジェクトCUSTOMERSの行と列を表示します。
    print("Shape:",CUSTOMERS.shape)
    (55500, 6)
  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())

    合併データの上位5行を表示します。

  7. シェイプ関数を実行して、oml.DataFrameオブジェクトCUSTOMER_DATAの行と列を表示します。
    print("Shape:", CUSTOMER_DATA.shape)
    (4500, 6)
  8. 次のスクリプトを実行して、すべての列のデータ型を表示します。
    print("The datatypes of the column: ","\n")
    print(CUSTOMER_DATA.dtypes)

    列のデータ型を表示

  9. 欠落している値があるかどうかを確認するには、次のスクリプトを実行します。 count関数は、各列に対してNULLでない要素の数を返し、len関数はデータセット内の行数を返します。
    print("Number of missing values in each column is : \n")
    print(len(CUSTOMER_DATA)-CUSTOMER_DATA.count())

    欠落している列数を表示

  10. クロス集計メソッドを使用して、データベース内のoml.DataFrameオブジェクトの列間分析を実行します。 クロス集計メソッドは、2つ以上の列のクロス集計を計算します。 デフォルトでは、列と集計関数が渡されないかぎり、列の頻度表が計算されます。 この例では、クロス集計関数によってHOME_THEATER_PACKAGEレスポンダの分布が表示されます。
    z.show(CUSTOMER_DATA.crosstab('HOME_THEATER_PACKAGE'))

    ホーム・シアターのクロス・タブを表示

  11. 顧客が収益レベルに応じてHOME_THEATER_PACKAGEにどのように応答するかを知るには、次のコードを実行します:
    
    z.show(CUSTOMER_DATA.crosstab('CUST_INCOME_LEVEL','HOME_THEATER_PACKAGE').sort_values('count', ascending=False).rename(columns = {'count':'NUM_CUSTOMERS'}))

    クロス・タブを表示

これで、データの理解およびデータの準備ステージが完了します。