Créer un nouveau projet de calcul numérique Python

Cet article est le 18e jour du Prochain calendrier de l'Avent (Lifull) 2016.

Bonjour, c'est Ninomiya du marketing numérique U.

Récemment, plusieurs départements de l'entreprise ont créé des projets utilisant Python pour le traitement statistique et les calculs numériques.

Jusqu'à présent, le langage R était principalement utilisé par @wakuteka du même groupe, et les documents et le savoir-faire étaient organisés comme tels.

Il semble qu'il y ait eu également un besoin.

(Bien sûr, au lieu de dégrader le langage R, il est interactif en utilisant un groupe de bibliothèques appelé tidyverse. Le langage R est plus facile à utiliser pour l'analyse et la visualisation. Les outils sont utilisés.)

J'utilise Python comme passe-temps et j'ai eu l'occasion de travailler sur plusieurs projets sous forme de critiques et de conseils (ce qui est exagéré).

Je voudrais résumer les connaissances acquises au cours de ce processus et les articles auxquels j'ai fait référence.

Cependant, comme nous avons procédé par essais et erreurs, il existe peut-être un meilleur moyen et le contenu de l'article ne couvre pas l'ensemble du développement. Si vous trouvez un tel point, je vous serais reconnaissant de bien vouloir me le faire savoir dans les commentaires.

Préparez l'environnement Python

L'article "Environnement de développement créé avec l'intention d'écrire sérieusement Python" a été utile.

Une distribution Python bien connue appelée Anaconda, qui contient également une bibliothèque pour les statistiques, n'est pas utilisée en production. (Je l'utilise dans l'environnement de développement / analyse.)

Comme vous pouvez le voir dans l'article "Physenv requis ou non"

J'ai défini / bin d'Anaconda sur le chemin, mais les outils dont dispose Anaconda (openssl / curl / python) obscurcissent les outils dont dispose le système d'exploitation. De plus, il est trop basé sur BASH, et si vous utilisez zsh, cela ne fonctionnera que si vous le corrigez de différentes manières.

C'est parce que je m'inquiétais du comportement ici en fonctionnement réel.

développement de

J'avais besoin de le revoir, alors j'ai réétudié les normes de codage et comment écrire des DocStrings.

Découpé en paquet (si nécessaire)

Nous avons rendu possible l'installation de calculs numériques spécifiques au service à l'aide de pip en utilisant le référentiel git pour les groupes.

À ce moment-là, j'ai fait référence à ces articles.

Convention de codage

Reportez-vous à PEP8 et Google Python Style Guide Je pense que ce sera.

Cependant, il est difficile de vérifier visuellement la norme de codage à la main, donc flake8 et [autopep8](https: //pypi.python) J'utilise également .org / pypi / autopep8) selon le cas. Cependant, PEP8 est une norme de codage relativement stricte, nous procédons donc à des consultations le cas échéant.

Ici, je me suis référé à l'article suivant.

Description de DocStrings

J'ai également des DocStrings de type Google pour faciliter la compréhension de l'entrée et de la sortie des fonctions et des méthodes. Il semble y avoir également d'autres styles Numpy.

Lorsque vous utilisez Type Annotation avec Python 3.5 ou version ultérieure,

def function_with_pep484_type_annotations(param1: int, param2: str) -> bool:
    """Example function with PEP 484 type annotations.
 
    Args:
        param1: The first parameter.
        param2: The second parameter.
 
    Returns:
        The return value. True for success, False otherwise.
  
    """

C'est le cas lorsque l'annotation de type n'est pas utilisée.

def function_with_types_in_docstring(param1, param2):
    """Example function with types documented in the docstring.
 
    Args:
        param1 (int): The first parameter.
        param2 (str): The second parameter.
 
    Returns:
        bool: The return value. True for success, False otherwise.
 
    """

Cependant, dans le code que j'ai examiné, il y avait une fonction qui renvoyait plusieurs valeurs avec tuple, mais (pour autant que j'en ai étudié) les DocStrings de style Google ne semblaient pas prendre en charge l'écriture qui renvoie plusieurs valeurs avec des retours. .. Sur la base de cette réponse au débordement de pile, écrivez comme suit J? ai compris.

import pandas as pd

def _postprocess_data(output_data, market):
    """Formater en données pour l'alerte et la sortie de fichier

        Args:
            output_data (pd.DataFrame):Trame de données calculée
            market (str):Nom du marché immobilier

        Returns:
            tuple:Renvoie les valeurs suivantes sous forme de valeurs multiples
                - output_data (pd.DataFrame):Des données de sortie
                - monthly_data (pd.DataFrame):Données mensuelles

    """

Je n'ai pas encore essayé les annotations de type et Analyse statique avec mypy, mais j'en profiterai pour l'essayer.

Écriture du code de test

C'était un petit projet, j'ai donc écrit quelques tests simples avec unittest.

Outre unittest, il semble qu'il existe quelques frameworks, donc je vais créer une opportunité pour cela aussi.

En ce moment, je travaille sur quelque chose comme "coller une fonction qui a été essayée et erronée avec un notebook jupyter dans un éditeur." Je veux pouvoir l'utiliser correctement avec TDD (quelque chose comme ça) au besoin.

À propos des trames de données pandas

Lors de l'analyse de données avec Python, je pense que vous utiliserez des pandas pour introduire un type de trame de données comme le langage R.

En langage R, des bibliothèques telles que dplyr et tidyr peuvent exprimer le flux de traitement de données de manière concise à l'aide d'opérateurs de pipeline, mais il semble qu'il faut un certain temps pour s'habituer à faire de même avec les pandas. (De plus, contrairement à R, qui exprime tout dans une trame de données, il a été tenté de l'utiliser correctement avec le type de dictionnaire.)

Cependant, cet article a un bon moyen d'écrire des pandas, alors veuillez le lire si vous commencez à l'utiliser.

Résumé

Voici un résumé rapide des résultats d'essais et d'erreurs (ou en cours de réalisation) dans un projet Python à l'aide d'une bibliothèque d'analyse de données. J'espère que cela aidera quelqu'un à lire ceci.

Le contenu de l'article ne couvre pas l'ensemble du développement. Si vous trouvez un tel point, je vous serais reconnaissant de bien vouloir me le faire savoir dans les commentaires.

Continuez également à prêter attention à Notre calendrier de l'Avent.

Recommended Posts

Créer un nouveau projet de calcul numérique Python
Créer un module Python
Créer un environnement Python
Calcul numérique avec Python
Créer une nouvelle tâche Todoist à partir d'un script Python
Créer une nouvelle page en confluence avec Python
Créer un plugin Wox (Python)
Créer une fonction en Python
Créer un dictionnaire en Python
Créer un tableau numpy python
Tâches au démarrage d'un nouveau projet python
Créer un répertoire avec python
Créer une interface graphique python à l'aide de tkinter
Créer un conteneur DI avec Python
Étapes pour créer un projet Django
Créer un environnement Python sur Mac (2017/4)
Créer une nouvelle application utiliser python, django
Créez un environnement virtuel avec Python!
Créer un fichier binaire en Python
Créer un environnement python dans centos
Créer une documentation de projet Python dans Sphinx
Créer un framework de décorateur à usage général pour Python
5 façons de créer un chatbot Python
Créer une chaîne aléatoire en Python
Créer un décorateur de fonction Python avec Class
[Calcul scientifique / technique par Python] Calcul de somme, calcul numérique
Créez une image factice avec Python + PIL.
Créez un environnement python sur votre Mac
Créer une application GUI simple en Python
Créons un environnement virtuel pour Python
[Python] Créez un environnement virtuel avec Anaconda
Créons un groupe gratuit avec Python
Commandes pour créer un nouveau projet django
[Python] Créer un environnement Batch à l'aide d'AWS-CDK
[Python] [LINE Bot] Créer un robot LINE de retour de perroquet
Créer un nouveau dict qui combine des dictés
Créer un compteur de fréquence de mots avec Python 3.4
Créer un fichier deb à partir d'un package python
[Python] Créez un LineBot qui s'exécute régulièrement
[GPS] Créer un fichier kml avec Python
Faisons un calcul de combinaison avec Python
Créer un cadre avec un arrière-plan transparent avec tkinter [Python]
[Python] Compréhension de liste Différentes façons de créer une liste
Modifier Excel à partir de Python pour créer un tableau croisé dynamique
Créez un environnement de test Vim + Python en 1 minute
Créer un fichier GIF en utilisant Pillow en Python
Je veux créer un bel environnement de développement Python pour mon nouveau Mac
Créer un tableau C à partir d'une feuille Python> Excel
[python] Créer une liste de différents types de caractères
Créer un LINE BOT avec Minette pour Python
Je veux créer une fenêtre avec Python
Créer un graphique de distribution normale standard en Python
[Calcul scientifique / technique par Python] Interpolation de Lagrange, calcul numérique
Comment créer un fichier JSON en Python
Créer un environnement virtuel avec conda avec Python
Créer une page qui se charge indéfiniment avec python