查看原文
其他

初识PyStata

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:薛   原

本文编辑:刘子艳

技术总编:戴   雯

Stata&Python云端课程来啦!

好雨知时节,当春乃发生。为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》。关于Stata,爬虫俱乐部推出了系列课程,内容包括字符串函数、正则表达式、爬虫专题和文本分析,可以随心搭配,价格美丽,物超所值,更多信息可查看Stata系列推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》等。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦!

最新发布的Stata17,给我们带来了许多强大的新功能。在今天这篇推文当中,我们将为大家介绍此次更新的功能之一——PyStata。
PyStata是Stata与Python交互方式的统称,包括了在Stata中调用Python并可将Python的程序写入到Stata的do文件以及ado文件中的功能,以及在Python环境中调用Stata的功能。前者是Stata16中添加的功能,我们之前的推文中已经有过详细的介绍:

在这里我们主要介绍如何在Python环境中调用Stata~

在多年前,现为华盛顿大学会计系助理教授的Ties de Kok就已经推出了ipystata程序包,实现了在Jupyter中调用Stata。例如在Jupyter中我们通过ipystata调用Stata,读入auto数据,并用list命令展示make变量到weight变量的内容:

import ipystatafrom ipystata.config import config_stataconfig_stata("D:/Stata17/StataMP-64.exe")%%statasysuse auto, clearlist make - weight
而在此次更新中,Stata公司正式推出了在Python环境中调用Stata的官方交互方式,除了可以像使用ipystata那样在Jupyter中操作外,还可以在Spyder、Pycharm等IDE中实现这一功能。在Python环境中进行交互时,我们要先指定Stata安装路径,以初始化Stata并让Python能够导入存放在Stata17安装路径下的utilities文件夹中的pystata包。我们从Python Package Index (PyPI)下载stata_setup,直接在命令行中输入:
pip install stata_setup  

安装完毕后,我们就可以在Python环境中初始化Stata,以我电脑上的Stata17为例,安装路径是在D:/Stata17,安装的是MP版本,在Spyder中初始化Stata的程序如下:

import stata_setupstata_setup.config("D:/Stata17/", "mp")
我们还使用刚才在ipystata中演示的例子,读取auto数据,并列示make变量到weight变量的内容。调用pystata包中的stata模块可以在Python环境中直接执行Stata程序:
from pystata import statastata.run('''sysuse auto, clearlist make - weight''')

除了使用stata模块外,我们还可以在IPython和Jupyter中使用magic commands——即ipystata例子中%%stata的形式——直接运行Stata命令:

乍看之下这种方式和ipystata好像没什么区别,但仔细观察显示的结果后可以看到,ipystata是直接将每条命令执行的结果全部堆放在一起;而PyStata展示的结果则是和在Stata中运行时一致,在每一条命令后跟上执行后的结果,相比于ipystata,这种形式显然是更加清晰明了的。

在Python环境中调用Stata也可以进一步降低Stata和Python中各种包之间的壁垒。在2019年Stata16推出后,我们能够在Stata中调用Python,但也有人指出美中不足的一点是当我们要把用Python处理好的数据导回到Stata中时,只能够将数据放在列表中,通过sfi包的Data模块导入,无法直接将DataFrame形式的数据直接转换到Stata中。但现在我们在Python环境中能直接通过pystata包的stata模块把DataFrame转换成Stata的数据。

import stata_setupstata_setup.config("D:/Stata17/", "mp")import pandas as pdfrom pystata import statadata = { "姓名": ["张三", "李四", "王五", "赵六"], "分数": [94, 93, 90, 85] }df = pd.DataFrame(data)stata.pdataframe_to_data(df, True)stata.run('''list''')
在上面的程序中,我们将字典data转换成了DataFrame,并通过stata模块转换成了Stata数据,再运行Stata的命令list展示数据的内容。这个过程我们也可以在Jupyter里面用magic commands实现。
import stata_setupstata_setup.config("D:/Stata17/", "mp")import pandas as pddata = { "姓名": ["张三", "李四", "王五", "赵六"], "分数": [94, 93, 90, 85] }df = pd.DataFrame(data)
%%stata -d dflist

在今后的推文中,我们会继续介绍PyStata更多更强大的功能。在Python中我们随心所欲地插入Stata和Mata程序。你的程序,想怎么写就怎么写!

最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。











期待大家的点赞、关注、评论哟~ 

对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!

往期推文推荐

辞旧迎新——Stata17之Do-file编辑器优化

Stata17新亮点——解放表格输出生产力

【爬虫+可视化】链家网北京租房信息

 手把手教你如何获取股票数据和可视化

  Countvalues——数数的超级小帮手

         frame框架进阶篇

 下拉选择框如何变成“小猫咪” | selenium小技巧

  Python中的运算符知多少?

  快来get缺失值的正确打开方式

  frame框架——我到底在哪个“房间”

如何使用Pandas读取txt文件?

基于MySQL数据库实现增量式爬取

寻找春日气息|本月最受欢迎的景点都在这里!

问世间情为何物,大数据也想参悟——后考研时代,何以解忧?唯有数据!

Python与数据库交互—浅述pymysql

偷懒小妙招|selenium之玩转鼠标键盘操作--鼠标篇

大家用Stata来“找茬”

“粉墨登场”——多期双重差分法(DID)的Stata操作

Python与百度地图合璧,绘制棒呆的热力地图

【数据可视化】统计图绘制神器:Seaborn

检索Stata推文的“任意门”学会了这些,分分钟提升你的毕业体验

【爬虫实战】双一流大学的月关注度

【爬虫实战】“中国人不吃这一套”——人民日报微博评论分析

进化的标签管理助手——elabel命令

“学术明星”——双重差分法(DID)的Stata操作

关于我们 


微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存