Lorsque vous programmez, vous souhaiterez peut-être réutiliser le programme, ou vous souhaiterez peut-être que d'autres membres utilisent le programme.
Dans un tel cas, si vous modularisez et empaquetez le code pour chaque fonction et maintenez la documentation correctement, il sera plus facile pour les autres de l'utiliser.
VS Code est également un outil puissant pour créer des packages Python. Je vais donc vous expliquer comment créer un package Python en utilisant VS Code.
Il contient également des informations utiles lors de la création de votre programme d'analyse de données.
Remarques | ||
---|---|---|
OS | Windows10 | |
conda | 4.8.3 | Avec Anaconda Promptconda -V |
Anaconda | 2020.02 | Avec Anaconda Promptconda list anaconda |
Python | 3.8.2 | |
VSCode | 1.43.2 |
Veuillez consulter cet article pour préparer l'environnement d'exécution Python pour VS Code. Comment créer un environnement d'exécution Python et Jupyter avec VSCode
Une fois que vous disposez d'un environnement d'exécution avec VSCode, créez des dossiers et des fichiers pour y développer des packages Python.
.
├── Nom du package préféré
│ ├── __init__.py
│ └── Nom du fichier favori.py
├── setup.py
└── script.py
Le package lui-même se trouve dans le dossier «nom du package favori».
À titre d'exemple, je l'ai fait sur VSCode comme indiqué ci-dessus. À titre d'exemple, nommons le package mypackage
.
setup.py
est un fichier qui définit les informations de dépendance, les informations de version et le nom de package du package à créer.
setup.py
from setuptools import setup, find_packages
setup(
name='mypackage',
install_requires=['pandas','scikit-learn'],
packages=find_packages()
)
Écrivez les paramètres dans l'argument de la fonction setup
.
Par exemple, dans ʻinstall_requires`, écrivez les modules requis pour le paquet.
Il existe divers autres éléments, veuillez donc vérifier Documentation officielle (script de configuration d'écriture) le cas échéant.
Écrivons immédiatement le programme. À titre d'exemple, cette fois, je vais créer un package pour analyser les données du Titanic de Kaggle.
Supposons que vous écriviez le programme suivant dans le fichier preprocessing.py
du package.
Il s'agit d'un programme qui prétraite les données.
preprocessing.py
class Preprocesser:
"""
Classe à prétraiter
"""
def process(self,data):
"""
Méthode de prétraitement
"""
processed_data=data.copy()
#Âge de la valeur manquante à la médiane
age_m=processed_data['Age'].median()
processed_data['Age']=processed_data['Age'].fillna(age_m)
#-----réduction-----
#Ecrire le prétraitement
return processed_data
Lançons le programme. Créez un script .py
pour l'exécution du programme appelé script.py
directement dans le dossier mypackage
du package. Par exemple, écrivez un programme qui prétraite et affiche les données d'entraînement.
script.py
def main():
from mypackage import preprocessing
import pandas as pd
train=pd.read_csv('train.csv')
#Initialisez l'instance de prétraitement et effectuez un prétraitement
preprocesser=preprocessing.Preprocesser()
train_processed=preprocesser.process(train)
print(train_processed.head())
if __name__=='__main__':
main()
Concernant la façon d'importer votre propre package, s'il se trouve directement dans le dossier de votre propre package,
from mypackage import preprocessing
comme
à partir de l'importation de nom de package personnalisé Nom de fichier du code Python individuel
Vous pouvez importer le package avec.
Avec ce script.py
ouvert, appuyez sur la touche F5
sur VSCode pour exécuter le programme comme indiqué ci-dessus, et le résultat de l'exécution sera affiché sur Terminal
.
[Comment créer un environnement d'exécution Python et Jupyter avec VS Code # Utilisation du débogage](https://qiita.com/SolKul/items/f078877acd23bb1ea5b5#%E3%83%87%E3%83%90%E3%83%83] % E3% 82% B0% E3% 81% AE% E6% B4% BB% E7% 94% A8) Vous pouvez également utiliser la fonction de débogage VS Code dans la programmation de packages.
Par exemple, appuyez sur la touche «F9» sur la ligne 7 du code «preprocessing.py» dans le package comme indiqué ci-dessus. Vous verrez un point rouge à l'extrémité gauche de cette ligne. C'est ce qu'on appelle un ** point d'arrêt **. Ensuite, dans cet état, retournez à script.py
et appuyez sur la touche F5 pour exécuter.
Comme indiqué ci-dessus, l'exécution est interrompue à la ligne 7 du package, et les variables déclarées à ce moment-là (ici, les variables de preprocessing.py
) sont affichées dans la barre latérale gauche. En utilisant les points d'arrêt de cette manière, je pense que les bogues dans le programme (= ** debug **) seront améliorés.
Essayez d'installer ce package personnalisé dans un autre environnement. Et je vais essayer de voir si cela fonctionne dans cet autre environnement.
Ouvrez Anaconda Prompt et créez un nouvel environnement.
conda create -n Nom d'environnement préféré python=Version Python
Cette fois, j'ai créé un environnement appelé setup_test
comme exemple.
Puis démarrez cet environnement.
conda activate setup_test
Puis déplacez-vous vers le dossier où se trouve le setup.py
édité ci-dessus.
cd setup.Annuaire avec py
Ensuite, installez ce package homebrew.
python setup.py install
Après l'installation, essayez d'exécuter le script.py
ci-dessus dans cet état. Copiez script.py
et train.csv
dans un autre dossier de votre choix et essayez de les exécuter ici.
python script.py
Il peut être exécuté comme indiqué ci-dessus et les données d'entraînement prétraitées sont affichées. Ce dossier ne contient que des scripts et des données, pas un dossier de package personnalisé. En d'autres termes, si vous pouviez l'exécuter avec script.py
dans ce dossier, cela signifie que vous pourriez installer ce package personnalisé dans cet environnement.
Lors de la création de votre propre package, vous souhaiterez peut-être inclure des fichiers de données autres que le code source.
Par exemple, supposons que vous créez et distribuez un package pour l'analyse des données. Et lorsque d'autres membres veulent utiliser le package, je pense qu'il est nécessaire de connaître le comportement de l'analyse, même si les données ne peuvent pas être préparées immédiatement. Dans un tel cas, si vous préparez les données de démonstration dans le package, vous pouvez l'expliquer facilement à cette personne.
À titre d'exemple, nous expliquerons le cas où les données d'entraînement du Titanic sont préparées dans le package. Ajoutez quelques dossiers et fichiers au répertoire.
.
├── mymodule
│ ├── __init__.py
│ ├── preprocessing.py
│ ├── load_date.py *
│ └── resources *
│ └── train.csv *
├── setup.py
└── script.py
*:Fichiers et dossiers nouvellement ajoutés
Tout d'abord, créez un dossier pour les données de votre propre package. Ici, ce sont des «ressources». Et mettez-y les données d'entraînement (train.csv
).
Écrivez le code suivant pour charger les données de démonstration et l'ajouter au package.
load_date.py
import pkgutil,io
import pandas as pd
class DataLoader:
def load_demo(self):
train_b=pkgutil.get_data('mypackage','resources/train.csv')
train_f=io.BytesIO(train_b)
train=pd.read_csv(train_f)
return train
Ici, nous utiliserons un module appelé pkgutil
, qui est inclus en standard dans Python. La fonction pkgutil.get_data ()
peut obtenir son contenu en binaire en spécifiant le nom du package et le nom du fichier.
De plus, ʻio est utilisé pour gérer les données binaires lues comme un fichier (
objet de type fichier`).
Testez si les données de démonstration peuvent être lues. Réécrivez main ()
de script.py
comme suit et exécutez-le avec F5
sur VSCode.
script.py
def main():
from mypackage import load_data
data_loader=load_data.DataLoader()
train=data_loader.load_demo()
print(train.head())
Les données de démonstration peuvent être lues comme indiqué ci-dessus.
Cependant, avec cela seul, même si ce package est installé, les données ne seront pas installées en même temps. Ajoutez une ligne à setup.py
pour que lorsque vous installez le package, les données soient installées en même temps.
setup.py
from setuptools import setup, find_packages
setup(
name='mypackage',
install_requires=['pandas','scikit-learn'],
packages=find_packages(),
package_data={'mypackage': ['resources/*']}
)
En spécifiant le nom du package et le nom du dossier dans package_data
, vous pouvez spécifier les données à installer en même temps que l'installation du package.
Pour plus de détails, reportez-vous au Document officiel (2.6. Install Package Data).
Ensuite, comme expliqué ci-dessus, si vous créez un nouvel environnement et installez votre propre paquet à l'aide de setup.py
, vous pouvez confirmer que les données de démonstration peuvent être utilisées dans l'environnement installé. ..
Ce n'est pas suffisant pour rendre votre programme facile à expliquer aux autres membres et à utiliser. À l'origine, vous pouviez écrire un test avec ʻunit test ou
pytest, ou
Il y a d'autres choses à faire, comme expliquer les E / S du programme dans docstring`.
Cependant, je pense que l'emballage est la première étape pour y parvenir.
Si vous êtes arrivé jusqu'ici, veuillez rendre votre programme facile à comprendre en écrivant des tests, en écrivant «docstring» et en convertissant «docstring» aux spécifications du programme ci-dessous.
Cet article a été très utile pour l'empaquetage du code Python. Il décrit également comment écrire un test en utilisant ʻunit test`, donc veuillez vous y référer. Comment créer un package Python (écrit pour un stagiaire)
Cependant, quand il s'agit de tester, «pytest» est plus facile à utiliser. Si vous êtes habitué au «test d'unité», veuillez essayer d'utiliser «pytest». pytest (document officiel)
Il s'agit également de documentation décrivant votre programme. Vous pouvez documenter docstring
comme spécification.
Comment utiliser Sphinx. Lire docstring et générer les spécifications
Vous pouvez également utiliser des diagrammes et des formules pour expliquer comment utiliser le programme et la théorie.
Dans un tel cas, il est recommandé d'utiliser un module appelé mkdocs
qui peut créer des documents au format markdown.
Création de documents avec MkDocs
Si vous créez un document avec ce sphinx
et mkdocs
et l'hébergez sur AWS S3 etc., comment utilisez-vous ce programme des membres? Si on vous le demande, c'est très pratique car vous pouvez envoyer l'URL lorsque vous êtes occupé.
Je me suis référé ici pour l'analyse des données du Titanic. [Introduction aux débutants de Kaggle] Qui survivra au Titanic?
Recommended Posts