Mage は ETL タスク用の強力なツールであり、データの探索とマイニングを可能にする機能、グラフ テンプレートによる迅速な視覚化、およびデータを使った作業を魔法のようなものに変えるその他のいくつかの機能を備えています。
データ処理では、ETL プロセス中に、将来問題を引き起こす可能性のある欠落データが見つかることがよくあります。データセットを使用して実行するアクティビティによっては、null データが非常に破壊的になる可能性があります。
データセット内にデータが存在しないことを特定するために、Python と pandas ライブラリを使用して null 値を示すデータをチェックできます。さらに、これらの null 値の影響をより明確に示すグラフを作成できます。私たちのデータセット。
私たちのパイプラインは 4 つのステップで構成されています。データのロードから始まり、2 つの処理ステップ、データのエクスポートです。
この記事では、コンテストの一環として Kaggle で利用できるデータセット「毒キノコのバイナリ予測」を使用します。ウェブサイトで入手可能なトレーニング データセットを使用してみましょう。
使用するデータをロードできるように、Python を使用してデータ ローダー ステップを作成しましょう。この手順の前に、データをロードできるように、マシン上にローカルにある Postgres データベースにテーブルを作成しました。データは Postgres にあるため、Mage 内ですでに定義されている Postgres ロード テンプレートを使用します。
from mage_ai.settings.repo import get_repo_path from mage_ai.io.config import ConfigFileLoader from mage_ai.io.postgres import Postgres from os import path if 'data_loader' not in globals(): from mage_ai.data_preparation.decorators import data_loader if 'test' not in globals(): from mage_ai.data_preparation.decorators import test @data_loader def load_data_from_postgres(*args, **kwargs): """ Template for loading data from a PostgreSQL database. Specify your configuration settings in 'io_config.yaml'. Docs: https://docs.mage.ai/design/data-loading#postgresql """ query = 'SELECT * FROM mushroom' # Specify your SQL query here config_path = path.join(get_repo_path(), 'io_config.yaml') config_profile = 'default' with Postgres.with_config(ConfigFileLoader(config_path, config_profile)) as loader: return loader.load(query) @test def test_output(output, *args) -> None: """ Template code for testing the output of the block. """ assert output is not None, 'The output is undefined'
関数 load_data_from_postgres() 内で、データベースにテーブルをロードするために使用するクエリを定義します。私の場合、デフォルト設定として定義されているファイル io_config.yaml で銀行情報を設定したため、デフォルト名を変数 config_profile に渡すだけで済みます。
ブロックの実行後、チャートの追加機能を使用します。これにより、すでに定義されたテンプレートを通じてデータに関する情報が提供されます。再生ボタンの横にある、画像内で黄色の線でマークされたアイコンをクリックするだけです。
データセットをさらに調査するために、summay_overview オプションと feature_profiles オプションの 2 つのオプションを選択します。 summary_overview を通じて、データセット内の列と行の数に関する情報を取得します。また、カテゴリ列、数値列、ブール列の合計数など、タイプごとの列の合計数を表示することもできます。一方、Feature_profiles は、タイプ、最小値、最大値などのデータに関するより記述的な情報を表示し、処理の焦点である欠損値を視覚化することもできます。
欠損データにさらに焦点を当てることができるように、欠損値の割合、各列の欠損データの割合を示す棒グラフのテンプレートを使用しましょう。
グラフには、欠損値が内容の 80% 以上に相当する 4 つの列と、欠損値を示す他の列が表示されますが、その量は少ないため、この情報により、これに対処するためのさまざまな戦略を模索できるようになりました。ヌルデータ。
変圧器ドロップカラムTRANSFORMER ブロックを使用して、オプション 列削除 を選択します。
from mage_ai.data_cleaner.transformer_actions.base import BaseAction from mage_ai.data_cleaner.transformer_actions.constants import ActionType, Axis from mage_ai.data_cleaner.transformer_actions.utils import build_transformer_action from pandas import DataFrame if 'transformer' not in globals(): from mage_ai.data_preparation.decorators import transformer if 'test' not in globals(): from mage_ai.data_preparation.decorators import test @transformer def execute_transformer_action(df: DataFrame, *args, **kwargs) -> DataFrame: """ Execute Transformer Action: ActionType.REMOVE Docs: https://docs.mage.ai/guides/transformer-blocks#remove-columns """ action = build_transformer_action( df, action_type=ActionType.REMOVE, arguments=['veil_type', 'spore_print_color', 'stem_root', 'veil_color'], axis=Axis.COLUMN, ) return BaseAction(action).execute(df) @test def test_output(output, *args) -> None: """ Template code for testing the output of the block. """ assert output is not None, 'The output is undefined'関数
execute_transformer_action() 内で、データセットから除外する列の名前を含むリストを引数変数に挿入します。このステップの後は、ブロックを実行するだけです。
欠損値を埋めるトランスフォーマー欠損値を埋める戦略を使用します。場合によっては、データが欠損しているにもかかわらず、これらを次のような値に置き換えます。最終的な目的に応じて、データセットに多くの変更を加えることなく、データのニーズを満たすことができる場合があります。
欠損データをデータセットに関連する値 (最頻値、平均値、中央値) に置き換える分類などのタスクがいくつかあり、データが削除された場合に別の結論に達する可能性がある分類アルゴリズムに貢献する可能性があります。私たちが使用した他の戦略と同様に。どの測定値を使用するかを決定するために、Mage の
チャートの追加 機能を再度使用します。テンプレート MostfrequencyValues を使用すると、各列のこの値のモードと頻度を視覚化できます。
前の手順と同様の手順に従い、トランスフォーマー欠損値を埋める を使用して、各列のモード (steam_surface、gill_spacing、cap_surface) を使用して欠損データを減算するタスクを実行します。 、ギルアタッチメント、リングタイプ.
from mage_ai.data_cleaner.transformer_actions.base import BaseAction from mage_ai.data_cleaner.transformer_actions.constants import ActionType, Axis from mage_ai.data_cleaner.transformer_actions.utils import build_transformer_action from pandas import DataFrame if 'transformer' not in globals(): from mage_ai.data_preparation.decorators import transformer if 'test' not in globals(): from mage_ai.data_preparation.decorators import test @transformer def execute_transformer_action(df: DataFrame, *args, **kwargs) -> DataFrame: """ Execute Transformer Action: ActionType.REMOVE Docs: https://docs.mage.ai/guides/transformer-blocks#remove-columns """ action = build_transformer_action( df, action_type=ActionType.REMOVE, arguments=['veil_type', 'spore_print_color', 'stem_root', 'veil_color'], axis=Axis.COLUMN, ) return BaseAction(action).execute(df) @test def test_output(output, *args) -> None: """ Template code for testing the output of the block. """ assert output is not None, 'The output is undefined'関数
execute_transformer_action() で、Python 辞書内のデータを置換する戦略を定義します。その他の置換オプションについては、トランスフォーマーのドキュメント (https://docs.mage.ai/guides/transformer-blocks#fill-in-missing-values) にアクセスしてください。
データエクスポーターData Exporter ブロックを使用して Postgres を選択し、データベース構成が以前にファイル io_config.yaml に保存されていることを思い出しながら、保存するシーマとテーブルを定義します。
from mage_ai.data_cleaner.transformer_actions.base import BaseAction from mage_ai.data_cleaner.transformer_actions.constants import ActionType, Axis from mage_ai.data_cleaner.transformer_actions.utils import build_transformer_action from pandas import DataFrame if 'transformer' not in globals(): from mage_ai.data_preparation.decorators import transformer if 'test' not in globals(): from mage_ai.data_preparation.decorators import test @transformer def execute_transformer_action(df: DataFrame, *args, **kwargs) -> DataFrame: """ Execute Transformer Action: ActionType.REMOVE Docs: https://docs.mage.ai/guides/transformer-blocks#remove-columns """ action = build_transformer_action( df, action_type=ActionType.REMOVE, arguments=['veil_type', 'spore_print_color', 'stem_root', 'veil_color'], axis=Axis.COLUMN, ) return BaseAction(action).execute(df) @test def test_output(output, *args) -> None: """ Template code for testing the output of the block. """ assert output is not None, 'The output is undefined'ありがとう、また会いましょう?
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3