python+stata

本文探讨了Stata在数据处理与分析方面的优势及其轻量级特性,适合在配置一般的PC上运行。同时,介绍了如何通过Python的ipystata包在Jupyter环境中集成Stata,提供了一种在Python中使用Stata的新方法,进一步增强了数据分析的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值