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.
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.
J'avais besoin de le revoir, alors j'ai réétudié les normes de codage et comment écrire des DocStrings.
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.
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.
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.
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.
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.
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