温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
作者: 李峥(厦门大学)
邮箱: zhengli_u@outlook.com
致谢: 本文摘自以下文章,特此感谢!
Source: Chuck Huber, Stata/Python integration part 2: Three ways to use Python in Stata -Link-
Stata/Python 交互系列推文 源自 Stata 公司的统计项目总监 Chuck Huber 博士发表于 Stata 官网的系列博文,一共 9 篇。较为系统地介绍了 Stata 与 Python 的交互方式,包括:如何配置你的软件、如何实现 Stata 与 Python 数据集互通、如何调用 Python 工具包、如何进行机器学习分析等。
中文编译稿列表如下:
目录 [toc]
上一期文章介绍了如何下载安装 Python 并设置 Stata 来使用 Python。本期,我们要介绍在 Stata 中使用 Python 的三种方法:
通过在 Stata 的命令窗口中输入 python
,实现 Stata 交互使用 Python。
. python
------------------------------ python (type end to exit) ------
Stata 提醒你完成后可以输入 end
退出 Python。现在,我们可以在命令窗口中键入 Python 代码。例如,可以指示 Python 打印短语。
>>> print("Hello Stata, I am Python")
Hello Stata, I am Python
当然,也可以使用 Python 作为交互式的计算器。
>>> 2*3
6
>>> 3*4
12
然后,输入 end
退出 Python 并返回到 Stata。
>>> end
---------------------------------------------------------------
当然,也可以简单地输入 python :
后跟 Python 语句。Python 将运行该语句,然后返回到 Stata。
. python: print("Hello Stata, I am Python")
Hello Stata, I am Python
还可以使用此语法进行快速计算.
. python: 2*3
6
在 do 和 ado 中可以使用 python:
后跟一个简单的命令,就可以实现交互方式中的效果,例如:
python: print("Hello Stata, I am Python")
Hello Stata, I am Python
还可以使用 Python 代码块在 do 和 ado 文档中运行多个 Python 语句。Python 代码块以 python
开头,以 end
结束,正如我们在上面的交互式示例中看到的。
在下例中,首先以 Stata 的 display
命令开头,然后使用 python
开始 Python 代码块,执行两个 Python 的 print()
语句,以 end
结束 Python 代码块,最后以 Stata 的 display
命令结束。
display "Hello Python, I am Stata."
python
print("Hello Stata.")
print("I am Python.")
end
display "Nice to meet you Python!"
. display "Hello Python, I am Stata."
Hello Python, I am Stata.
. python
------------------------------ python (type end to exit) ------
>>> print("Hello Stata.")
Hello Stata.
>>> print("I am Python.")
I am Python.
>>> end
---------------------------------------------------------------
. display "Nice to meet you Python!"
Nice to meet you Python!
需要注意的是,虽然 python
或 python:
都可以运行代码块,但如果 Python 在代码块中遇到错误,二者处理方式有所不同。
如果使用 python
开始代码块,Python 遇到错误,将继续执行代码块中的其余代码。如果使用 python:
开始代码块,Python 遇到错误时,Python 将返回到 Stata,不会执行剩余的 Python 代码。无论哪种情况,都将打印堆栈跟踪并显示错误代码。
其次,Python 代码块中的缩进并不是为了美观而是功能性的。例如,可以编写 Python 代码块并缩进该块中的代码,如下例所示。
display "Hello Python, I am Stata."
python:
print("Hello Stata.")
print("I am Python.")
end
display "Nice to meet you Python!"
. display "Hello Python, I am Stata."
Hello Python, I am Stata.
. python:
------------------------------ python (type end to exit) ------
>>> print("Hello Stata.")
File "", line 1
print("Hello Stata.")
^
IndentationError: unexpected indent
(1 line skipped)
---------------------------------------------------------------
r(7102);
可以发现,上述语句报错,这告诉我们在 Stata 中调用 Python 语句不能随意缩进。关于 Python 中缩进的含义,详见「Python 文档」。
最后一种方式则是在 Stata 中运行 Python 脚本。Python 脚本是保存在具有 .py
扩展名的文件中的 Python 语句的集合。示例 3 显示了名为 hello.py
的 Python 脚本的内容。
*hello.py 地址:https://gitee.com/arlionn/data/blob/master/data01/hello.py
python script 地址\hello.py
Hello Stata.
I am Python.
当你使用他人编写的 Python 脚本时,这种在 Stata 中运行 Python 的方法非常有用。
以上就是在 Stata 中使用 Python 的三种方法。下期,将为大家介绍如何用 Stata 安装 Python 包。
Note:产生如下推文列表的命令为:
lianxh Stata Python +
安装最新版lianxh
命令:
ssc install lianxh, replace
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟 Stata 33 讲 - 连玉君, 每讲 15 分钟. 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看,所有课程可以随时购买观看。
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 ⭐ | DSGE, 因果推断, 空间计量等 | |
⭕ Stata数据清洗 | 游万海 | 直播, 2 小时,已上线 |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh