Stata与Python的交互使用
官方参考文档
https://www.stata.com/python/api17/index.html
不论是从Stata里调用python,还是从python里调用stata,都无法实现stata和python的数据互通。为了实现stata和Python的数据互通,stata官方提供了名为sfi(Stata Function Interface)的包,可以在python中获得stata的数据。
简单看了下,首先要学习的,应该是sfi.Dta这个类。
Data.get()
该方法可以获取stata中某个变量的值,要注意的是,python在读取stata中的缺失值时,会被自动识别为一个非常大的数值,如果变量中含有缺失值,需要手动指定missingval=np.nan
。Data.addVarInt()
该方法可以在stata中创建一个Int类型的变量。Data.store("salary_min", None, pd_job["salary_min"], None)
该方法可以将python中的变量保存在stata中,第一个参数为stata中要保存为的变量名,第二个参数可以指定要保存观测值的范围,第三个参数为python中需要保存的变量名。- 具体的示例可以参考以下两篇官方博客:
https://blog.stata.com/2020/11/05/stata-python-integration-part-8-using-the-stata-function-interface-to-copy-data-from-stata-to-python/
https://blog.stata.com/2020/11/19/stata-python-integration-part-9-using-the-stata-function-interface-to-copy-data-from-python-to-stata/
在Stata中调用Python
python
program
end
- 在do文件中执行上述python代码块时,要注意stata必须处于stata状态,如果在命令窗口中手动启动了python交互环境,没有输入end结束就执行上述代码块,会一直卡在运行状态。需要首先输入end退出python环境,然后在执行上述代码块。
- 在输入end退出python环境后,python中的变量并不会随着end被清除,再次输入python进入环境后,依然可以获取python中的变量,也就是说end仅仅是切换到stata环境,而不是关闭python。如果想清除python中的变量,需要输入
python clear