我是靠谱客的博主 朴实跳跳糖,最近开发中收集的这篇文章主要介绍python+stata,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

stata在数据处理与分析方面具有一定的优势,而且软件又小,在配置一般的PC机里运行也较为流畅。

#1.另外保存do文件,在python中运行外部do文件
import subprocess
import  codecs
import os
stata_path="C:\Program Files (x86)\Stata14\StataMP-64.exe"
dofile_path="C:\Users\jack\PycharmProjects\201803\dofile.do"
# # stata程序名称为"StataMP-64.exe"
cmd = [stata_path, "doedit", dofile_path]
subprocess.call(cmd)

# 2.有时会遇到改变do文档内容的情形,因此需要在python中写一个do文档
varstr='price length weight'
code='''clear all
sysuse auto
sum
reg '''
statacode=code+varstr
with codecs.open('dofile_2.do','w',encoding='utf-8') as f:
    f.write(statacode)
f.close()
cmd = [stata_path, "do", dofile_path]
subprocess.call(cmd)

# 关闭stata
os.system('TASKKILL /F /IM StataMP-64.exe')
#3. 在python和stata中传递数据(最容易想到的一个思路是将要传递的内容保存下来,然后python或stata再读取数据)
# 以stata向python传递数据为例
# 首先生成一个stata数据
sysuse auto,clear
keep price
export delimited price using "statatest.txt", delimiter(tab) novarnames replace
# python读取数据
import codecs
with codecs.open('statatest.txt','r',encoding='utf-8') as f:
    data=f.readlines()
f.close()
print(data)

import re
# 读取的数据包含空格和换行,通过正则表达式提取数据
datamatch=re.compile('[d]*')
data2=list()
import re
for s in data:

    s=re.match(datamatch,s).group()
    data2.append(s)
print(data2)


PS:

github上有一个ipystata的包可以通过Jupyter在python中使用stata(https://github.com/TiesdeKok/ipystata),或者可以参考这篇文章(https://zhuanlan.zhihu.com/p/22645950)

最后

以上就是朴实跳跳糖为你收集整理的python+stata的全部内容,希望文章能够帮你解决python+stata所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部