Wenn Sie programmieren, möchten Sie das Programm möglicherweise wiederverwenden, oder Sie möchten, dass andere Mitglieder das Programm verwenden.
In einem solchen Fall ist es für andere einfacher, den Code für jede Funktion zu modularisieren und zu verpacken und die Dokumentation ordnungsgemäß zu verwalten.
VS Code ist auch ein leistungsstarkes Tool zum Erstellen von Python-Paketen. Daher werde ich erklären, wie ein Python-Paket mit VS-Code erstellt wird.
Es enthält auch nützliche Informationen beim Packen Ihres Datenanalyseprogramms.
Bemerkungen | ||
---|---|---|
OS | Windows10 | |
conda | 4.8.3 | Mit Anaconda Promptconda -V |
Anaconda | 2020.02 | Mit Anaconda Promptconda list anaconda |
Python | 3.8.2 | |
VSCode | 1.43.2 |
In diesem Artikel erfahren Sie, wie Sie die Python-Ausführungsumgebung für VS-Code vorbereiten. Erstellen einer Python- und Jupyter-Ausführungsumgebung mit VSCode
Wenn Sie eine Ausführungsumgebung mit VSCode haben, erstellen Sie dort Ordner und Dateien für die Entwicklung von Python-Paketen.
.
├── Lieblingspaketname
│ ├── __init__.py
│ └ Lieblingsdateiname.py
├── setup.py
└── script.py
Das Paket selbst befindet sich im Ordner "Lieblingspaketname".
Als Beispiel habe ich es wie oben gezeigt auf VSCode gemacht. Nennen wir als Beispiel das Paket "mypackage".
setup.py
ist eine Datei, die die Abhängigkeitsinformationen, Versionsinformationen und den Paketnamen des zu erstellenden Pakets festlegt.
setup.py
from setuptools import setup, find_packages
setup(
name='mypackage',
install_requires=['pandas','scikit-learn'],
packages=find_packages()
)
Schreiben Sie die Einstellungen in das Argument der Funktion setup
.
Schreiben Sie beispielsweise in install_requires
die für das Paket erforderlichen Module.
Es gibt verschiedene andere Elemente. Überprüfen Sie daher Offizielle Dokumentation (Setup-Skript schreiben).
Lassen Sie uns das Programm sofort schreiben. Als Beispiel werde ich dieses Mal ein Paket erstellen, um die Daten von Kaggles Titanic zu analysieren.
Angenommen, Sie schreiben das folgende Programm in die Datei "preprocessing.py" im Paket. Dies ist ein Programm, das Daten vorverarbeitet.
preprocessing.py
class Preprocesser:
"""
Klasse zum Vorverarbeiten
"""
def process(self,data):
"""
Methode zur Vorverarbeitung
"""
processed_data=data.copy()
#Alter fehlt Wert zum Median
age_m=processed_data['Age'].median()
processed_data['Age']=processed_data['Age'].fillna(age_m)
#-----Kürzung-----
#Vorverarbeitung schreiben
return processed_data
Lassen Sie uns das Programm ausführen. Erstellen Sie ein .py-Skript für die Programmausführung mit dem Namen "script.py" direkt unter dem Paketordner "mypackage". Schreiben Sie beispielsweise ein Programm, das Trainingsdaten vorverarbeitet und anzeigt.
script.py
def main():
from mypackage import preprocessing
import pandas as pd
train=pd.read_csv('train.csv')
#Initialisieren Sie die Vorverarbeitungsinstanz und führen Sie die Vorverarbeitung durch
preprocesser=preprocessing.Preprocesser()
train_processed=preprocesser.process(train)
print(train_processed.head())
if __name__=='__main__':
main()
In Bezug auf das Importieren Ihres eigenen Pakets, wenn es sich direkt unter dem Ordner Ihres eigenen Pakets befindet,
from mypackage import preprocessing
mögen
aus selbst erstellter Paketname importieren Dateiname des einzelnen Python-Codes
Sie können das Paket mit importieren.
Drücken Sie bei geöffnetem script.py
die Taste F5
auf VSCode, um das Programm wie oben gezeigt auszuführen, und das Ausführungsergebnis wird auf Terminal
angezeigt.
[Erstellen einer Python- und Jupyter-Ausführungsumgebung mit VS-Code # Verwendung des Debuggens](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) Sie können die VS-Code-Debug-Funktion auch in der Paketprogrammierung verwenden.
Drücken Sie beispielsweise die Taste "F9" in der 7. Zeile des Codes "preprocessing.py" im Paket, wie oben gezeigt. Am linken Ende dieser Zeile sehen Sie einen roten Punkt. Dies wird als ** Haltepunkt ** bezeichnet. Kehren Sie dann in diesem Zustand zu script.py
zurück und drücken Sie die Taste F5, um es auszuführen.
Wie in der obigen Abbildung gezeigt, wird die Ausführung in Zeile 7 des Pakets angehalten, und die zu diesem Zeitpunkt deklarierten Variablen (hier die Variablen in preprocessing.py
) werden in der linken Seitenleiste angezeigt. Durch die Verwendung von Haltepunkten auf diese Weise denke ich, dass die Fehlerbehebung (= ** Debugging **) des Programms fortschreiten wird.
Versuchen Sie, dieses selbst erstellte Paket in einer anderen Umgebung zu installieren. Und ich werde versuchen zu sehen, ob es in dieser anderen Umgebung funktioniert.
Öffnen Sie die Anaconda-Eingabeaufforderung und erstellen Sie eine neue Umgebung.
conda create -n Name der bevorzugten Umgebung Python=Python-Version
Dieses Mal habe ich als Beispiel eine Umgebung namens "setup_test" erstellt.
Starten Sie dann diese Umgebung.
conda activate setup_test
Wechseln Sie dann in den Ordner, in dem sich die oben bearbeitete Datei "setup.py" befindet.
cd setup.Verzeichnis mit py
Dann installieren Sie dieses Homebrew-Paket.
python setup.py install
Versuchen Sie nach der Installation, die obige script.py
in diesem Zustand auszuführen. Kopieren Sie script.py
und train.csv
in einen anderen Ordner Ihrer Wahl und versuchen Sie, sie dort auszuführen.
python script.py
Es kann wie in der obigen Abbildung gezeigt ausgeführt werden und die vorverarbeiteten Trainingsdaten werden angezeigt. Dieser Ordner enthält nur Skripte und Daten, keinen selbst erstellten Paketordner. Mit anderen Worten, wenn Sie es mit "script.py" in diesem Ordner ausführen könnten, bedeutet dies, dass Sie dieses selbst erstellte Paket in dieser Umgebung installieren könnten.
Wenn Sie Ihr eigenes Paket erstellen, möchten Sie möglicherweise andere Datendateien als den Quellcode einschließen.
Angenommen, Sie erstellen und verteilen ein Paket für die Datenanalyse. Und wenn andere Mitglieder das Paket verwenden möchten, muss meines Erachtens das Verhalten der Analyse bekannt sein, obwohl die Daten nicht sofort aufbereitet werden können. Wenn Sie in einem solchen Fall die Demodaten im Paket vorbereiten, können Sie sie dieser Person reibungslos erklären.
Als Beispiel erklären wir den Fall, in dem die Trainingsdaten für die Titanic im Paket vorbereitet sind. Fügen Sie dem Verzeichnis einige Ordner und Dateien hinzu.
.
├── mymodule
│ ├── __init__.py
│ ├── preprocessing.py
│ ├── load_date.py *
│ └── resources *
│ └── train.csv *
├── setup.py
└── script.py
*:Neu hinzugefügte Dateien und Ordner
Erstellen Sie zunächst einen Ordner für Daten in Ihrem eigenen Paket. Hier sind es "Ressourcen". Und geben Sie die Trainingsdaten (train.csv
) ein.
Schreiben Sie den folgenden Code, um die Demo-Daten zu laden und zum Paket hinzuzufügen.
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
Hier verwenden wir ein Modul namens "pkgutil", das standardmäßig in Python enthalten ist. Die Funktion pkgutil.get_data ()
kann ihren Inhalt binär erhalten, indem sie den Paketnamen und den Dateinamen angibt.
Außerdem wird "io" verwendet, um die gelesenen Binärdaten wie eine Datei ("dateiähnliches Objekt") zu behandeln.
Testen Sie, ob die Demo-Daten gelesen werden können. Schreiben Sie main ()
von script.py
wie folgt um und führen Sie es mit F5
auf VSCode aus.
script.py
def main():
from mypackage import load_data
data_loader=load_data.DataLoader()
train=data_loader.load_demo()
print(train.head())
Die Demo-Daten können wie oben gezeigt gelesen werden.
Selbst wenn dieses Paket installiert ist, werden die Daten jedoch nicht gleichzeitig installiert. Fügen Sie eine Zeile zu "setup.py" hinzu, damit bei der Installation des Pakets die Daten gleichzeitig installiert werden.
setup.py
from setuptools import setup, find_packages
setup(
name='mypackage',
install_requires=['pandas','scikit-learn'],
packages=find_packages(),
package_data={'mypackage': ['resources/*']}
)
Durch Angabe des Paketnamens und des Ordnernamens in "package_data" können Sie die zu installierenden Daten gleichzeitig mit der Paketinstallation angeben.
Weitere Informationen finden Sie unter Offizielles Dokument (2.6. Paketdaten installieren).
Wenn Sie dann, wie oben erläutert, eine neue Umgebung erstellen und Ihr eigenes Paket mit setup.py
installieren, können Sie bestätigen, dass die Demo-Daten in der installierten Umgebung verwendet werden können. ..
Dies reicht nicht aus, um Ihr Programm anderen Mitgliedern leicht zu erklären und zu verwenden. Ursprünglich könnten Sie einen Test mit "unittest" oder "pytest" oder "schreiben" Es gibt noch andere Dinge zu tun, z. B. das Erklären der Programm-E / A in docstring`.
Ich denke jedoch, dass die Verpackung der erste Schritt dazu ist.
Wenn Sie so weit gekommen sind, machen Sie Ihr Programm leicht verständlich, indem Sie Tests schreiben, "docstring" schreiben und "docstring" in die Spezifikationen des folgenden Programms konvertieren.
Dieser Artikel war sehr hilfreich beim Packen von Python-Code. Es wird auch beschrieben, wie Sie einen Test mit "unittest" schreiben. Wie erstelle ich ein Python-Paket (geschrieben für Praktikanten)
Beim Testen ist "pytest" jedoch einfacher zu verwenden. Wenn Sie es gewohnt sind, "unittest" zu verwenden, versuchen Sie es bitte mit "pytest". pytest (offizielles Dokument)
Es geht auch um Dokumentation, die Ihr Programm beschreibt. Sie können "docstring" als Spezifikation dokumentieren. Wie man Sphinx benutzt. Dokumentstring lesen und Spezifikationen generieren
Möglicherweise möchten Sie auch Diagramme und Formeln verwenden, um die Verwendung des Programms und der Theorie zu erläutern.
In einem solchen Fall wird empfohlen, ein Modul namens "mkdocs" zu verwenden, mit dem Dokumente im Markdown-Format erstellt werden können. Dokumenterstellung mit MkDocs
Wie verwenden Sie dieses Programm von Mitgliedern, wenn Sie ein Dokument mit dieser sphinx
und mkdocs
erstellen und es auf AWS S3 usw. hosten? Wenn Sie gefragt werden, ist dies sehr praktisch, da Sie die URL senden können, wenn Sie beschäftigt sind.
Ich habe hier auf die Datenanalyse der Titanic verwiesen. [Einführung in Kaggle-Anfänger] Wer wird die Titanic überleben?
Recommended Posts