"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मैजिक मशरूम: मैज के साथ अशक्त डेटा की खोज और उपचार

मैजिक मशरूम: मैज के साथ अशक्त डेटा की खोज और उपचार

2024-08-27 को प्रकाशित
ब्राउज़ करें:512

मेज ईटीएल कार्यों के लिए एक शक्तिशाली उपकरण है, जिसमें ऐसी विशेषताएं हैं जो डेटा अन्वेषण और खनन, ग्राफ टेम्पलेट्स के माध्यम से त्वरित विज़ुअलाइज़ेशन और कई अन्य सुविधाएं प्रदान करती हैं जो डेटा के साथ आपके काम को कुछ जादुई में बदल देती हैं।

डेटा प्रोसेसिंग में, ईटीएल प्रक्रिया के दौरान गायब डेटा ढूंढना आम बात है जो भविष्य में समस्याएं पैदा कर सकता है, डेटासेट के साथ हम जो गतिविधि करने जा रहे हैं उसके आधार पर, शून्य डेटा काफी विघटनकारी हो सकता है।

हमारे डेटासेट में डेटा की अनुपस्थिति की पहचान करने के लिए, हम शून्य मान प्रस्तुत करने वाले डेटा की जांच करने के लिए पायथन और पांडा लाइब्रेरी का उपयोग कर सकते हैं, इसके अलावा हम ग्राफ़ बना सकते हैं जो इन शून्य मानों के प्रभाव को और भी स्पष्ट रूप से दिखाते हैं हमारा डेटासेट।

हमारी पाइपलाइन में 4 चरण हैं: डेटा लोड करना शुरू करना, दो प्रसंस्करण चरण और डेटा निर्यात करना।

Cogumelos Mágicos: explorando e tratando dados nulos com Mage

डेटा लोडर

इस लेख में हम डेटासेट का उपयोग करेंगे: ज़हरीले मशरूम की बाइनरी भविष्यवाणी जो एक प्रतियोगिता के भाग के रूप में कागल पर उपलब्ध है। आइए वेबसाइट पर उपलब्ध प्रशिक्षण डेटासेट का उपयोग करें।

आइए हम जिस डेटा का उपयोग करने जा रहे हैं उसे लोड करने में सक्षम होने के लिए पायथन का उपयोग करके एक डेटा लोडर चरण बनाएं। इस चरण से पहले, मैंने डेटा लोड करने में सक्षम होने के लिए पोस्टग्रेज डेटाबेस में एक तालिका बनाई, जो मेरी मशीन पर स्थानीय रूप से है। चूँकि डेटा पोस्टग्रेज़ में है, हम Mage के भीतर पहले से परिभाषित पोस्टग्रेज़ लोड टेम्पलेट का उपयोग करेंगे।

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 में पास करने की आवश्यकता है।

ब्लॉक निष्पादित करने के बाद, हम चार्ट जोड़ें सुविधा का उपयोग करेंगे, जो पहले से परिभाषित टेम्पलेट्स के माध्यम से हमारे डेटा के बारे में जानकारी प्रदान करेगा। बस प्ले बटन के बगल वाले आइकन पर क्लिक करें, जो छवि में पीली रेखा से चिह्नित है।

Cogumelos Mágicos: explorando e tratando dados nulos com Mage

हम अपने डेटासेट को और अधिक एक्सप्लोर करने के लिए दो विकल्पों का चयन करेंगे, summay_overview और फीचर_प्रोफाइल विकल्प। सारांश_अवलोकन के माध्यम से, हम डेटासेट में कॉलम और पंक्तियों की संख्या के बारे में जानकारी प्राप्त करते हैं। हम प्रकार के अनुसार कॉलम की कुल संख्या भी देख सकते हैं, उदाहरण के लिए श्रेणीबद्ध, संख्यात्मक और बूलियन कॉलम की कुल संख्या। दूसरी ओर, फ़ीचर_प्रोफ़ाइल्स, डेटा के बारे में अधिक वर्णनात्मक जानकारी प्रस्तुत करता है, जैसे: प्रकार, न्यूनतम मूल्य, अधिकतम मूल्य, अन्य जानकारी के अलावा, हम लापता मूल्यों की भी कल्पना कर सकते हैं, जो हमारे उपचार का फोकस हैं।

अनुपलब्ध डेटा पर अधिक ध्यान केंद्रित करने में सक्षम होने के लिए, आइए टेम्पलेट का उपयोग करें: गायब मानों का%, प्रत्येक कॉलम में गायब डेटा के प्रतिशत के साथ एक बार ग्राफ।

Cogumelos Mágicos: explorando e tratando dados nulos com Mage

ग्राफ 4 कॉलम प्रस्तुत करता है जहां लापता मान इसकी सामग्री के 80% से अधिक के अनुरूप होते हैं, और अन्य कॉलम जो लापता मान प्रस्तुत करते हैं लेकिन कम मात्रा में, यह जानकारी अब हमें इससे निपटने के लिए विभिन्न रणनीतियों की तलाश करने की अनुमति देती है शून्य डेटा.

ट्रांसफार्मर ड्रॉप कॉलम

उन कॉलमों के लिए जिनमें 80% से अधिक शून्य मान हैं, हम जिस रणनीति का पालन करेंगे वह डेटाफ़्रेम में ड्रॉप कॉलम निष्पादित करना होगा, उन कॉलमों का चयन करना जिन्हें हम डेटाफ़्रेम से बाहर करने जा रहे हैं। पायथन भाषा में ट्रांसफॉर्मर ब्लॉक का उपयोग करके, हम विकल्प Colum निष्कासन का चयन करेंगे।

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() हम उन कॉलमों के नाम के साथ एक सूची डालेंगे जिन्हें हम डेटासेट से बाहर करना चाहते हैं, तर्क चर में, इस चरण के बाद, बस ब्लॉक निष्पादित करें।

ट्रांसफार्मर में लुप्त मान भरें

अब उन कॉलमों के लिए जिनमें 80% से कम शून्य मान हैं, हम रणनीति का उपयोग करेंगे गुम मानों को भरें, जैसा कि कुछ मामलों में गायब डेटा होने के बावजूद, इन्हें मानों के साथ प्रतिस्थापित किया जाता है जैसे कि औसत, या फैशन, यह आपके अंतिम उद्देश्य के आधार पर, डेटासेट में कई बदलाव किए बिना डेटा आवश्यकताओं को पूरा करने में सक्षम हो सकता है।

कुछ कार्य हैं, जैसे कि वर्गीकरण, जहां डेटासेट के लिए प्रासंगिक (मोड, माध्य, माध्य) मान के साथ लापता डेटा को बदलना, वर्गीकरण एल्गोरिदम में योगदान कर सकता है, जो डेटा हटाए जाने पर अन्य निष्कर्षों तक पहुंच सकता है जैसा कि हमने दूसरी रणनीति में इस्तेमाल किया था।

हम किस माप का उपयोग करेंगे, इसके बारे में निर्णय लेने के लिए, हम Mage की चार्ट जोड़ें कार्यक्षमता का फिर से उपयोग करेंगे। टेम्पलेट सबसे अधिक बार आने वाले मान का उपयोग करके हम प्रत्येक कॉलम में इस मान के मोड और आवृत्ति की कल्पना कर सकते हैं।

Cogumelos Mágicos: explorando e tratando dados nulos com Mage

पिछले चरणों के समान चरणों का पालन करते हुए, हम प्रत्येक कॉलम के मोड का उपयोग करके लापता डेटा को घटाने का कार्य करने के लिए ट्रांसफार्मर लापता मान भरें का उपयोग करेंगे: स्टीम_सरफेस, गिल_स्पेसिंग, कैप_सरफेस , गिल_अटैचमेंट, रिंग_टाइप।

from mage_ai.data_cleaner.transformer_actions.constants import ImputationStrategy
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.IMPUTE
    Docs: https://docs.mage.ai/guides/transformer-blocks#fill-in-missing-values

    """
    action = build_transformer_action(
        df,
        action_type=ActionType.IMPUTE,
        arguments=df.columns,  # Specify columns to impute
        axis=Axis.COLUMN,
        options={'strategy': ImputationStrategy.MODE},  # Specify imputation strategy
    )

    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(), हम पायथन डिक्शनरी में डेटा को बदलने की रणनीति को परिभाषित करते हैं। अधिक प्रतिस्थापन विकल्पों के लिए, बस ट्रांसफार्मर दस्तावेज़ तक पहुंचें: https://docs.mage.ai/guides/transformer-blocks#fill-in-missing-values।

डेटा निर्यातक

सभी परिवर्तन करते समय, हम अपने अब संसाधित डेटासेट को उसी पोस्टग्रेज डेटाबेस में सहेजेंगे, लेकिन अब एक अलग नाम से ताकि हम अंतर कर सकें। डेटा एक्सपोर्टर ब्लॉक का उपयोग करके और पोस्टग्रेज़ का चयन करके, हम शेमा और तालिका को परिभाषित करेंगे जहां हम सहेजना चाहते हैं, यह याद रखते हुए कि डेटाबेस कॉन्फ़िगरेशन पहले फ़ाइल io_config.yaml में सहेजे गए हैं।

from mage_ai.settings.repo import get_repo_path
from mage_ai.io.config import ConfigFileLoader
from mage_ai.io.postgres import Postgres
from pandas import DataFrame
from os import path

if 'data_exporter' not in globals():
    from mage_ai.data_preparation.decorators import data_exporter

@data_exporter
def export_data_to_postgres(df: DataFrame, **kwargs) -> None:

    """
    Template for exporting data to a PostgreSQL database.
    Specify your configuration settings in 'io_config.yaml'.
    Docs: https://docs.mage.ai/design/data-loading#postgresql

    """

    schema_name = 'public'  # Specify the name of the schema to export data to
    table_name = 'mushroom_clean'  # Specify the name of the table to export data to
    config_path = path.join(get_repo_path(), 'io_config.yaml')
    config_profile = 'default'

    with Postgres.with_config(ConfigFileLoader(config_path, config_profile)) as loader:

        loader.export(
            df,
            schema_name,
            table_name,
            index=False,  # Specifies whether to include index in exported table
            if_exists='replace', #Specify resolution policy if table name already exists
        )

धन्यवाद और अगली बार मिलेंगे?

रेपो -> https://github.com/DeadPunnk/Mushrooms/tree/main

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/deadpunnk/cogumelos-magicos-explorando-e-tratando-dados-nulos-com-mage-ppb?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163.com पर संपर्क करें। इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3