Führen Sie eine Stata-Datei aus Python aus

8

Ich habe ein Python -Skript, das aufräumt und grundlegende statistische Berechnungen in einem großen Panel-Dataset durchführt ( 2,000,000+ observations ).

Ich finde, dass einige dieser Aufgaben besser für Stata geeignet sind, und schrieb eine do-Datei mit den notwendigen Befehlen. Daher möchte ich eine .do-Datei in meinem Python-Code ausführen. Wie würde ich eine .do Datei von Python aufrufen?

    
svenkatesh 21.01.2014, 16:24
quelle

3 Antworten

10

Ich denke @ user229552 zeigt in die richtige Richtung. Pythons subprocess Modul kann verwendet werden. Unten ein Beispiel, das für mich mit Linux OS funktioniert.

Angenommen, Sie haben eine Python-Datei namens pydo.py mit folgendem Inhalt:

%Vor%

und eine Stata-Datei namens pyexample3.do mit folgendem Inhalt:

%Vor%

Die Ausführung von pydo.py in einem Terminalfenster funktioniert wie erwartet.

Sie könnten auch eine Python-Funktion definieren und diese verwenden:

%Vor%

Der vollständige Anruf von einem Terminal mit Ergebnissen:

%Vor%

Quellen:

Ссылка

Ссылка

Ссылка

Eine andere Route für die gemeinsame Verwendung von Python und Stata finden Sie unter

Ссылка

Ссылка

    
Roberto Ferrer 22.01.2014, 08:26
quelle
1

Wenn Sie dies in einer Befehlszeileneinstellung ausführen, sollten Sie in der Lage sein, Stata über die Befehlszeile von python aus aufzurufen (ich weiß nicht, wie ich einen Shell-Befehl von Python aus aufrufen kann, aber nicht sei zu schwer, siehe hier: Aufruf eines externen Befehls in Python ). Weitere Informationen zum Ausführen von Stata über die Befehlszeile (auch als Stapelmodus bezeichnet) finden Sie hier: Ссылка

    
maxliving 21.01.2014 16:46
quelle
0

Diese Antwort erweitert @Roberto Ferrers Antwort und löst ein paar Probleme, auf die ich gestoßen bin.

Stata im Systempfad

Damit stata Code ausführen kann, muss er im Systempfad (zumindest unter Windows) korrekt eingerichtet sein. Zumindest für mich wurde dies nicht automatisch bei der Installation von Stata eingerichtet, und ich fand die einfachste Korrektur darin, den vollständigen Pfad einzutragen (was für mich "C:\Program Files (x86)\Stata12\Stata-64 war), d.h.:

%Vor%

So führen Sie den Code ruhig im Hintergrund aus

Es ist möglich, den Code ruhig im Hintergrund laufen zu lassen (d. h. nicht jedes Mal Stata zu öffnen), indem Sie den Befehl /e if.

hinzufügen

cmd = ["C:\Program Files (x86)\Stata12\Stata-64,"/e","do", dofile]

Speicherort der Protokolldatei

Wenn Sie ruhig im Hintergrund arbeiten, speichert Stata die Protokolldateien. Dies geschieht im Arbeitsverzeichnis von cmd . Das hängt davon ab, wo der Code ausgeführt wird, aber für mich, seit ich Python aus Notepad ++ ausgeführt habe, wollte ich die Protokolldateien in C:\Program Files (x86)\Notepad++ speichern, auf die Stata keinen Schreibzugriff hatte. Dies kann durch Angabe des Arbeitsverzeichnisses beim Aufruf des Unterprozesses geändert werden.

Diese Änderungen am Code von Roberto Ferrer führen zu:

%Vor%     
kyrenia 27.02.2017 17:33
quelle

Tags und Links