查看原文
其他

Stata17新功能之Python API

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

本文作者:方   言,中南财经政法大学金融学院

本文编辑:尚晨曦

技术总编:戴   雯

Stata&Python云端课程来啦!

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


导读

Stata为Python和Stata提供了两种交互方式,我们参考这些机制统称为PyStata。新版的Stata17的pystata中除了包含三个IPython(交互式Python)的魔法命令外,还有一套从Python内部与Stata交互的API函数。在模块中,类(class)被定义为提供对Stata当前数据集的访问、值标签、特征、全局宏、矩阵等。有关更多详细信息,请参阅Stata的PythonAPI文档(https://www.stata.com/python/api17/index.html )。这里介绍几个比较常用的类。首先,在Python中通过魔法命令%%stata调用Stata,并获取Stata的自带auto数据集。

#初始化import stata_setupstata_setup.config(r"D:\Stata17\Stata17",'mp')
#导入库from sfi import Datafrom sfi import Datetimefrom sfi import Framefrom sfi import Macro from sfi import ValueLabel
%%statasysuse auto,clearlist
获取Stata的自带auto数据集如下:

1Data (sfi.Data)

sfi.Data提供对当前Stata数据集的访问。

参数内容
addObs(n[, nofill])将n个观测值添加到当前的Stata数据集中
addVarStr(name, length)将类型为str的变量添加到当前的Stata数据集中
get([var, obs, selectvar, valuelabel, …])从当前的Stata数据集中读取值
getVarType(var)获取Stata变量的存储类型
keepVar(var)保留指定的变量
dropVar(var)从当前的Stata数据集中删除指定的变量
list([var, obs])列出当前Stata数据集中的值
renameVar(var, name)重命名Stata变量

通过get()可以查看某个变量下的观测值:

Data.get(var='price')

Stata中原有的rename命令在这里也能实现:

Data.renameVar('mpg', 'MileagePerGallon')
%%statalist
可以看到mpg重命名成功。

同样的删除变量名和保留变量名都可以实现:

Data.dropVar("make")
%%statalist

Data.keepVar("MileagePerGallon")
%%stata list

这里我们通过删除和保留变量的操作之后查看数据集的内容,发现只剩下mpg这个变量:


2Datetime (sfi.Datetime)

sfi.Datetime提供了一组用于与Stata日期时间进行交互的核心工具。

参数内容
format(value, format)根据指定的Stata内部格式(SIF)值和Stata datetime格式,获取格式化的Python日期时间或日期字符串
getDatetime(value, format)根据指定的Stata内部格式(SIF)值和Stata datetime格式获取Python日期时间或日期
getSIF(dt, format)使用Stata日期时间格式获取Stata内部表单(SIF)值

这里调用的是Stata自带的sp500数据集,原有的数据集的date格式02jan2001不符合中国的日期习惯,因此我们对其进行格式转换:

%%statasysuse sp500, clearformat date %tdCCYY/DD/NNlist date



3Frame (sfi.Frame)

sfi.Frame提供对Stata框架的访问。

参数内容
connect(name)连接到Stata中的现有框架
create(name)在Stata中创建一个新框架
changeToCWF()在Stata中将Frame设置为当前工作框架
clone(newName)通过克隆当前Frame及其内容来创建一个新框架
drop()将框架放在Stata中

连接Stata中的现有框架以及创建新框架:

ConnectFrame = Frame.connect('default')NewFrame = Frame.create('mydata')

可以通过索引查看框架所在的位置:

Frame.getFrameAt(0)

通过克隆可以实现对框架的复制:

ConnectFrame.clone('myauto')


4Macro (sfi.Macro)

sfi.Macro提供对Stata宏的访问。

参数内容
getGlobal(Name)获取全局宏的内容
getLocal(Name)获取局部宏的内容
setGlobal(name, value[, vtype])设置全局宏的值
setLocal(name, value)设置局部宏的值

OLS回归的返回值中包含Macro:

%%statasysuse auto,clearregress mpg weight foreignereturn list

从返回值中获取全局宏:

Macro.getGlobal('e(model)')

设置局部宏:

Macro.setLocal('local', 'Stata and Python')Macro.getLocal('local')

5ValueLabel (sfi.ValueLabel)

sfi.ValueLabel提供对Stata值标签的访问。

参数内容
createLabel(Name)创建一个新的值标签名称
getLabel(name, value)获取指定值标签的标签
getLabels(name)获取指定值标签名称的标签
getNames()获取当前数据集中所有值标签的名称
getValueLabels(name)获取指定值标签名称的值和标签
getValues(name)获取与单个值标签名称关联的值
getVarValueLabel(var)获取与变量关联的值标签名称
removeLabel(name)删除值标签名称
removeLabelValue(name, value)删除值标签值
removeVarValueLabel(var)从变量中删除值标签名称
setLabelValue(name, value, label)为值标签名称设置值和标签
setVarValueLabel(var, labelName)设置变量的值标签

值标签的设置一般是存在虚拟变量时用到的更多,如这里0代表女,1代表男。

ValueLabel.setLabelValue('repair', 0, '女')ValueLabel.setLabelValue('repair', 1, '男')ValueLabel.getValueLabels('repair')

以上就是本次Stata17新功能之Python API的全部内容啦,快动手试试吧,我们下期再见!

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


欢迎大家点赞、评论、转发呦~



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

往期推文推荐

小罗肥归升级啦|解锁Stata17之新命令xtmlogit

 
速度大比拼之Stata17有多快?

初识PyStata

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

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

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

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

  Countvalues——数数的超级小帮手

         frame框架进阶篇

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

  Python中的运算符知多少?

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

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

如何使用Pandas读取txt文件?

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

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

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

Python与数据库交互—浅述pymysql

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

大家用Stata来“找茬”

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

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

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

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

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

关于我们 


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



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

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

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

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