[PYTHON] Utilisez gokart pour tester les associations pandas sur votre pipeline de données.

écrire

Qu'est-ce que le gokart?

--OSS développé par M3 et fringe81

Version cible

Confirmez s'il faut se terminer normalement lorsque pd.Dataframe de l'entrée est vide

class DataTask(gokart.TaskOnKart):
    task_namespace = 'sample'

    def run(self):
        df = pd.DataFrame(dict(user=[1, 2], item=['a', 'b']))
        self.dump(df)


class TaskA(gokart.TaskOnKart):
    task_namespace = 'sample'

    def requires(self):
        return DataTask()

    def run(self):
        df = self.load_data_frame()
        #Quand df est vide`KeyError`Se produit.
        df['user'] = df['user'].apply(lambda x: f'user_{x}')
        self.dump(df)


if __name__ == '__main__':
    gokart.run()
$ python main.py sample.TaskA --local-scheduler --test-run-pandas --test-run-namespace=sample

--Message

gokart test results:
status=OK; namespace=sample; name=DataTask; id=10f87ddcf3df71d786a023ae5e0bbc98;
status=NG; namespace=sample; name=TaskA; id=44e9690a4d2182a9bed6b6d9730291bd; message=<class 'KeyError'>: user

Vérifiez si chaque colonne a le type attendu lors du vidage

class SamplePandasTypeCheck(gokart.PandasTypeConfig):
    task_namespace = 'sample'

    @classmethod
    def type_dict(cls) -> Dict[str, Any]:
        return {'user': int}


class DataTask(gokart.TaskOnKart):
    task_namespace = 'sample'

    def run(self):
        df = pd.DataFrame(dict(user=[1, 2], item=['a', 'b']))
        self.dump(df)


class TaskA(gokart.TaskOnKart):
    task_namespace = 'sample'

    def requires(self):
        return DataTask()

    def run(self):
        df = self.load_data_frame()
        #Le type d'utilisateur est passé de int à str.
        df['user'] = df['user'].apply(lambda x: f'user_{x}')
        self.dump(df)


if __name__ == '__main__':
    gokart.run()

--Si vous exécutez la tâche normalement, le type sera vérifié automatiquement.

$ python main.py sample.TaskA --local-scheduler

--Message

gokart.pandas_type_config.PandasTypeError: expected type is "<class 'int'>", but "<class 'str'>" is passed in column "user".

...

===== Luigi Execution Summary =====

Scheduled 2 tasks of which:
* 1 ran successfully:
    - 1 sample.DataTask(...)
* 1 failed:
    - 1 sample.TaskA(...)

This progress looks :( because there were failed tasks

===== Luigi Execution Summary =====

Recommended Posts

Utilisez gokart pour tester les associations pandas sur votre pipeline de données.
Convertir les données de la grille en données contenant des lignes (?) À l'aide de pandas
Comment utiliser Pandas 2
Comment utiliser Pandas Rolling
Comment obtenir un aperçu de vos données dans Pandas
[Python] Comment utiliser la série Pandas
Comment utiliser Dataiku sous Windows
Utilisez Github-Flavored-Markdown sur le blog Pelican
Remarques sur l'utilisation de pywinauto
Remarques sur l'utilisation des featuretools
Comment utiliser l'homebrew dans Debian
[Introduction à Python] Utilisons les pandas
[Introduction à Python] Utilisons les pandas
[Introduction à Python] Utilisons les pandas
Si vous souhaitez utiliser NumPy, Pandas, Matplotlib, IPython, SciPy sous Windows
[Python] Résumé de l'utilisation des pandas
Comment utiliser le pipeline Spark ML
[Python] Utilisez des pandas pour extraire △△ qui maximise ○○
[Pandas] Qu'est-ce que set_option [Comment utiliser]
Comment utiliser mecab, neologd-ipadic sur colab
Migrez vos propres données CMS vers WordPress
Comment utiliser Google Test en langage C
Je veux utiliser Linux sur mac
Comment utiliser l'Assistant Google sur Windows 10
Mémorandum sur l'utilisation du python gremlin
5 raisons d'installer Linux sur votre ordinateur portable.
Essayez de convertir en données ordonnées avec les pandas
Installez python sur xserver pour utiliser pip
Comment utiliser "deque" pour les données Python
Comment tester sur une page authentifiée par Django
Comment utiliser les pandas Timestamp et date_range
Livres sur la science des données à lire en 2020