查看原文
其他

Stata与Python交互方法及数据传递

爬虫俱乐部 Stata and Python数据分析 2023-01-01

本文作者:郭培军,河南大学经济学院

本文编辑:陈志林

技术总编:李婷婷


Stata&Python云端课程来啦!

     为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程Stata基础课程Stata进阶课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~


导读

我们在数据分析时,常常需要Stata与Python两种软件共同使用,有时还需要传递两个软件之间的数据,不懂得两个软件如何交互,操作起来就会遇到困难。本文就Stata与Python之间如何交互以及数据如何传递做一个简单的介绍。





一. 从Stata中调用Python

从Stata中调用Python很简单,我们只需要在安装Python之后在Stata中输入python即可成功调用,这里我们不再举例,下文会有更详细的例子,我们讨论几个常见的小问题。首先,在Stata中每次调用Python时,不仅需要以python开头,结尾也一定要加end,否则程序将报错;有时我们Python的路径设置有问题,也可能无法顺利通过输入python调用,这时我们可以试着用这几行命令设置一下:

python search //查找我们计算机中安装的Pythonpython query //Stata目前设置的Python信息set python_exec D:\Python310\python.exe //这里是Stata识别到的您安装python的路径

二. 从Python中调用Stata

从Python中调用Stata也并不复杂,我们首先需要安装模块,官方给出的安装代码如下:

pip install --upgrade --user stata_setup

接下来我们就可以在Python中调用Stata了,让我们运行一段简单的代码看看效果如何:

import stata_setupstata_setup.config(r'E:\Stata17', 'mp') # 这里指定Stata的路径和版本from pystata import stata # pystata模块为Stata官方自带,Stata16及以上版本无需再次安装
stata.run('''sysuse auto, clearlocal varlist price mpg rep78 headroomsum `varlist'''')

输出结果如下:



三. Stata和Python的数据传递

我们可以使用sfi(Stata Function Interface)模块中的Data类来完成数据传递的操作,接下来就让我们看看具体的方法。

Stata读取Python数据

这里我们通过Data类中的add函数和store函数来实现,其中,add函数用于向当前Stata数据集中添加观察值或变量,store函数用于将数据保存到当前Stata数据集中,代码如下:

clear allpythonimport tushare as tsfrom sfi import Data
pro = ts.pro_api('e3fc4f0fc2aee53b7039b7cb4201ff6237a0b85a42d0fac654781b47')df = pro.daily(ts_code='000002.SZ', start_date='20220101', end_date='20220126') # 获取万科的一些简单数据print(df.dtypes) # 查看Python获得的数据类型,从而在Stata中设置对应类型的变量
Data.addVarStrL('trade_date') # 在Stata中添加StrL类型的变量Data.addVarFloat('open') # 在Stata中添加float类型的变量Data.addVarFloat('close')Data.addObs(df.shape[0]) # 添加观测值,相当于Stata中的命令set obs
Data.store('trade_date', None, df['trade_date'])Data.store('open', None, df['open'])Data.store('close', None, df['close']) #参数一设置要存储的位置,参数二设置观测值个数,None选取全部参数,参数三选择要传递的数据endbr这里一定要注意Python中存储数据的数据类型,Stata中添加的变量的数据类型必须与原数据类型一致,否则程序会报错,让我们看看最后的结果。


Python读取Stata数据这里我们用Data类中的get函数进行操作,get函数功能十分强大,能够满足对数据传递中的大多数要求,我们可以看一看具体代码来了解怎么运营get函数。
clear allpythonfrom sfi import Datastata: sysuse auto, clearData.get(0, 0)Data.get(var='price')Data.get(obs=0)Data.get([0,2,3], [0,2,4,6])Data.get(var='foreign')Data.get(var='foreign', valuelabel=True) # 这里valuelabel为是否采用值标签,默认值为Falseend

我们注意get函数返回的是列表,我们观察一下结果。


以上就是本期推文的介绍了。我们会为大家介绍更多Stata和Python的相关内容,请大家持续关注哦~



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



腾讯课堂课程二维码






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














往期推文推荐

“青铜”爬“王者”

留下想要的变量,你会几种方法?

Python:朋友圈配图,我承包了

绘制全国祠堂密度地图

 如何使用Stata绘制一幅好看的柱状图?

【爬虫篇】基于selenium爬取美团评论

 双标的莱万——足球无关政治?!

 Stata处理重复值:duplicates

It's time to send a flower to your lover!        2021各省GDP新鲜出炉

 爬虫实战-采集全国各省疫情数据

 log——为你的操作保驾护航

 一行代码教你玩转emoji

 票房遇冷的春节档口碑冠军丨《狙击手》影评分析

 学习丰县,营造良好营商环境!

 大国丢娃图:从川渝到徐州!

 丰县“失火”,殃及徐州:股市超跌近30亿!

 Unicode转义字符——编码与解码

        徐州!徐州!

        B站弹幕爬虫——冬奥顶流冰墩墩&雪容融

        不会用Stata做描述性统计表?so easy!

        丰沛之地:备足姨妈巾

 过年啦,用Python绘制一幅属于你的春联吧!

       登上爬虫俱乐部“时光机” |上“机”出发 开启一段奇妙之旅

       【基础篇】查找并输出子字符串的定位

        Stata中的小清新命令——添加观测值

        PCA(主成分分析法)降维——Python实现

       超好用的事件研究法

        如何绘制任泽平《鼓励生育基金》的几幅图

        Python 第六天——字符串

        findname——想要什么找什么

        Python字符串之“分分合合”

        PDF转docx可批量操作?——wordconvert的小技巧

        考研之后,文科生需以“do”躬“do”!

       手绘五星兴家国——用Stata绘制五星红旗

        Seminar丨董事会的性别多样化和企业创新:来自国际的证据

关于我们 


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

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



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

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

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

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